From 7163edb361e48b580f084659e13c464b1afe1316 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Mon, 15 Dec 2025 16:11:16 -0300 Subject: [PATCH 01/27] feat: cache efficient CPU kernel --- .cargo/config.toml | 2 + Cargo.lock | 792 +++++++++++++--------- Cargo.toml | 8 + clippy.toml | 1 - crates/total-viewsheds/Cargo.toml | 3 + crates/total-viewsheds/src/compute.rs | 62 ++ crates/total-viewsheds/src/config.rs | 2 + crates/total-viewsheds/src/cpu.rs | 932 ++++++++++++++++++++++++++ crates/total-viewsheds/src/dem.rs | 1 - crates/total-viewsheds/src/main.rs | 7 +- rust-toolchain.toml | 3 + scripts/apt_init.sh | 7 + 12 files changed, 1491 insertions(+), 329 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 crates/total-viewsheds/src/cpu.rs create mode 100644 rust-toolchain.toml create mode 100644 scripts/apt_init.sh diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..b736a9f --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.x86_64-unknown-linux-gnu] +rustflags = ["-Ctarget-cpu=native"] \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 3c2ad8f..2859fd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -19,9 +19,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -73,22 +73,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -106,6 +106,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-slice" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" +dependencies = [ + "generic-array 0.12.4", + "generic-array 0.13.3", + "generic-array 0.14.9", + "stable_deref_trait", +] + [[package]] name = "ash" version = "0.38.0+1.3.281" @@ -115,6 +127,15 @@ dependencies = [ "libloading", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -123,9 +144,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -133,7 +154,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -159,9 +180,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bumpalo" @@ -171,18 +192,18 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -209,9 +230,9 @@ checksum = "6236364b88b9b6d0bc181ba374cf1ab55ba3ef97a1cb6f8cddad48a273767fb5" [[package]] name = "cc" -version = "1.2.36" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "shlex", @@ -219,9 +240,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -231,9 +252,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "clap" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -241,9 +262,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -253,9 +274,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", @@ -265,9 +286,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "codespan-reporting" @@ -338,6 +359,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -395,9 +422,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] @@ -414,7 +441,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" dependencies = [ - "itertools", + "itertools 0.11.0", "num-traits", ] @@ -444,12 +471,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -479,9 +506,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixedbitset" @@ -508,9 +535,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -534,6 +561,34 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "geo" version = "0.30.0" @@ -548,20 +603,24 @@ dependencies = [ "log", "num-traits", "robust", - "rstar", + "rstar 0.12.2", "spade", ] [[package]] name = "geo-types" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a4dcd69d35b2c87a7c83bce9af69fd65c9d68d3833a0ded568983928f3fc99" +checksum = "24f8647af4005fa11da47cd56252c6ef030be8fa97bdbf355e7dfb6348f0a82c" dependencies = [ "approx", "num-traits", "rayon", - "rstar", + "rstar 0.10.0", + "rstar 0.11.0", + "rstar 0.12.2", + "rstar 0.8.4", + "rstar 0.9.3", "serde", ] @@ -589,21 +648,21 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi", + "wasip2", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glam" @@ -644,7 +703,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "gpu-alloc-types", ] @@ -654,7 +713,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -663,7 +722,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -674,7 +733,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -685,13 +744,32 @@ checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", "num-traits", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", ] [[package]] @@ -722,20 +800,45 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "heapless" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422" +dependencies = [ + "as-slice", + "generic-array 0.14.9", + "hash32 0.1.1", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32 0.2.1", + "rustc_version", + "spin", + "stable_deref_trait", +] + [[package]] name = "heapless" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ - "hash32", + "hash32 0.3.1", "stable_deref_trait", ] @@ -797,9 +900,9 @@ checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" [[package]] name = "image" -version = "0.25.8" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", @@ -816,12 +919,12 @@ checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -835,9 +938,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -848,6 +951,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -856,9 +968,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -882,59 +994,58 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link", ] [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litrs" -version = "0.4.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lsm-tree" -version = "2.10.3" +version = "2.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab73c02eadb3dc12c0024e5b61d6284e6d59064e67e74fbad77856caa56f62c7" +checksum = "799399117a2bfb37660e08be33f470958babb98386b04185288d829df362ea15" dependencies = [ "byteorder", "crossbeam-skiplist", @@ -956,9 +1067,9 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" [[package]] name = "matchers" @@ -971,9 +1082,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "miniz_oxide" @@ -987,9 +1098,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.5" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" dependencies = [ "num-traits", "pxfm", @@ -997,18 +1108,18 @@ dependencies = [ [[package]] name = "naga" -version = "27.0.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b2e757b11b47345d44e7760e45458339bc490463d9548cd8651c53ae523153" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "hexf-parse", "indexmap", "libm", @@ -1024,11 +1135,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1043,9 +1154,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -1058,30 +1169,30 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "ordered-float" -version = "4.6.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" dependencies = [ "num-traits", ] [[package]] name = "owo-colors" -version = "4.2.2" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -1089,15 +1200,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1118,11 +1229,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "pdqselect" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" + [[package]] name = "petgraph" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", @@ -1141,7 +1258,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crc32fast", "fdeflate", "flate2", @@ -1171,9 +1288,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -1186,9 +1303,9 @@ checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "proj4rs" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f88879081958c109556f14db41e2ee45193090030d93bbbbf28819221e4f13" +checksum = "2a3c4a66ce46a8b4514d0dce1e7a39b3d2b3a6125f7968093020f96a8a5ad09b" dependencies = [ "console_log", "js-sys", @@ -1210,28 +1327,28 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55f4fedc84ed39cb7a489322318976425e42a147e2be79d8f878e2884f94e84" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" dependencies = [ "num-traits", ] [[package]] name = "quick_cache" -version = "0.6.16" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad6644cb07b7f3488b9f3d2fde3b4c0a7fa367cafefb39dff93a659f76eb786" +checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -1242,6 +1359,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "radsort" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -1270,18 +1393,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -1291,9 +1414,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -1302,9 +1425,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "renderdoc-sys" @@ -1318,14 +1441,64 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" +[[package]] +name = "rstar" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a45c0e8804d37e4d97e55c6f258bc9ad9c5ee7b07437009dd152d764949a27c" +dependencies = [ + "heapless 0.6.1", + "num-traits", + "pdqselect", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b40f1bfe5acdab44bc63e6699c28b74f75ec43afb59f3eda01e145aff86a25fa" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f39465655a1e3d8ae79c6d9e007f4953bfc5d55297602df9dc38f9ae9f1359a" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + +[[package]] +name = "rstar" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6" +dependencies = [ + "heapless 0.7.17", + "num-traits", + "serde", + "smallvec", +] + [[package]] name = "rstar" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" dependencies = [ - "heapless", + "heapless 0.8.0", "num-traits", + "serde", "smallvec", ] @@ -1347,17 +1520,26 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -1380,24 +1562,40 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "self_cell" -version = "1.2.0" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" + +[[package]] +name = "semver" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1406,14 +1604,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -1433,9 +1632,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "smallvec" @@ -1455,13 +1654,22 @@ dependencies = [ "smallvec", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -1495,9 +1703,9 @@ source = "git+https://github.com/Rust-GPU/rust-gpu?rev=b3eda4df9814b6176d3c0844e [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -1519,9 +1727,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.106" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -1530,15 +1738,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", "getrandom", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -1552,18 +1760,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -1591,9 +1799,12 @@ dependencies = [ "geojson", "googletest", "image", + "itertools 0.14.0", "kernel", "pollster", "proj4rs", + "radsort", + "rayon", "serde", "serde_json", "tempfile", @@ -1604,9 +1815,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -1615,9 +1826,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -1626,9 +1837,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -1657,9 +1868,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -1673,17 +1884,23 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "utf8parse" @@ -1721,19 +1938,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" [[package]] -name = "wasi" -version = "0.14.4+wasi-0.2.4" +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -1742,25 +1965,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1768,31 +1977,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -1805,11 +2014,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "log", "naga", "portable-atomic", @@ -1824,18 +2033,18 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "27.0.1" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d654c0b6c6335edfca18c11bdaed964def641b8e9997d3a495a2ff4077c922" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "indexmap", "log", "naga", @@ -1863,20 +2072,20 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "27.0.2" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2618a2d6b8a5964ecc1ac32a5db56cb3b1e518725fcd773fd9a782e023453f2b" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "cfg-if", "cfg_aliases", "gpu-alloc", "gpu-descriptor", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "libc", "libloading", "log", @@ -1900,7 +2109,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytemuck", "log", ] @@ -1911,7 +2120,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.0", + "windows-sys", ] [[package]] @@ -1921,7 +2130,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ "windows-core", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1934,7 +2143,7 @@ dependencies = [ "windows-interface", "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1961,15 +2170,9 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" @@ -1977,7 +2180,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -1987,34 +2190,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ "windows-result", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.3", -] - -[[package]] -name = "windows-sys" -version = "0.61.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" -dependencies = [ - "windows-link 0.2.0", + "windows-link", ] [[package]] @@ -2023,31 +2208,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" -dependencies = [ - "windows-link 0.1.3", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -2056,104 +2224,76 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "xxhash-rust" version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index c85e81a..b8b169d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,3 +76,11 @@ non_ascii_literal = "allow" std_instead_of_alloc = "allow" std_instead_of_core = "allow" float_arithmetic = "allow" + +# We're not worried about cryptographic code, integer +integer_division_remainder_used = "allow" + +# We're not concerned about modulo not computing negative numbers +modulo_arithmetic = "allow" + +multiple_unsafe_ops_per_block = "allow" \ No newline at end of file diff --git a/clippy.toml b/clippy.toml index a742505..7bada54 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,4 +1,3 @@ allow-unwrap-in-tests = true allow-expect-in-tests = true allow-panic-in-tests = true - diff --git a/crates/total-viewsheds/Cargo.toml b/crates/total-viewsheds/Cargo.toml index c8de402..9bdfe1c 100644 --- a/crates/total-viewsheds/Cargo.toml +++ b/crates/total-viewsheds/Cargo.toml @@ -12,9 +12,12 @@ fjall = "2.11.2" geo = "0.30.0" geojson = "0.24.2" image = { version = "0.25.6", default-features = false, features = ["png"] } +itertools = "0.14.0" kernel = { path = "../kernels/vulkan-and-cpu" } pollster = "0.4" proj4rs = { version = "0.1.8", features = ["aeqd"] } +radsort = "0.1.1" +rayon = "1.11.0" serde = "1.0.219" serde_json = "1.0.143" tracing = { version = "0.1.41" } diff --git a/crates/total-viewsheds/src/compute.rs b/crates/total-viewsheds/src/compute.rs index bd07889..1b10ade 100644 --- a/crates/total-viewsheds/src/compute.rs +++ b/crates/total-viewsheds/src/compute.rs @@ -27,6 +27,10 @@ pub struct Compute<'compute> { pub longest_lines: Vec, } +/// `NUM_CORES` is the physical number of cores on a machine. Currently hardcoded to 8 +/// as that is what an i9900k has, and is a common configuration. +/// TODO find a good syscall for this +const NUM_CORES: usize = 8; /// Configuration for computing. pub struct ComputeConfig { /// The height of the observer that views viewsheds. @@ -179,6 +183,16 @@ impl<'compute> Compute<'compute> { /// Do all computations. pub fn run(&mut self) -> Result<()> { + if matches!(self.config.backend, crate::config::Backend::CPU) { + self.run_parallel(); + } else { + self.run_sequential(); + } + + Ok(()) + } + + fn run_sequential(&mut self) -> Result<()> { if Self::is_process_surfaces(&self.config.process) { self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; } @@ -230,6 +244,51 @@ impl<'compute> Compute<'compute> { Ok(()) } + fn run_parallel(&mut self) -> Result<()> { + #[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" + )] + let elevations = self + .dem + .elevations + .iter() + .map(|&x| x as i16) + .collect::>(); + + #[expect(clippy::as_conversions, reason = "u32 -> usize is valid")] + // TODO: third param is ring data which needs to be saved + let (surfaces, _longest, _) = crate::cpu::multithreaded_kernel( + &elevations, + self.dem.max_los_as_points as usize, + 360, + NUM_CORES, + false, + ); + + self.add_sector_surfaces_to_running_total(&surfaces); + + // TODO: Pack longest lines + // self.longest_lines = longest; + + self.render_total_surfaces()?; + self.render_longest_lines()?; + + Ok(()) + } + + /// Add the accumulated total surface areas for the current sector to the running total. + fn add_sector_surfaces_to_running_total(&mut self, cumulative_surfaces: &[f32]) { + for (left, right) in self + .total_surfaces + .iter_mut() + .zip(cumulative_surfaces.iter()) + { + *left += right; + } + } + /// Check to see if this angle increases the current longest line of sight for the point. fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { @@ -363,6 +422,9 @@ impl<'compute> Compute<'compute> { crate::config::Backend::Vulkan => { self.compute_sector_vulkan(ring_data, longest_lines)?; } + crate::config::Backend::CPU => { + unimplemented!(); + } #[expect(clippy::unimplemented, reason = "Coming Soon!")] crate::config::Backend::Cuda => unimplemented!(), diff --git a/crates/total-viewsheds/src/config.rs b/crates/total-viewsheds/src/config.rs index 3aabcad..fcf63ca 100644 --- a/crates/total-viewsheds/src/config.rs +++ b/crates/total-viewsheds/src/config.rs @@ -142,6 +142,8 @@ pub enum Backend { Vulkan, /// Vulkan shader but run on the CPU. VulkanCPU, + /// Optimised cache-efficient CPU kernel + CPU, /// TBC Cuda, } diff --git a/crates/total-viewsheds/src/cpu.rs b/crates/total-viewsheds/src/cpu.rs new file mode 100644 index 0000000..98c44f7 --- /dev/null +++ b/crates/total-viewsheds/src/cpu.rs @@ -0,0 +1,932 @@ +//! `cpu` is a CPU version of the total viewshed calculation + +use itertools::izip; +use rayon::iter::ParallelIterator as _; + +#[cfg(target_feature = "avx512f")] +use std::arch::x86_64::{ + __m512, _mm256_alignr_epi32, _mm256_mask_alignr_epi32, _mm512_alignr_epi32, + _mm512_castps_si512, _mm512_castsi512_ps, _mm512_cmple_ps_mask, _mm512_max_ps, +}; + +use rayon::prelude::IntoParallelIterator as _; +use rayon::ThreadPoolBuilder; +#[cfg(all( + target_feature = "avx2", + target_feature = "avx", + target_feature = "sse", + target_feature = "sse2" +))] +use std::arch::x86_64::{ + _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_cmp_ps, _mm256_max_ps, + _mm256_slli_si256, _mm_castps_si128, _mm_cmpge_ps, _mm_max_ps, _CMP_LE_OS, +}; +use std::iter::zip; +use std::simd::prelude::*; +use std::simd::{LaneCount, Mask, SupportedLaneCount}; +use std::sync::Mutex; +use std::time::Instant; +use std::{array, f32, mem, slice}; + +/// `EARTH_RADIUS_SQUARED` is the earth's radius squared in meters +const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; + +/// `TAN_ONE_RAD` helps normalize the fact that inner points are sampled more often +/// see the TVS paper for reasoning. +const TAN_ONE_RAD: f32 = 0.017_453_3; + +/// `Vectorized` is an empty struct to allow for specializations of the total viewhshed algorithm +/// TODO: maybe we can just use a generic struct? +struct Vectorized; + +/// `Viewshed` holds all the platform and vector-width specific methods the CPU kernel +/// needs to operate. +trait Viewshed +where + LaneCount: SupportedLaneCount, +{ + /// `gte` takes in a vector of angles and its prefix maximum returns a mask of + /// i32s which are either -1 or 0 in each lane. This way it can be used to "select" + /// which lanes of the target vector to use for further calculations + fn gte(&self, angle: Simd, prefix: Simd) -> Mask; + + /// `max` returns the lane-wise maximum of both vectors. It exists to help platform-specific + /// and potentially "unsafe" (in floating point terms) and speedier implementations + fn max(&self, lhs: Simd, rhs: Simd) -> Simd; + + /// `prefix_max` calculates a prefix maximum given all of the `angles` and stores + /// it in `prefix_max` + fn prefix_max( + &self, + angles: &[Simd], + prefix_max: &mut [Simd], + acc: Simd, + ) -> Simd; +} + +impl Viewshed<4> for Vectorized { + #[inline] + #[cfg(all(target_feature = "sse", target_feature = "sse2"))] + fn gte(&self, angle: f32x4, prefix: f32x4) -> Mask { + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm_castps_si128(_mm_cmpge_ps(angle.into(), prefix.into())); + Mask::::from_int_unchecked(mask.into()) + } + } + + #[inline] + #[cfg(not(all(target_feature = "sse", target_feature = "sse2")))] + fn gte(&self, lhs: f32x4, rhs: f32x4) -> Mask { + lhs.simd_ge(rhs) + } + + #[inline] + #[cfg(all(target_feature = "sse", target_feature = "sse2"))] + fn max(&self, lhs: f32x4, rhs: f32x4) -> Simd { + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm_max_ps(lhs.into(), rhs.into()).into() } + } + + #[inline] + #[cfg(not(all(target_feature = "sse", target_feature = "sse2")))] + fn max(&self, lhs: f32x4, rhs: f32x4) -> Simd { + lhs.simd_max(r) + } + + #[inline] + fn prefix_max(&self, angles: &[f32x4], prefix_max: &mut [f32x4], acc: f32x4) -> f32x4 { + for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { + let mut v_prefix_max = { + let shifted = angle.shift_elements_right::<1>(-2000.0f32); + self.max(angle, shifted) + }; + + v_prefix_max = { + let shifted = v_prefix_max.shift_elements_right::<2>(-2000.0f32); + self.max(v_prefix_max, shifted) + }; + + *prefix = v_prefix_max; + } + + let mut local_acc = acc; + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in prefix_max { + let cur_prefix: f32x4 = *prefix; + let cur_max: f32x4 = Simd::splat(cur_prefix[3]); + + *prefix = self.max(local_acc, cur_prefix); + local_acc = self.max(local_acc, cur_max); + } + + local_acc + } +} + +#[cfg(all(target_feature = "avx2", target_feature = "avx"))] +impl Viewshed<8> for Vectorized { + #[inline] + fn gte(&self, angle: f32x8, prefix: f32x8) -> Mask { + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = + _mm256_castps_si256(_mm256_cmp_ps::<_CMP_LE_OS>(prefix.into(), angle.into())); + Mask::::from_int_unchecked(mask.into()) + } + } + + #[inline] + fn max(&self, lhs: f32x8, rhs: f32x8) -> Simd { + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } + } + + #[inline] + fn prefix_max(&self, angles: &[f32x8], prefix_max: &mut [f32x8], acc: f32x8) -> f32x8 { + // Calculate the 4-wide block prefix max two at a time + for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { + // safety: all mm256 operations are avx2, and Viewshed<8> has feature guards for both + let mut v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<4>(_mm256_castps_si256(angle.into())); + let blended = _mm256_blend_ps::<0b1000_1000>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + self.max(angle, blended.into()) + }; + + // safety: all mm256 operations are avx2, and Viewshed<8> has feature guards for both + v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<8>(_mm256_castps_si256(v_prefix_max.into())); + let blended = _mm256_blend_ps::<0b1100_1100>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + + self.max(v_prefix_max, blended.into()) + }; + + *prefix = v_prefix_max; + } + + let mut local_acc = f32x4::splat(acc[3]); + + // safety: because f32x8s are aligned to exactly sizeof(f32x4) * 2 + // this is well aligned, so the cast is valid + // + // This is SUPER MEGA UBER VERY sketchy, and shouldn't be copied + // unless you _really_, _truly_ understand what the compiler will do + let single_wide_prefx: &mut [f32x4] = unsafe { + let ptr = prefix_max.as_mut_ptr(); + slice::from_raw_parts_mut(ptr.cast::(), prefix_max.len() * 2) + }; + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in single_wide_prefx { + let cur_prefix: f32x4 = *prefix; + let cur_max: f32x4 = Simd::splat(cur_prefix[3]); + + *prefix = self.max(local_acc, cur_prefix); + local_acc = self.max(local_acc, cur_max); + } + + f32x8::splat(local_acc[3]) + } +} + +#[cfg(target_feature = "avx512f")] +fn _mm512_slli_si512(elem: __m512) -> __m512 +where + [(); { (16 - K) as i32 } as usize]:, +{ + unsafe { + let zero = f32x16::splat(-2000.0f32); + _mm512_castsi512_ps(_mm512_alignr_epi32::<{ (16 - K) as i32 }>( + _mm512_castps_si512(elem), + _mm512_castps_si512(zero.into()), + )) + } +} + +#[cfg(target_feature = "avx512f")] +impl Viewshed<16> for Vectorized { + #[inline] + fn gte(&self, angle: f32x16, prefix: f32x16) -> Mask { + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm512_cmple_ps_mask(prefix.into(), angle.into()); + Mask::::from_bitmask(mask.into()) + } + } + + #[inline] + fn max(&self, lhs: f32x16, rhs: f32x16) -> f32x16 { + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } + } + + #[inline] + fn prefix_max(&self, angles: &[f32x16], prefix_max: &mut [f32x16], acc: f32x16) -> f32x16 { + // Calculate the 4-wide block prefix max two at a time + for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { + unsafe { + let mut v_prefix_max = + _mm512_max_ps(angle.into(), _mm512_slli_si512::<1>(angle.into()).into()); + v_prefix_max = _mm512_max_ps( + v_prefix_max.into(), + _mm512_slli_si512::<2>(v_prefix_max).into(), + ); + v_prefix_max = _mm512_max_ps( + v_prefix_max.into(), + _mm512_slli_si512::<4>(v_prefix_max).into(), + ); + v_prefix_max = _mm512_max_ps( + v_prefix_max.into(), + _mm512_slli_si512::<8>(v_prefix_max).into(), + ); + *prefix = v_prefix_max.into(); + } + } + + let mut local_acc = f32x16::splat(acc[0]); + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in prefix_max { + let cur_prefix: f32x16 = *prefix; + let cur_max: f32x16 = Simd::splat(cur_prefix[15]); + + *prefix = self.max(local_acc, cur_prefix); + local_acc = self.max(local_acc, cur_max); + } + + f32x16::splat(local_acc[0]) + } +} + +#[inline] +/// `load_elevations` converts an array of i16 elevations into a height adjusted +fn load_elevations(elev_arr: [i16; N], pov_height: f32) -> Simd +where + LaneCount: SupportedLaneCount, +{ + let elevs = Simd::::from_array(elev_arr); + let float_elevs: Simd = elevs.cast(); + float_elevs - Simd::splat(pov_height) +} + +/// `IndexSIMD` holds the `dem_ids`/"indexes" of the current line of sight, +/// along with where they will be written out to +struct IndexSIMD<'idx, const N: usize> { + /// `indexes_in` holds a slice of a SIMD-size-wide array of `dem_ids`/"indexes" + indexes_in: &'idx [[i32; N]], + /// `indexes_out` is the buffer of a SIMD-size-wide where the visible `dem_ids`/"indexes" will be written out to + indexes_out: &'idx mut [[i32; N]], +} + +#[inline] +/// `line_of_sight` calculates a single line of sight for a given pov, which is passed in via `pov_height` +fn line_of_sight( + vs: &VS, + elevations: &[[i16; N]], + distances: &[Simd], + adjustments: &[Simd], + prefix_in: Simd, + indexes: Option>, + pov_height: f32, +) -> ([Simd; UNROLL], [Simd; UNROLL], Simd) +where + LaneCount: SupportedLaneCount, + VS: Viewshed, +{ + let mut sum_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; + let mut angle_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; + let mut longest_line_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; + let mut prefix_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; + + izip!( + angle_buf.iter_mut(), + elevations + .iter() + .map(|elev| load_elevations(*elev, pov_height)), + distances, + adjustments + ) + .for_each(|(angle, elev, dist, adjust)| { + *angle = elev / dist - adjust; + }); + + #[expect( + clippy::float_cmp, + reason = "-2000.0f32 is a sentinel value for the first time this accumlative function is run" + )] + if prefix_in[0] == -2000.0f32 { + angle_buf[0][0] = -2000.1f32; + } + + let prefix_out = vs.prefix_max(&angle_buf, &mut prefix_buf, prefix_in); + + let index_iter = indexes.map(|index_simd| { + index_simd + .indexes_in + .iter() + .map(|ind| Simd::::from_array(*ind)) + .zip(index_simd.indexes_out.iter_mut()) + }); + + izip!( + &mut sum_buf, + &mut longest_line_buf, + angle_buf.iter(), + prefix_buf.iter(), + distances.iter(), + OptionIter::new(index_iter) + ) + .for_each(|(next_sum, longest_line, &angle, &pref, &dists, inds)| { + let mask = vs.gte(angle, pref); + + if let Some((inds_in, inds_out)) = inds { + inds_in.store_select(inds_out, mask); + } + + let selected_distances = mask.select(dists, Simd::splat(0.0)); + *longest_line = vs.max(*longest_line, selected_distances); + + let selected_tans = mask.select(Simd::splat(TAN_ONE_RAD), Simd::splat(0.0)); + *next_sum = selected_distances * selected_tans; + }); + + (sum_buf, longest_line_buf, prefix_out) +} + +/// `dem_to_pov` +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + reason = "so long as max_los < 2^24, the following as conversions are entirely safe" +)] +#[expect( + clippy::integer_division, + reason = "i32 is constructed from (i32, i32) converting back should succeed" +)] +const fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { + let dem_x = (dem_id / width as i32) - max_los as i32; + let dem_y = (dem_id % width as i32) - max_los as i32; + + dem_x * (max_los as i32) + dem_y +} + +/// `Indexes` holds the `dem_id`/"indexes" and the output buffer to store them in +struct Indexes<'index> { + /// `indexes_in` holds the full line of (2 or 3*`max_los`) `dem_ids`/"indexes" + indexes_in: &'index [i32], + /// `indexes_out` holds `max_los` indexes of `max_los` length. Zeroes are used if + indexes_out: &'index mut [i32], +} + +/// `OptionIter` holds the state for an optional inner iterator. +/// If passed `None`, it will repeat `None` forever. This comes in handy +/// when working with `izip!` +struct OptionIter +where + Iter: Iterator, +{ + /// `iter` holds an optional iterator state which will + /// call `next()` + iter: Option, +} + +impl OptionIter +where + Iter: Iterator, +{ + /// `new` creates a new iter from an Option of the Iter + const fn new(iter: Option) -> Self { + Self { iter } + } +} + +impl Iterator for OptionIter +where + Iter: Iterator, +{ + type Item = Option; + + #[inline] + fn next(&mut self) -> Option { + if let Some(ref mut iter) = &mut self.iter { + iter.next().map(Some) + } else { + Some(None) + } + } +} + +/// `UnrolledAngles` holds the curved earth adjustments +struct UnrolledAngles<'angle, const WIDTH: usize, const UNROLL: usize> +where + LaneCount: SupportedLaneCount, +{ + /// `adjustments` holds a slice of UNROLL sized slices used during loop unrolling, and then the "rest" portion + adjustments: ( + &'angle [[Simd; UNROLL]], + &'angle [Simd], + ), + /// `distances` holds a slice of UNROLL sized slices used during loop unrolling, and then the "rest" portion + distances: ( + &'angle [[Simd; UNROLL]], + &'angle [Simd], + ), +} + +/// `viewshed` computes the viewshed for a single pov, using its `elevation`, and `max_los` +/// and stores the results in `heatmap` and `longest_line` using the `dem_id` +#[inline] +fn viewshed( + vs: &VS, + pov_idx: usize, + elevation: i16, + dem_id: i32, + max_los: usize, + heatmap: &mut [f32], + longest_line: &mut [f32], + line: &[i16], + index_data: Option, + unrolled_angles: &UnrolledAngles, +) where + LaneCount: SupportedLaneCount, + VS: Viewshed, +{ + let result_tvs_id = dem_to_pov(dem_id, 3 * max_los, max_los); + + // if the line of sight is not within our computable points, do not consider it + if result_tvs_id < 0i32 || result_tvs_id >= (max_los * max_los) as i32 { + return; + } + + let pov_height = f32::from(elevation); + + // safety: max_los % WIDTH == 0, so [pov_idx..pov_idx+max_los) will also be WIDTH wide + let (elevations, _): (&[[i16; WIDTH]], _) = + unsafe { line.get_unchecked(pov_idx..pov_idx + max_los) }.as_chunks::(); + + let (iter, rest) = index_data.map_or_else( + || (None, None), + |data| { + // safety: pov_idx should be between [0, max_los) and len(indexes_in)==2*max_los + // thus, for any pov_idx pov_idx..pov_idx+max_los is inbounds + let (indexes, _): (&[[i32; WIDTH]], _) = + unsafe { data.indexes_in.get_unchecked(pov_idx..pov_idx + max_los) } + .as_chunks::(); + + let (indexes_out, _) = data.indexes_out.as_chunks_mut::(); + + let (chunked_indexes, rest_indexes) = indexes.as_chunks::(); + let (chunked_indexes_out, rest_indexes_out) = indexes_out.as_chunks_mut::(); + + ( + Some( + zip(chunked_indexes.iter(), chunked_indexes_out.iter_mut()).map( + |(inds_in, inds_out)| IndexSIMD { + indexes_in: inds_in, + indexes_out: inds_out, + }, + ), + ), + Some(IndexSIMD { + indexes_in: rest_indexes, + indexes_out: rest_indexes_out, + }), + ) + }, + ); + + let (chunked_elevs, rest_elevs) = elevations.as_chunks::(); + + let (chunked_distances, rest_distances) = unrolled_angles.distances; + let (chunked_adjustments, rest_adjustments) = unrolled_angles.adjustments; + + let (local_sums, local_longest, prefix) = izip!( + chunked_elevs, + chunked_distances, + chunked_adjustments, + OptionIter::new(iter), + ) + .fold( + ( + [Simd::splat(0.0); UNROLL], + [Simd::splat(0.0); UNROLL], + Simd::splat(-2000.0), + ), + |(sum, longest, prefix), (elevs, dists, adjusts, inds)| { + let (next_sum, next_longest, acc) = line_of_sight::( + vs, // elevs: &[[i16; N]], + elevs, // distances: &[Simd], + dists, // adjustments: &[Simd], + adjusts, // prefix_in: Simd, + prefix, inds, pov_height, // pov_height: f32, + ); + + let mut copied_sum = sum; + zip(copied_sum.iter_mut(), next_sum).for_each(|(old, new)| { + *old += new; + }); + + let mut copied_longest_line = longest; + zip(copied_longest_line.iter_mut(), next_longest).for_each(|(old, new)| { + *old = old.simd_max(new); + }); + + (copied_sum, copied_longest_line, acc) + }, + ); + + let mut sum = local_sums + .iter() + .fold(0.0f32, |acc, partial| acc + partial.reduce_sum()); + + let mut longest = local_longest + .iter() + .fold(0.0f32, |acc, new| acc.max(new.reduce_max())); + + let (sum_buf, longest_buf, _) = line_of_sight::( + vs, + rest_elevs, + rest_distances, + rest_adjustments, + prefix, + rest, + pov_height, + ); + + sum += sum_buf + .iter() + .fold(0.0f32, |acc, partial| acc + partial.reduce_sum()); + + longest = longest_buf + .iter() + .fold(longest, |acc, new| acc.max(new.reduce_max())); + + #[expect( + clippy::as_conversions, + clippy::cast_sign_loss, + reason = "result_idx should be in [0, 2^31]" + )] + // safety: it is guaranteed by the rotation kernel that if the index is + // greater than zero that it is in-bounds. This saves ~10% of bounds checks + unsafe { + *heatmap.get_unchecked_mut(result_tvs_id as usize) += sum; + + let old_longest: *mut f32 = longest_line.get_unchecked_mut(result_tvs_id as usize); + *old_longest = (*old_longest).max(longest); + } +} + +/// `precalculate_distances` precalculates earth curvature adjustments and +/// the distance from a particular point (which is just linear) +fn precalculate_distances( + max_los: usize, +) -> (Vec>, Vec>) +where + LaneCount: SupportedLaneCount, +{ + (0..max_los) + .step_by(WIDTH) + .map(|offset| { + #[expect( + clippy::as_conversions, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + reason = "WIDTH < 2^31" + )] + let distance_arr: [i32; WIDTH] = array::from_fn(|i| i as i32); + let distances = Simd::from_array(distance_arr); + + #[expect( + clippy::as_conversions, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + reason = "WIDTH < 2^31" + )] + let normalized = (distances + Simd::splat(offset as i32)) * Simd::splat(100i32); + + let floats: Simd = normalized.cast(); + + (floats, floats / Simd::splat(EARTH_RADIUS_SQUARED)) + }) + .unzip() +} + +/// `total_viewshed` computes a total viewshed heatmap for a given elevation map, +/// and corresponding indexes to store the rotated data +#[inline] +fn total_viewshed>( + vs: &V, + elevation_map: &[i16], + indexes: &[i32], + max_los: usize, + output_sector_data: bool, +) -> ViewshedAngle +where + LaneCount: SupportedLaneCount, +{ + assert_eq!( + elevation_map.len(), + 2 * max_los * max_los, + "elevations should be 2 * max_los wide, and max_los tall" + ); + + assert_eq!( + indexes.len(), + 2 * max_los * max_los, + "indexes should be 2 * max_los wide, and max_los tall" + ); + + assert_eq!( + max_los % WIDTH, + 0, + "to help the vectorizer, max_los must be a multiple of {WIDTH}" + ); + + let mut sector_data_buf = vec![0i32; if output_sector_data { max_los * max_los * max_los } else { 0 }]; + let mut heatmap = vec![0.0f32; max_los * max_los]; + let mut longest_line = vec![0.0f32; max_los * max_los]; + let mut sector_data: Option<&mut Vec> = + output_sector_data.then_some(&mut sector_data_buf); + + let width = 2 * max_los; + + // precalculate all distances and their spherical earth "adjustments". + // This saves ~33% of effort inside our hot loop + let (distances, adjustments) = precalculate_distances::(max_los); + + let unrolled_angle = UnrolledAngles { + distances: distances.as_chunks::(), + adjustments: adjustments.as_chunks::(), + }; + + for (line, line_indexes, sector_chunk) in izip!( + elevation_map.chunks_exact(width), + indexes.chunks_exact(width), + OptionIter::new(sector_data.as_mut().map(|sd| sd.chunks_exact_mut(max_los * max_los))), + ) { + for (pov, (&pov_height, &result_dem_id, line_bitmap)) in izip!( + line.iter().take(max_los), + line_indexes.iter().take(max_los), + OptionIter::new(sector_chunk.map(|chunk| chunk.chunks_exact_mut(max_los))) + ) + .enumerate() + { + viewshed( + vs, + pov, + pov_height, + result_dem_id, + max_los, + &mut heatmap, + &mut longest_line, + line, + line_bitmap.map(|bitmap| Indexes{ + indexes_in: line_indexes, + indexes_out: bitmap, + }), + &unrolled_angle, + ); + } + } + + ViewshedAngle { + heatmap, + longest_line, + sector_data: sector_data.cloned(), + } +} + +/// `generate_rotation` generates a rotation "map" for a given elevation list +/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" +)] +fn generate_rotation(elevs: &[i16], angle: f64, max_los: usize) -> (Vec, Vec) { + let width = (max_los * 3) as isize; + + #[expect(clippy::integer_division, reason = "we don't need precision here")] + { + assert_eq!( + elevs.len() as isize % width, + 0, + "Elevations array must be square {}%{width} != 0", + elevs.len(), + ); + let elevations_div_width = elevs.len() as isize / width; + assert_eq!( + elevations_div_width, + width, + "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", + elevs.len() as isize + ); + }; + + let (sin, cos) = (f64::sin(angle.to_radians()), f64::cos(angle.to_radians())); + + #[expect(clippy::integer_division, reason = "we don't need precision here")] + let (x_center, y_center) = (width / 2, width / 2); + + let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); + + for x in (max_los as isize)..(max_los as isize) * 2 { + let x_sin = (x - x_center) as f64 * sin; + let x_cos = (x - x_center) as f64 * cos; + for y in (max_los as isize)..width { + let y_sin = (y - y_center) as f64 * sin; + let y_cos = (y - y_center) as f64 * cos; + + let x_rot = (x_cos - y_sin).round() as isize + y_center; + let y_rot = (y_cos + x_sin).round() as isize + x_center; + + let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); + + rotation.push(new_idx as i32); + } + } + + debug_assert_eq!( + rotation.len() as isize, + max_los as isize * (2 * max_los as isize), + "the rotation should be 2 * max_los wide, max_los tall" + ); + + // map the indexes to their elevations + let elevations = rotation + .iter() + .map(|&idx| { + if idx < 0i32 { + i16::MIN + } else { + #[expect( + clippy::as_conversions, + reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" + )] + #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] + // safety: idx is clamped so a get will always be in-bounds + *unsafe { elevs.get_unchecked(idx as usize) } + } + }) + .collect::>(); + + (rotation, elevations) +} + +/// `ViewshedAngle` holds the cumulative result of a single angle in the `total_viewshed` algorithm +#[derive(Debug)] +struct ViewshedAngle { + /// `heatmap` contains the longest line of sight heatmap for rendering + heatmap: Vec, + /// `longest_line` contains the longest distance for a particular point + longest_line: Vec, + /// `sector_data` holds the visibility calculations for each point in row-major order. + /// elements `[0..max_los)` are for the first point, `[max_los, 2*max_los)` for the second + /// point, and so on. + /// + /// This gets absolutely massive, so we only allocate this if we know for certain we will be using it + sector_data: Option>, +} + +impl ViewshedAngle { + /// `new` creates a new buffer for viewshed results of `heatmap`, + /// `longest_line`, and `sector_data` + fn new(max_los: usize, sector_data: bool) -> Self { + Self { + heatmap: vec![0.0f32; max_los * max_los], + longest_line: vec![0.0f32; max_los * max_los], + sector_data: sector_data.then(|| Vec::with_capacity(max_los * max_los * max_los)), + } + } + + /// `acc` accumulates a single `ViewshedAngle` into another + fn acc(&mut self, other: &Self) { + zip(&mut self.heatmap, &other.heatmap).for_each(|(to, from)| { + *to += *from; + }); + + zip(&mut self.longest_line, &other.longest_line).for_each(|(to, from)| { + *to = (*to).max(*from); + }); + + if let Some(ref mut sector_data) = &mut self.sector_data { + if let Some(other_sector_data) = &other.sector_data { + sector_data.extend_from_slice(other_sector_data); + } + } + } +} + +/// `kernel` is a CPU-based total viewshed kernel. It makes use of image rotation tof +/// optimize the cache locality of all lookups for a total viewshed calculation +fn kernel(elevations: &[i16], max_los_points: usize, angle: usize) -> ViewshedAngle { + assert!(angle < 360, "angle must be [0, 360)"); + let mut start = Instant::now(); + + #[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "angle is [0,360), not more than 2^54" + )] + let (indexes, rotated_elevations) = generate_rotation(elevations, angle as f64, max_los_points); + + tracing::info!( + "rotated {:?} in {:?}, calculating viewshed", + angle, + start.elapsed() + ); + + start = Instant::now(); + + let vectorized = Vectorized {}; + + let result = total_viewshed::<8, 8, Vectorized>( + &vectorized, + &rotated_elevations, + &indexes, + max_los_points, + false, + ); + tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); + result +} + +/// `multithreaded_kernel` parallelizes CPU kernel calculations for a `core_count` and calculates +/// `num_angles` different angles +pub fn multithreaded_kernel( + elevations_original: &[i16], + max_los_points_original: usize, + num_angles: usize, + core_count: usize, + output_sector_data: bool, +) -> (Vec, Vec, Option>) { + let max_los_points = max_los_points_original.div_ceil(4) * 4; + let dem_width = max_los_points * 3; + let mut elevations_vec = elevations_original.to_vec(); + elevations_vec.resize(dem_width.pow(2), 0); + let elevations = &elevations_vec; + + if max_los_points != max_los_points_original { + tracing::warn!("LoS: {max_los_points_original} to {max_los_points}"); + } + if elevations.len() != elevations_original.len() { + tracing::warn!( + "Elevations array length resized: {} to {}", + elevations_original.len(), + elevations_vec.len() + ); + } + + #[expect( + clippy::expect_used, + reason = "threadpool must be created for program to run" + )] + let pool = ThreadPoolBuilder::new() + .num_threads(core_count) + .build() + .expect("couldn't build threadpool"); + + let mut final_angle = ViewshedAngle::new(max_los_points, output_sector_data); + let angle_mu = &Mutex::new(&mut final_angle); + + pool.install(move || { + (0..num_angles) + .into_par_iter() + .map(|angle| kernel(elevations, max_los_points, angle)) + .for_each(|vs| { + #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] + let mut angle_guard = angle_mu.lock().expect("mutex poisoned"); + + angle_guard.acc(&vs); + }); + }); + + let (heatmap, longest_line, sector) = ( + mem::take(&mut final_angle.heatmap), + mem::take(&mut final_angle.longest_line), + final_angle + .sector_data + .map(|mut sector_data| mem::take(&mut sector_data)), + ); + + (heatmap, longest_line, sector) +} diff --git a/crates/total-viewsheds/src/dem.rs b/crates/total-viewsheds/src/dem.rs index fec12ab..0717653 100644 --- a/crates/total-viewsheds/src/dem.rs +++ b/crates/total-viewsheds/src/dem.rs @@ -161,7 +161,6 @@ impl DEM { reason = "We don't want to output GBs of data!" )] impl std::fmt::Debug for DEM { - #[expect(clippy::min_ident_chars, reason = "This is from `std`")] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("DEM") .field("width", &self.width) diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 41fa3be..91e3596 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,6 +1,8 @@ //! Total Viewshed Calculator - +#![feature(portable_simd)] +#![feature(generic_const_exprs)] #![expect(clippy::pub_use, reason = "I admit I don't understand the other way.")] + #![cfg_attr( test, expect( @@ -14,6 +16,8 @@ ) )] +extern crate core; + use clap::Parser as _; use color_eyre::eyre::Result; use tracing_subscriber::{layer::SubscriberExt as _, util::SubscriberInitExt as _, Layer as _}; @@ -40,6 +44,7 @@ mod output { pub mod ring_data; pub mod viewshed; } +mod cpu; mod projection; fn main() -> Result<()> { diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..9d26467 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "nightly-2025-10-20" +components = ["rustfmt", "clippy"] \ No newline at end of file diff --git a/scripts/apt_init.sh b/scripts/apt_init.sh new file mode 100644 index 0000000..a4a64a6 --- /dev/null +++ b/scripts/apt_init.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +sudo apt install -y git clang +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +git clone https://github.com/AllTheLines/CacheTVS +cd CacheTVS && git checkout cpu-clean From c1c0e566a06e27912a0007a4991d342f0e6bad3a Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sat, 20 Dec 2025 18:41:24 -0800 Subject: [PATCH 02/27] feat: conditionally compile based on architecture --- Cargo.lock | 7 --- crates/total-viewsheds/Cargo.toml | 1 - crates/total-viewsheds/src/compute.rs | 7 ++- crates/total-viewsheds/src/cpu.rs | 85 ++++++++++++++++++++++----- crates/total-viewsheds/src/main.rs | 5 +- 5 files changed, 79 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2859fd6..2805c18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1359,12 +1359,6 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" -[[package]] -name = "radsort" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" - [[package]] name = "raw-window-handle" version = "0.6.2" @@ -1803,7 +1797,6 @@ dependencies = [ "kernel", "pollster", "proj4rs", - "radsort", "rayon", "serde", "serde_json", diff --git a/crates/total-viewsheds/Cargo.toml b/crates/total-viewsheds/Cargo.toml index 9bdfe1c..d329087 100644 --- a/crates/total-viewsheds/Cargo.toml +++ b/crates/total-viewsheds/Cargo.toml @@ -16,7 +16,6 @@ itertools = "0.14.0" kernel = { path = "../kernels/vulkan-and-cpu" } pollster = "0.4" proj4rs = { version = "0.1.8", features = ["aeqd"] } -radsort = "0.1.1" rayon = "1.11.0" serde = "1.0.219" serde_json = "1.0.143" diff --git a/crates/total-viewsheds/src/compute.rs b/crates/total-viewsheds/src/compute.rs index 1b10ade..fdf382d 100644 --- a/crates/total-viewsheds/src/compute.rs +++ b/crates/total-viewsheds/src/compute.rs @@ -184,14 +184,15 @@ impl<'compute> Compute<'compute> { /// Do all computations. pub fn run(&mut self) -> Result<()> { if matches!(self.config.backend, crate::config::Backend::CPU) { - self.run_parallel(); + self.run_parallel()?; } else { - self.run_sequential(); + self.run_sequential()?; } Ok(()) } + /// `run_sequential` runs a sequential GPU or CPU kernel fn run_sequential(&mut self) -> Result<()> { if Self::is_process_surfaces(&self.config.process) { self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; @@ -244,6 +245,7 @@ impl<'compute> Compute<'compute> { Ok(()) } + /// `run_parallel` runs the CPU kernel in parallel fn run_parallel(&mut self) -> Result<()> { #[expect( clippy::as_conversions, @@ -422,6 +424,7 @@ impl<'compute> Compute<'compute> { crate::config::Backend::Vulkan => { self.compute_sector_vulkan(ring_data, longest_lines)?; } + #[expect(clippy::unimplemented, reason = "CPU kernel is only multithreaded")] crate::config::Backend::CPU => { unimplemented!(); } diff --git a/crates/total-viewsheds/src/cpu.rs b/crates/total-viewsheds/src/cpu.rs index 98c44f7..6c42808 100644 --- a/crates/total-viewsheds/src/cpu.rs +++ b/crates/total-viewsheds/src/cpu.rs @@ -19,7 +19,7 @@ use rayon::ThreadPoolBuilder; ))] use std::arch::x86_64::{ _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_cmp_ps, _mm256_max_ps, - _mm256_slli_si256, _mm_castps_si128, _mm_cmpge_ps, _mm_max_ps, _CMP_LE_OS, + _mm256_slli_si256, _CMP_LE_OS, }; use std::iter::zip; use std::simd::prelude::*; @@ -28,6 +28,9 @@ use std::sync::Mutex; use std::time::Instant; use std::{array, f32, mem, slice}; +#[cfg(all(target_feature = "sse", target_feature = "sse2"))] +use std::arch::x86_64::{_mm_castps_si128, _mm_cmpge_ps, _mm_max_ps}; + /// `EARTH_RADIUS_SQUARED` is the earth's radius squared in meters const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; @@ -453,6 +456,11 @@ where /// `viewshed` computes the viewshed for a single pov, using its `elevation`, and `max_los` /// and stores the results in `heatmap` and `longest_line` using the `dem_id` #[inline] +#[expect( + clippy::too_many_arguments, + clippy::too_many_lines, + reason = "it is what it is for now" +)] fn viewshed( vs: &VS, pov_idx: usize, @@ -471,6 +479,12 @@ fn viewshed( let result_tvs_id = dem_to_pov(dem_id, 3 * max_los, max_los); // if the line of sight is not within our computable points, do not consider it + #[expect( + clippy::as_conversions, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + reason = "max_los^2 < 2^31" + )] if result_tvs_id < 0i32 || result_tvs_id >= (max_los * max_los) as i32 { return; } @@ -659,11 +673,17 @@ where "to help the vectorizer, max_los must be a multiple of {WIDTH}" ); - let mut sector_data_buf = vec![0i32; if output_sector_data { max_los * max_los * max_los } else { 0 }]; + let mut sector_data_buf = vec![ + 0i32; + if output_sector_data { + max_los * max_los * max_los + } else { + 0 + } + ]; let mut heatmap = vec![0.0f32; max_los * max_los]; let mut longest_line = vec![0.0f32; max_los * max_los]; - let mut sector_data: Option<&mut Vec> = - output_sector_data.then_some(&mut sector_data_buf); + let mut sector_data: Option<&mut Vec> = output_sector_data.then_some(&mut sector_data_buf); let width = 2 * max_los; @@ -677,16 +697,20 @@ where }; for (line, line_indexes, sector_chunk) in izip!( - elevation_map.chunks_exact(width), - indexes.chunks_exact(width), - OptionIter::new(sector_data.as_mut().map(|sd| sd.chunks_exact_mut(max_los * max_los))), - ) { + elevation_map.chunks_exact(width), + indexes.chunks_exact(width), + OptionIter::new( + sector_data + .as_mut() + .map(|sd| sd.chunks_exact_mut(max_los * max_los)) + ), + ) { for (pov, (&pov_height, &result_dem_id, line_bitmap)) in izip!( - line.iter().take(max_los), - line_indexes.iter().take(max_los), - OptionIter::new(sector_chunk.map(|chunk| chunk.chunks_exact_mut(max_los))) - ) - .enumerate() + line.iter().take(max_los), + line_indexes.iter().take(max_los), + OptionIter::new(sector_chunk.map(|chunk| chunk.chunks_exact_mut(max_los))) + ) + .enumerate() { viewshed( vs, @@ -697,7 +721,7 @@ where &mut heatmap, &mut longest_line, line, - line_bitmap.map(|bitmap| Indexes{ + line_bitmap.map(|bitmap| Indexes { indexes_in: line_indexes, indexes_out: bitmap, }), @@ -859,7 +883,38 @@ fn kernel(elevations: &[i16], max_los_points: usize, angle: usize) -> ViewshedAn let vectorized = Vectorized {}; - let result = total_viewshed::<8, 8, Vectorized>( + #[cfg(target_feature = "avx512f")] + { + let result = total_viewshed::<16, 8, Vectorized>( + &vectorized, + &rotated_elevations, + &indexes, + max_los_points, + false, + ); + tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); + return result; + }; + + #[cfg(all(target_feature = "avx2", target_feature = "avx"))] + { + let result = total_viewshed::<8, 8, Vectorized>( + &vectorized, + &rotated_elevations, + &indexes, + max_los_points, + false, + ); + tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); + return result; + }; + + #[expect( + unreachable_code, + unused_variables, + reason = "conditionally compiled out" + )] + let result = total_viewshed::<4, 8, Vectorized>( &vectorized, &rotated_elevations, &indexes, diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 91e3596..c55cd38 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,8 +1,11 @@ //! Total Viewshed Calculator #![feature(portable_simd)] +#![expect( + incomplete_features, + reason = "our usage isn't crazy and unlikely to break" +)] #![feature(generic_const_exprs)] #![expect(clippy::pub_use, reason = "I admit I don't understand the other way.")] - #![cfg_attr( test, expect( From 589af761c530c14b9cfd4ee424d987c32fd99415 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Tue, 30 Dec 2025 22:08:02 -0800 Subject: [PATCH 03/27] feat: add inclusive prefix sum code (#25) * add inclusive prefix sum code adds an inclusive prefix sum kernel which is generic to unroll factor and vector length * only calculate data for items within the TVS' radius * add filling in of elevations into kernel --- Cargo.toml | 1 + crates/total-viewsheds/Cargo.toml | 5 +- crates/total-viewsheds/src/compute.rs | 99 ++- crates/total-viewsheds/src/cpu.rs | 987 ----------------------- crates/total-viewsheds/src/cpu/kernel.rs | 221 +++++ crates/total-viewsheds/src/cpu/los.rs | 282 +++++++ crates/total-viewsheds/src/cpu/mod.rs | 9 + crates/total-viewsheds/src/cpu/vector.rs | 557 +++++++++++++ crates/total-viewsheds/src/main.rs | 4 + scripts/apt_init.sh | 3 +- 10 files changed, 1145 insertions(+), 1023 deletions(-) delete mode 100644 crates/total-viewsheds/src/cpu.rs create mode 100644 crates/total-viewsheds/src/cpu/kernel.rs create mode 100644 crates/total-viewsheds/src/cpu/los.rs create mode 100644 crates/total-viewsheds/src/cpu/mod.rs create mode 100644 crates/total-viewsheds/src/cpu/vector.rs diff --git a/Cargo.toml b/Cargo.toml index b8b169d..8553c6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,6 +61,7 @@ multiple_inherent_impl = "allow" upper_case_acronyms = "allow" struct_field_names = "allow" self_named_module_files = "allow" +mod_module_files = "allow" # I just personally prefer the `match` syntax for if-let matching. option_if_let_else = "allow" diff --git a/crates/total-viewsheds/Cargo.toml b/crates/total-viewsheds/Cargo.toml index d329087..599edad 100644 --- a/crates/total-viewsheds/Cargo.toml +++ b/crates/total-viewsheds/Cargo.toml @@ -2,7 +2,8 @@ name = "total-viewsheds" version = "0.1.0" edition = "2021" -rust-version = "1.88" +rust-version = "1.89" + [dependencies] bytemuck = "1.22.0" @@ -29,5 +30,3 @@ googletest = "0.14.2" [lints] workspace = true - - diff --git a/crates/total-viewsheds/src/compute.rs b/crates/total-viewsheds/src/compute.rs index fdf382d..99fc8c9 100644 --- a/crates/total-viewsheds/src/compute.rs +++ b/crates/total-viewsheds/src/compute.rs @@ -1,6 +1,12 @@ //! The main entrypoint for running computations. +use crate::los_pack::LineOfSightPacked; use color_eyre::Result; +use rayon::iter::IntoParallelIterator as _; +use rayon::iter::ParallelIterator as _; +use rayon::ThreadPoolBuilder; +use std::sync::Mutex; +use std::time::Instant; /// The number of angles we rotate through. The other half are done via "backwards" lines of sight. pub const SECTOR_STEPS: u16 = 180; @@ -27,10 +33,6 @@ pub struct Compute<'compute> { pub longest_lines: Vec, } -/// `NUM_CORES` is the physical number of cores on a machine. Currently hardcoded to 8 -/// as that is what an i9900k has, and is a common configuration. -/// TODO find a good syscall for this -const NUM_CORES: usize = 8; /// Configuration for computing. pub struct ComputeConfig { /// The height of the observer that views viewsheds. @@ -94,10 +96,6 @@ impl<'compute> Compute<'compute> { // We only need the "chocolate box" section of rotations to do visibility calculations. let rotations_size = kernel::chocolate_box::size(dem.width, dem.tvs_width); - #[expect( - clippy::if_then_some_else_none, - reason = "The `?` is hard to use in the closure" - )] let vulkan = if matches!(config.backend, crate::config::Backend::Vulkan) { let elevations = dem.elevations.clone(); dem.elevations = Vec::new(); // Free up some RAM. @@ -247,32 +245,69 @@ impl<'compute> Compute<'compute> { /// `run_parallel` runs the CPU kernel in parallel fn run_parallel(&mut self) -> Result<()> { - #[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" - )] - let elevations = self - .dem - .elevations - .iter() - .map(|&x| x as i16) - .collect::>(); - - #[expect(clippy::as_conversions, reason = "u32 -> usize is valid")] - // TODO: third param is ring data which needs to be saved - let (surfaces, _longest, _) = crate::cpu::multithreaded_kernel( - &elevations, - self.dem.max_los_as_points as usize, - 360, - NUM_CORES, - false, - ); + let max_los = usize::try_from(self.dem.max_los_as_points)?; + let mut surfaces = vec![0.0f32; max_los * max_los]; + let mut longest = vec![(0u16, 0.0f32); max_los * max_los]; + + let pool = ThreadPoolBuilder::new().num_threads(8).build()?; - self.add_sector_surfaces_to_running_total(&surfaces); + { + let angle_mu = &Mutex::new(&mut surfaces); + let longest_mu = &Mutex::new(&mut longest); + + let elevations = &self.dem.elevations; + + pool.install(move || { + (0u16..360u16) + .into_par_iter() + .map(|angle| { + let start = Instant::now(); + tracing::info!("starting angle: {angle}"); + let (heatmap, long, _) = + crate::cpu::kernel(elevations, max_los, f32::from(angle), false); + tracing::info!("finished angle in {:?}", start.elapsed()); + (angle, heatmap, long) + }) + .for_each(|(angle, heatmap, long)| { + #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] + angle_mu + .lock() + .expect("mutex poisoned") + .iter_mut() + .zip(heatmap) + .for_each(|(to, from)| { + *to += from; + }); + + #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] + longest_mu + .lock() + .expect("mutex poisoned") + .iter_mut() + .zip(long) + .for_each(|(to, from)| { + if from > to.1 { + *to = (angle, from); + } + }); + }); + }); + }; - // TODO: Pack longest lines - // self.longest_lines = longest; + self.total_surfaces = surfaces; + let packed: Result> = longest + .iter() + .map(|&(angle, distance): &(u16, f32)| { + #[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_sign_loss, + reason = "distances always fit in u32" + )] + LineOfSightPacked::new(distance as u32, angle) + }) + .collect(); + self.longest_lines = packed?; self.render_total_surfaces()?; self.render_longest_lines()?; diff --git a/crates/total-viewsheds/src/cpu.rs b/crates/total-viewsheds/src/cpu.rs deleted file mode 100644 index 6c42808..0000000 --- a/crates/total-viewsheds/src/cpu.rs +++ /dev/null @@ -1,987 +0,0 @@ -//! `cpu` is a CPU version of the total viewshed calculation - -use itertools::izip; -use rayon::iter::ParallelIterator as _; - -#[cfg(target_feature = "avx512f")] -use std::arch::x86_64::{ - __m512, _mm256_alignr_epi32, _mm256_mask_alignr_epi32, _mm512_alignr_epi32, - _mm512_castps_si512, _mm512_castsi512_ps, _mm512_cmple_ps_mask, _mm512_max_ps, -}; - -use rayon::prelude::IntoParallelIterator as _; -use rayon::ThreadPoolBuilder; -#[cfg(all( - target_feature = "avx2", - target_feature = "avx", - target_feature = "sse", - target_feature = "sse2" -))] -use std::arch::x86_64::{ - _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_cmp_ps, _mm256_max_ps, - _mm256_slli_si256, _CMP_LE_OS, -}; -use std::iter::zip; -use std::simd::prelude::*; -use std::simd::{LaneCount, Mask, SupportedLaneCount}; -use std::sync::Mutex; -use std::time::Instant; -use std::{array, f32, mem, slice}; - -#[cfg(all(target_feature = "sse", target_feature = "sse2"))] -use std::arch::x86_64::{_mm_castps_si128, _mm_cmpge_ps, _mm_max_ps}; - -/// `EARTH_RADIUS_SQUARED` is the earth's radius squared in meters -const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; - -/// `TAN_ONE_RAD` helps normalize the fact that inner points are sampled more often -/// see the TVS paper for reasoning. -const TAN_ONE_RAD: f32 = 0.017_453_3; - -/// `Vectorized` is an empty struct to allow for specializations of the total viewhshed algorithm -/// TODO: maybe we can just use a generic struct? -struct Vectorized; - -/// `Viewshed` holds all the platform and vector-width specific methods the CPU kernel -/// needs to operate. -trait Viewshed -where - LaneCount: SupportedLaneCount, -{ - /// `gte` takes in a vector of angles and its prefix maximum returns a mask of - /// i32s which are either -1 or 0 in each lane. This way it can be used to "select" - /// which lanes of the target vector to use for further calculations - fn gte(&self, angle: Simd, prefix: Simd) -> Mask; - - /// `max` returns the lane-wise maximum of both vectors. It exists to help platform-specific - /// and potentially "unsafe" (in floating point terms) and speedier implementations - fn max(&self, lhs: Simd, rhs: Simd) -> Simd; - - /// `prefix_max` calculates a prefix maximum given all of the `angles` and stores - /// it in `prefix_max` - fn prefix_max( - &self, - angles: &[Simd], - prefix_max: &mut [Simd], - acc: Simd, - ) -> Simd; -} - -impl Viewshed<4> for Vectorized { - #[inline] - #[cfg(all(target_feature = "sse", target_feature = "sse2"))] - fn gte(&self, angle: f32x4, prefix: f32x4) -> Mask { - // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { - let mask = _mm_castps_si128(_mm_cmpge_ps(angle.into(), prefix.into())); - Mask::::from_int_unchecked(mask.into()) - } - } - - #[inline] - #[cfg(not(all(target_feature = "sse", target_feature = "sse2")))] - fn gte(&self, lhs: f32x4, rhs: f32x4) -> Mask { - lhs.simd_ge(rhs) - } - - #[inline] - #[cfg(all(target_feature = "sse", target_feature = "sse2"))] - fn max(&self, lhs: f32x4, rhs: f32x4) -> Simd { - // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { _mm_max_ps(lhs.into(), rhs.into()).into() } - } - - #[inline] - #[cfg(not(all(target_feature = "sse", target_feature = "sse2")))] - fn max(&self, lhs: f32x4, rhs: f32x4) -> Simd { - lhs.simd_max(r) - } - - #[inline] - fn prefix_max(&self, angles: &[f32x4], prefix_max: &mut [f32x4], acc: f32x4) -> f32x4 { - for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { - let mut v_prefix_max = { - let shifted = angle.shift_elements_right::<1>(-2000.0f32); - self.max(angle, shifted) - }; - - v_prefix_max = { - let shifted = v_prefix_max.shift_elements_right::<2>(-2000.0f32); - self.max(v_prefix_max, shifted) - }; - - *prefix = v_prefix_max; - } - - let mut local_acc = acc; - - // accumulate the prefix maxes for blocks, re-computing all prefix maxes - // to include the accumulated value - for prefix in prefix_max { - let cur_prefix: f32x4 = *prefix; - let cur_max: f32x4 = Simd::splat(cur_prefix[3]); - - *prefix = self.max(local_acc, cur_prefix); - local_acc = self.max(local_acc, cur_max); - } - - local_acc - } -} - -#[cfg(all(target_feature = "avx2", target_feature = "avx"))] -impl Viewshed<8> for Vectorized { - #[inline] - fn gte(&self, angle: f32x8, prefix: f32x8) -> Mask { - // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { - let mask = - _mm256_castps_si256(_mm256_cmp_ps::<_CMP_LE_OS>(prefix.into(), angle.into())); - Mask::::from_int_unchecked(mask.into()) - } - } - - #[inline] - fn max(&self, lhs: f32x8, rhs: f32x8) -> Simd { - // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } - } - - #[inline] - fn prefix_max(&self, angles: &[f32x8], prefix_max: &mut [f32x8], acc: f32x8) -> f32x8 { - // Calculate the 4-wide block prefix max two at a time - for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { - // safety: all mm256 operations are avx2, and Viewshed<8> has feature guards for both - let mut v_prefix_max = unsafe { - let shifted = _mm256_slli_si256::<4>(_mm256_castps_si256(angle.into())); - let blended = _mm256_blend_ps::<0b1000_1000>( - _mm256_castsi256_ps(shifted), - Simd::splat(-2000.0f32).into(), - ); - self.max(angle, blended.into()) - }; - - // safety: all mm256 operations are avx2, and Viewshed<8> has feature guards for both - v_prefix_max = unsafe { - let shifted = _mm256_slli_si256::<8>(_mm256_castps_si256(v_prefix_max.into())); - let blended = _mm256_blend_ps::<0b1100_1100>( - _mm256_castsi256_ps(shifted), - Simd::splat(-2000.0f32).into(), - ); - - self.max(v_prefix_max, blended.into()) - }; - - *prefix = v_prefix_max; - } - - let mut local_acc = f32x4::splat(acc[3]); - - // safety: because f32x8s are aligned to exactly sizeof(f32x4) * 2 - // this is well aligned, so the cast is valid - // - // This is SUPER MEGA UBER VERY sketchy, and shouldn't be copied - // unless you _really_, _truly_ understand what the compiler will do - let single_wide_prefx: &mut [f32x4] = unsafe { - let ptr = prefix_max.as_mut_ptr(); - slice::from_raw_parts_mut(ptr.cast::(), prefix_max.len() * 2) - }; - - // accumulate the prefix maxes for blocks, re-computing all prefix maxes - // to include the accumulated value - for prefix in single_wide_prefx { - let cur_prefix: f32x4 = *prefix; - let cur_max: f32x4 = Simd::splat(cur_prefix[3]); - - *prefix = self.max(local_acc, cur_prefix); - local_acc = self.max(local_acc, cur_max); - } - - f32x8::splat(local_acc[3]) - } -} - -#[cfg(target_feature = "avx512f")] -fn _mm512_slli_si512(elem: __m512) -> __m512 -where - [(); { (16 - K) as i32 } as usize]:, -{ - unsafe { - let zero = f32x16::splat(-2000.0f32); - _mm512_castsi512_ps(_mm512_alignr_epi32::<{ (16 - K) as i32 }>( - _mm512_castps_si512(elem), - _mm512_castps_si512(zero.into()), - )) - } -} - -#[cfg(target_feature = "avx512f")] -impl Viewshed<16> for Vectorized { - #[inline] - fn gte(&self, angle: f32x16, prefix: f32x16) -> Mask { - // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { - let mask = _mm512_cmple_ps_mask(prefix.into(), angle.into()); - Mask::::from_bitmask(mask.into()) - } - } - - #[inline] - fn max(&self, lhs: f32x16, rhs: f32x16) -> f32x16 { - // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } - } - - #[inline] - fn prefix_max(&self, angles: &[f32x16], prefix_max: &mut [f32x16], acc: f32x16) -> f32x16 { - // Calculate the 4-wide block prefix max two at a time - for (prefix, &angle) in zip(prefix_max.iter_mut(), angles.iter()) { - unsafe { - let mut v_prefix_max = - _mm512_max_ps(angle.into(), _mm512_slli_si512::<1>(angle.into()).into()); - v_prefix_max = _mm512_max_ps( - v_prefix_max.into(), - _mm512_slli_si512::<2>(v_prefix_max).into(), - ); - v_prefix_max = _mm512_max_ps( - v_prefix_max.into(), - _mm512_slli_si512::<4>(v_prefix_max).into(), - ); - v_prefix_max = _mm512_max_ps( - v_prefix_max.into(), - _mm512_slli_si512::<8>(v_prefix_max).into(), - ); - *prefix = v_prefix_max.into(); - } - } - - let mut local_acc = f32x16::splat(acc[0]); - - // accumulate the prefix maxes for blocks, re-computing all prefix maxes - // to include the accumulated value - for prefix in prefix_max { - let cur_prefix: f32x16 = *prefix; - let cur_max: f32x16 = Simd::splat(cur_prefix[15]); - - *prefix = self.max(local_acc, cur_prefix); - local_acc = self.max(local_acc, cur_max); - } - - f32x16::splat(local_acc[0]) - } -} - -#[inline] -/// `load_elevations` converts an array of i16 elevations into a height adjusted -fn load_elevations(elev_arr: [i16; N], pov_height: f32) -> Simd -where - LaneCount: SupportedLaneCount, -{ - let elevs = Simd::::from_array(elev_arr); - let float_elevs: Simd = elevs.cast(); - float_elevs - Simd::splat(pov_height) -} - -/// `IndexSIMD` holds the `dem_ids`/"indexes" of the current line of sight, -/// along with where they will be written out to -struct IndexSIMD<'idx, const N: usize> { - /// `indexes_in` holds a slice of a SIMD-size-wide array of `dem_ids`/"indexes" - indexes_in: &'idx [[i32; N]], - /// `indexes_out` is the buffer of a SIMD-size-wide where the visible `dem_ids`/"indexes" will be written out to - indexes_out: &'idx mut [[i32; N]], -} - -#[inline] -/// `line_of_sight` calculates a single line of sight for a given pov, which is passed in via `pov_height` -fn line_of_sight( - vs: &VS, - elevations: &[[i16; N]], - distances: &[Simd], - adjustments: &[Simd], - prefix_in: Simd, - indexes: Option>, - pov_height: f32, -) -> ([Simd; UNROLL], [Simd; UNROLL], Simd) -where - LaneCount: SupportedLaneCount, - VS: Viewshed, -{ - let mut sum_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; - let mut angle_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; - let mut longest_line_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; - let mut prefix_buf: [Simd; UNROLL] = [Simd::splat(0.0); UNROLL]; - - izip!( - angle_buf.iter_mut(), - elevations - .iter() - .map(|elev| load_elevations(*elev, pov_height)), - distances, - adjustments - ) - .for_each(|(angle, elev, dist, adjust)| { - *angle = elev / dist - adjust; - }); - - #[expect( - clippy::float_cmp, - reason = "-2000.0f32 is a sentinel value for the first time this accumlative function is run" - )] - if prefix_in[0] == -2000.0f32 { - angle_buf[0][0] = -2000.1f32; - } - - let prefix_out = vs.prefix_max(&angle_buf, &mut prefix_buf, prefix_in); - - let index_iter = indexes.map(|index_simd| { - index_simd - .indexes_in - .iter() - .map(|ind| Simd::::from_array(*ind)) - .zip(index_simd.indexes_out.iter_mut()) - }); - - izip!( - &mut sum_buf, - &mut longest_line_buf, - angle_buf.iter(), - prefix_buf.iter(), - distances.iter(), - OptionIter::new(index_iter) - ) - .for_each(|(next_sum, longest_line, &angle, &pref, &dists, inds)| { - let mask = vs.gte(angle, pref); - - if let Some((inds_in, inds_out)) = inds { - inds_in.store_select(inds_out, mask); - } - - let selected_distances = mask.select(dists, Simd::splat(0.0)); - *longest_line = vs.max(*longest_line, selected_distances); - - let selected_tans = mask.select(Simd::splat(TAN_ONE_RAD), Simd::splat(0.0)); - *next_sum = selected_distances * selected_tans; - }); - - (sum_buf, longest_line_buf, prefix_out) -} - -/// `dem_to_pov` -#[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - clippy::cast_possible_wrap, - reason = "so long as max_los < 2^24, the following as conversions are entirely safe" -)] -#[expect( - clippy::integer_division, - reason = "i32 is constructed from (i32, i32) converting back should succeed" -)] -const fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { - let dem_x = (dem_id / width as i32) - max_los as i32; - let dem_y = (dem_id % width as i32) - max_los as i32; - - dem_x * (max_los as i32) + dem_y -} - -/// `Indexes` holds the `dem_id`/"indexes" and the output buffer to store them in -struct Indexes<'index> { - /// `indexes_in` holds the full line of (2 or 3*`max_los`) `dem_ids`/"indexes" - indexes_in: &'index [i32], - /// `indexes_out` holds `max_los` indexes of `max_los` length. Zeroes are used if - indexes_out: &'index mut [i32], -} - -/// `OptionIter` holds the state for an optional inner iterator. -/// If passed `None`, it will repeat `None` forever. This comes in handy -/// when working with `izip!` -struct OptionIter -where - Iter: Iterator, -{ - /// `iter` holds an optional iterator state which will - /// call `next()` - iter: Option, -} - -impl OptionIter -where - Iter: Iterator, -{ - /// `new` creates a new iter from an Option of the Iter - const fn new(iter: Option) -> Self { - Self { iter } - } -} - -impl Iterator for OptionIter -where - Iter: Iterator, -{ - type Item = Option; - - #[inline] - fn next(&mut self) -> Option { - if let Some(ref mut iter) = &mut self.iter { - iter.next().map(Some) - } else { - Some(None) - } - } -} - -/// `UnrolledAngles` holds the curved earth adjustments -struct UnrolledAngles<'angle, const WIDTH: usize, const UNROLL: usize> -where - LaneCount: SupportedLaneCount, -{ - /// `adjustments` holds a slice of UNROLL sized slices used during loop unrolling, and then the "rest" portion - adjustments: ( - &'angle [[Simd; UNROLL]], - &'angle [Simd], - ), - /// `distances` holds a slice of UNROLL sized slices used during loop unrolling, and then the "rest" portion - distances: ( - &'angle [[Simd; UNROLL]], - &'angle [Simd], - ), -} - -/// `viewshed` computes the viewshed for a single pov, using its `elevation`, and `max_los` -/// and stores the results in `heatmap` and `longest_line` using the `dem_id` -#[inline] -#[expect( - clippy::too_many_arguments, - clippy::too_many_lines, - reason = "it is what it is for now" -)] -fn viewshed( - vs: &VS, - pov_idx: usize, - elevation: i16, - dem_id: i32, - max_los: usize, - heatmap: &mut [f32], - longest_line: &mut [f32], - line: &[i16], - index_data: Option, - unrolled_angles: &UnrolledAngles, -) where - LaneCount: SupportedLaneCount, - VS: Viewshed, -{ - let result_tvs_id = dem_to_pov(dem_id, 3 * max_los, max_los); - - // if the line of sight is not within our computable points, do not consider it - #[expect( - clippy::as_conversions, - clippy::cast_possible_wrap, - clippy::cast_possible_truncation, - reason = "max_los^2 < 2^31" - )] - if result_tvs_id < 0i32 || result_tvs_id >= (max_los * max_los) as i32 { - return; - } - - let pov_height = f32::from(elevation); - - // safety: max_los % WIDTH == 0, so [pov_idx..pov_idx+max_los) will also be WIDTH wide - let (elevations, _): (&[[i16; WIDTH]], _) = - unsafe { line.get_unchecked(pov_idx..pov_idx + max_los) }.as_chunks::(); - - let (iter, rest) = index_data.map_or_else( - || (None, None), - |data| { - // safety: pov_idx should be between [0, max_los) and len(indexes_in)==2*max_los - // thus, for any pov_idx pov_idx..pov_idx+max_los is inbounds - let (indexes, _): (&[[i32; WIDTH]], _) = - unsafe { data.indexes_in.get_unchecked(pov_idx..pov_idx + max_los) } - .as_chunks::(); - - let (indexes_out, _) = data.indexes_out.as_chunks_mut::(); - - let (chunked_indexes, rest_indexes) = indexes.as_chunks::(); - let (chunked_indexes_out, rest_indexes_out) = indexes_out.as_chunks_mut::(); - - ( - Some( - zip(chunked_indexes.iter(), chunked_indexes_out.iter_mut()).map( - |(inds_in, inds_out)| IndexSIMD { - indexes_in: inds_in, - indexes_out: inds_out, - }, - ), - ), - Some(IndexSIMD { - indexes_in: rest_indexes, - indexes_out: rest_indexes_out, - }), - ) - }, - ); - - let (chunked_elevs, rest_elevs) = elevations.as_chunks::(); - - let (chunked_distances, rest_distances) = unrolled_angles.distances; - let (chunked_adjustments, rest_adjustments) = unrolled_angles.adjustments; - - let (local_sums, local_longest, prefix) = izip!( - chunked_elevs, - chunked_distances, - chunked_adjustments, - OptionIter::new(iter), - ) - .fold( - ( - [Simd::splat(0.0); UNROLL], - [Simd::splat(0.0); UNROLL], - Simd::splat(-2000.0), - ), - |(sum, longest, prefix), (elevs, dists, adjusts, inds)| { - let (next_sum, next_longest, acc) = line_of_sight::( - vs, // elevs: &[[i16; N]], - elevs, // distances: &[Simd], - dists, // adjustments: &[Simd], - adjusts, // prefix_in: Simd, - prefix, inds, pov_height, // pov_height: f32, - ); - - let mut copied_sum = sum; - zip(copied_sum.iter_mut(), next_sum).for_each(|(old, new)| { - *old += new; - }); - - let mut copied_longest_line = longest; - zip(copied_longest_line.iter_mut(), next_longest).for_each(|(old, new)| { - *old = old.simd_max(new); - }); - - (copied_sum, copied_longest_line, acc) - }, - ); - - let mut sum = local_sums - .iter() - .fold(0.0f32, |acc, partial| acc + partial.reduce_sum()); - - let mut longest = local_longest - .iter() - .fold(0.0f32, |acc, new| acc.max(new.reduce_max())); - - let (sum_buf, longest_buf, _) = line_of_sight::( - vs, - rest_elevs, - rest_distances, - rest_adjustments, - prefix, - rest, - pov_height, - ); - - sum += sum_buf - .iter() - .fold(0.0f32, |acc, partial| acc + partial.reduce_sum()); - - longest = longest_buf - .iter() - .fold(longest, |acc, new| acc.max(new.reduce_max())); - - #[expect( - clippy::as_conversions, - clippy::cast_sign_loss, - reason = "result_idx should be in [0, 2^31]" - )] - // safety: it is guaranteed by the rotation kernel that if the index is - // greater than zero that it is in-bounds. This saves ~10% of bounds checks - unsafe { - *heatmap.get_unchecked_mut(result_tvs_id as usize) += sum; - - let old_longest: *mut f32 = longest_line.get_unchecked_mut(result_tvs_id as usize); - *old_longest = (*old_longest).max(longest); - } -} - -/// `precalculate_distances` precalculates earth curvature adjustments and -/// the distance from a particular point (which is just linear) -fn precalculate_distances( - max_los: usize, -) -> (Vec>, Vec>) -where - LaneCount: SupportedLaneCount, -{ - (0..max_los) - .step_by(WIDTH) - .map(|offset| { - #[expect( - clippy::as_conversions, - clippy::cast_possible_wrap, - clippy::cast_possible_truncation, - reason = "WIDTH < 2^31" - )] - let distance_arr: [i32; WIDTH] = array::from_fn(|i| i as i32); - let distances = Simd::from_array(distance_arr); - - #[expect( - clippy::as_conversions, - clippy::cast_possible_wrap, - clippy::cast_possible_truncation, - reason = "WIDTH < 2^31" - )] - let normalized = (distances + Simd::splat(offset as i32)) * Simd::splat(100i32); - - let floats: Simd = normalized.cast(); - - (floats, floats / Simd::splat(EARTH_RADIUS_SQUARED)) - }) - .unzip() -} - -/// `total_viewshed` computes a total viewshed heatmap for a given elevation map, -/// and corresponding indexes to store the rotated data -#[inline] -fn total_viewshed>( - vs: &V, - elevation_map: &[i16], - indexes: &[i32], - max_los: usize, - output_sector_data: bool, -) -> ViewshedAngle -where - LaneCount: SupportedLaneCount, -{ - assert_eq!( - elevation_map.len(), - 2 * max_los * max_los, - "elevations should be 2 * max_los wide, and max_los tall" - ); - - assert_eq!( - indexes.len(), - 2 * max_los * max_los, - "indexes should be 2 * max_los wide, and max_los tall" - ); - - assert_eq!( - max_los % WIDTH, - 0, - "to help the vectorizer, max_los must be a multiple of {WIDTH}" - ); - - let mut sector_data_buf = vec![ - 0i32; - if output_sector_data { - max_los * max_los * max_los - } else { - 0 - } - ]; - let mut heatmap = vec![0.0f32; max_los * max_los]; - let mut longest_line = vec![0.0f32; max_los * max_los]; - let mut sector_data: Option<&mut Vec> = output_sector_data.then_some(&mut sector_data_buf); - - let width = 2 * max_los; - - // precalculate all distances and their spherical earth "adjustments". - // This saves ~33% of effort inside our hot loop - let (distances, adjustments) = precalculate_distances::(max_los); - - let unrolled_angle = UnrolledAngles { - distances: distances.as_chunks::(), - adjustments: adjustments.as_chunks::(), - }; - - for (line, line_indexes, sector_chunk) in izip!( - elevation_map.chunks_exact(width), - indexes.chunks_exact(width), - OptionIter::new( - sector_data - .as_mut() - .map(|sd| sd.chunks_exact_mut(max_los * max_los)) - ), - ) { - for (pov, (&pov_height, &result_dem_id, line_bitmap)) in izip!( - line.iter().take(max_los), - line_indexes.iter().take(max_los), - OptionIter::new(sector_chunk.map(|chunk| chunk.chunks_exact_mut(max_los))) - ) - .enumerate() - { - viewshed( - vs, - pov, - pov_height, - result_dem_id, - max_los, - &mut heatmap, - &mut longest_line, - line, - line_bitmap.map(|bitmap| Indexes { - indexes_in: line_indexes, - indexes_out: bitmap, - }), - &unrolled_angle, - ); - } - } - - ViewshedAngle { - heatmap, - longest_line, - sector_data: sector_data.cloned(), - } -} - -/// `generate_rotation` generates a rotation "map" for a given elevation list -/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) -#[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - clippy::cast_possible_wrap, - clippy::cast_precision_loss, - reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" -)] -fn generate_rotation(elevs: &[i16], angle: f64, max_los: usize) -> (Vec, Vec) { - let width = (max_los * 3) as isize; - - #[expect(clippy::integer_division, reason = "we don't need precision here")] - { - assert_eq!( - elevs.len() as isize % width, - 0, - "Elevations array must be square {}%{width} != 0", - elevs.len(), - ); - let elevations_div_width = elevs.len() as isize / width; - assert_eq!( - elevations_div_width, - width, - "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", - elevs.len() as isize - ); - }; - - let (sin, cos) = (f64::sin(angle.to_radians()), f64::cos(angle.to_radians())); - - #[expect(clippy::integer_division, reason = "we don't need precision here")] - let (x_center, y_center) = (width / 2, width / 2); - - let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); - - for x in (max_los as isize)..(max_los as isize) * 2 { - let x_sin = (x - x_center) as f64 * sin; - let x_cos = (x - x_center) as f64 * cos; - for y in (max_los as isize)..width { - let y_sin = (y - y_center) as f64 * sin; - let y_cos = (y - y_center) as f64 * cos; - - let x_rot = (x_cos - y_sin).round() as isize + y_center; - let y_rot = (y_cos + x_sin).round() as isize + x_center; - - let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); - - rotation.push(new_idx as i32); - } - } - - debug_assert_eq!( - rotation.len() as isize, - max_los as isize * (2 * max_los as isize), - "the rotation should be 2 * max_los wide, max_los tall" - ); - - // map the indexes to their elevations - let elevations = rotation - .iter() - .map(|&idx| { - if idx < 0i32 { - i16::MIN - } else { - #[expect( - clippy::as_conversions, - reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" - )] - #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] - // safety: idx is clamped so a get will always be in-bounds - *unsafe { elevs.get_unchecked(idx as usize) } - } - }) - .collect::>(); - - (rotation, elevations) -} - -/// `ViewshedAngle` holds the cumulative result of a single angle in the `total_viewshed` algorithm -#[derive(Debug)] -struct ViewshedAngle { - /// `heatmap` contains the longest line of sight heatmap for rendering - heatmap: Vec, - /// `longest_line` contains the longest distance for a particular point - longest_line: Vec, - /// `sector_data` holds the visibility calculations for each point in row-major order. - /// elements `[0..max_los)` are for the first point, `[max_los, 2*max_los)` for the second - /// point, and so on. - /// - /// This gets absolutely massive, so we only allocate this if we know for certain we will be using it - sector_data: Option>, -} - -impl ViewshedAngle { - /// `new` creates a new buffer for viewshed results of `heatmap`, - /// `longest_line`, and `sector_data` - fn new(max_los: usize, sector_data: bool) -> Self { - Self { - heatmap: vec![0.0f32; max_los * max_los], - longest_line: vec![0.0f32; max_los * max_los], - sector_data: sector_data.then(|| Vec::with_capacity(max_los * max_los * max_los)), - } - } - - /// `acc` accumulates a single `ViewshedAngle` into another - fn acc(&mut self, other: &Self) { - zip(&mut self.heatmap, &other.heatmap).for_each(|(to, from)| { - *to += *from; - }); - - zip(&mut self.longest_line, &other.longest_line).for_each(|(to, from)| { - *to = (*to).max(*from); - }); - - if let Some(ref mut sector_data) = &mut self.sector_data { - if let Some(other_sector_data) = &other.sector_data { - sector_data.extend_from_slice(other_sector_data); - } - } - } -} - -/// `kernel` is a CPU-based total viewshed kernel. It makes use of image rotation tof -/// optimize the cache locality of all lookups for a total viewshed calculation -fn kernel(elevations: &[i16], max_los_points: usize, angle: usize) -> ViewshedAngle { - assert!(angle < 360, "angle must be [0, 360)"); - let mut start = Instant::now(); - - #[expect( - clippy::as_conversions, - clippy::cast_precision_loss, - reason = "angle is [0,360), not more than 2^54" - )] - let (indexes, rotated_elevations) = generate_rotation(elevations, angle as f64, max_los_points); - - tracing::info!( - "rotated {:?} in {:?}, calculating viewshed", - angle, - start.elapsed() - ); - - start = Instant::now(); - - let vectorized = Vectorized {}; - - #[cfg(target_feature = "avx512f")] - { - let result = total_viewshed::<16, 8, Vectorized>( - &vectorized, - &rotated_elevations, - &indexes, - max_los_points, - false, - ); - tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); - return result; - }; - - #[cfg(all(target_feature = "avx2", target_feature = "avx"))] - { - let result = total_viewshed::<8, 8, Vectorized>( - &vectorized, - &rotated_elevations, - &indexes, - max_los_points, - false, - ); - tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); - return result; - }; - - #[expect( - unreachable_code, - unused_variables, - reason = "conditionally compiled out" - )] - let result = total_viewshed::<4, 8, Vectorized>( - &vectorized, - &rotated_elevations, - &indexes, - max_los_points, - false, - ); - tracing::info!("kernel for {} run in: {:?}", angle, start.elapsed()); - result -} - -/// `multithreaded_kernel` parallelizes CPU kernel calculations for a `core_count` and calculates -/// `num_angles` different angles -pub fn multithreaded_kernel( - elevations_original: &[i16], - max_los_points_original: usize, - num_angles: usize, - core_count: usize, - output_sector_data: bool, -) -> (Vec, Vec, Option>) { - let max_los_points = max_los_points_original.div_ceil(4) * 4; - let dem_width = max_los_points * 3; - let mut elevations_vec = elevations_original.to_vec(); - elevations_vec.resize(dem_width.pow(2), 0); - let elevations = &elevations_vec; - - if max_los_points != max_los_points_original { - tracing::warn!("LoS: {max_los_points_original} to {max_los_points}"); - } - if elevations.len() != elevations_original.len() { - tracing::warn!( - "Elevations array length resized: {} to {}", - elevations_original.len(), - elevations_vec.len() - ); - } - - #[expect( - clippy::expect_used, - reason = "threadpool must be created for program to run" - )] - let pool = ThreadPoolBuilder::new() - .num_threads(core_count) - .build() - .expect("couldn't build threadpool"); - - let mut final_angle = ViewshedAngle::new(max_los_points, output_sector_data); - let angle_mu = &Mutex::new(&mut final_angle); - - pool.install(move || { - (0..num_angles) - .into_par_iter() - .map(|angle| kernel(elevations, max_los_points, angle)) - .for_each(|vs| { - #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] - let mut angle_guard = angle_mu.lock().expect("mutex poisoned"); - - angle_guard.acc(&vs); - }); - }); - - let (heatmap, longest_line, sector) = ( - mem::take(&mut final_angle.heatmap), - mem::take(&mut final_angle.longest_line), - final_angle - .sector_data - .map(|mut sector_data| mem::take(&mut sector_data)), - ); - - (heatmap, longest_line, sector) -} diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs new file mode 100644 index 0000000..97efe20 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -0,0 +1,221 @@ +use crate::cpu::los::{LineOfSight as _, UnrolledLOS}; +use crate::cpu::vector::{VectorLos, DEFAULT_VECTOR_LENGTH}; +use itertools::izip; + +/// `fill_in_elevations` will fill in "blank" elevations from NASA data with the last seen elevation +/// in the line of sight +fn fill_in_elevations(elevs: &[i16], max_los: usize) -> Vec { + elevs + .chunks_exact(2 * max_los) + .flat_map(|line| { + line.iter() + .scan(0, |last_seen, &elevation| match elevation { + i16::MIN => Some(*last_seen), + _ => { + *last_seen = elevation; + Some(elevation) + } + }) + }) + .collect::>() +} + +/// `generate_rotation` generates a rotation "map" for a given elevation list +/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" +)] +fn generate_rotation(elevs: &[i16], angle: f64, max_los: usize) -> (Vec, Vec) { + let width = (max_los * 3) as isize; + + #[expect(clippy::integer_division, reason = "we don't need precision here")] + { + assert_eq!( + elevs.len() as isize % width, + 0, + "Elevations array must be square {}%{width} != 0", + elevs.len(), + ); + let elevations_div_width = elevs.len() as isize / width; + assert_eq!( + elevations_div_width, + width, + "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", + elevs.len() as isize + ); + }; + + let (sin, cos) = (f64::sin(angle.to_radians()), f64::cos(angle.to_radians())); + + #[expect(clippy::integer_division, reason = "we don't need precision here")] + let (x_center, y_center) = (width / 2, width / 2); + + let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); + + for x in (max_los as isize)..(max_los as isize) * 2 { + let x_sin = (x - x_center) as f64 * sin; + let x_cos = (x - x_center) as f64 * cos; + for y in (max_los as isize)..width { + let y_sin = (y - y_center) as f64 * sin; + let y_cos = (y - y_center) as f64 * cos; + + let x_rot = (x_cos - y_sin).round() as isize + y_center; + let y_rot = (y_cos + x_sin).round() as isize + x_center; + + let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); + + rotation.push(new_idx as i32); + } + } + + debug_assert_eq!( + rotation.len() as isize, + max_los as isize * (2 * max_los as isize), + "the rotation should be 2 * max_los wide, max_los tall" + ); + + // map the indexes to their elevations + let elevations = rotation + .iter() + .map(|&idx| { + if idx < 0i32 { + i16::MIN + } else { + #[expect( + clippy::as_conversions, + reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" + )] + #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] + // safety: idx is clamped so a get will always be in-bounds + *unsafe { elevs.get_unchecked(idx as usize) } + } + }) + .collect::>(); + + (rotation, fill_in_elevations(&elevations, max_los)) +} + +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + reason = "so long as max_los < 2^24, the following as conversions are entirely safe" +)] +#[expect( + clippy::integer_division, + reason = "i32 is constructed from (i32, i32) converting back should succeed" +)] +/// `dem_to_pov` turns the `dem_id` to the `pov_id` so that the result can be stored in a heatmap +const fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { + let dem_x = (dem_id / width as i32) - max_los as i32; + let dem_y = (dem_id % width as i32) - max_los as i32; + + let radius = max_los as i32 / 2i32; + let circ_x = dem_x - radius; + let circ_y = dem_y - radius; + + let dist = (circ_x.pow(2) + circ_y.pow(2)).isqrt(); + if dist < radius { + dem_x * (max_los as i32) + dem_y + } else { + -1 + } +} + +/// `kernel` will calculate the longest line of sight heatmap for a given angle and elevation map +/// assuming that the maximum line of sight is `max_los` +#[expect( + clippy::inline_always, + reason = "I am become Death, destroyer of compilers" +)] // the real reason is that I need output_sector_data to be constant propagated +#[inline(always)] +pub fn kernel( + elevation_map: &[i16], + max_los: usize, + angle: f32, + output_sector_data: bool, +) -> (Vec, Vec, Vec>) { + let mut heatmap = vec![0.0f32; max_los * max_los]; + let mut longest = vec![0.0f32; max_los * max_los]; + + let mut sector_data: Vec> = vec![ + vec![]; + if output_sector_data { + max_los * max_los + } else { + 0 + } + ]; + + let (indexes, rotated_elevations) = generate_rotation(elevation_map, f64::from(angle), max_los); + + assert_eq!( + rotated_elevations.len(), + 2 * max_los * max_los, + "elevations should be 2 * max_los wide, and max_los tall" + ); + + let width = 2 * max_los; + + let mut vs = UnrolledLOS::<64>::new(max_los); + for (line, line_indexes) in izip!( + rotated_elevations.chunks_exact(width), + indexes.chunks_exact(width), + ) { + for (pov, (&pov_height, &result_dem_id)) in + izip!(line.iter().take(max_los), line_indexes.iter().take(max_los)).enumerate() + { + let result_tvs_id = dem_to_pov(result_dem_id, 3 * max_los, max_los); + + // if the line of sight is not within our computable points, do not consider it + #[expect( + clippy::as_conversions, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + reason = "max_los^2 < 2^31" + )] + if result_tvs_id < 0i32 || result_tvs_id >= (max_los * max_los) as i32 { + continue; + } + + let neighbor = pov + 1; + + #[expect( + clippy::indexing_slicing, + reason = "if slicing is out of bounds, it should panic" + )] + let (pixel, long, sector) = vs.line_of_sight::>( + f32::from(pov_height), + &line[neighbor..neighbor + max_los], + output_sector_data, + ); + + #[expect( + clippy::as_conversions, + clippy::cast_sign_loss, + clippy::indexing_slicing, + reason = "max_los^2 < 2^31" + )] + { + // safety: result_tvs_id is guaranteed to be within [0..max_los^2) + unsafe { + *heatmap.get_unchecked_mut(result_tvs_id as usize) = pixel; + }; + // safety: result_tvs_id is guaranteed to be within [0..max_los^2) + unsafe { + *longest.get_unchecked_mut(result_tvs_id as usize) = long; + }; + + if output_sector_data { + sector_data[result_tvs_id as usize] = sector; + } + } + } + } + + (heatmap, longest, sector_data) +} diff --git a/crates/total-viewsheds/src/cpu/los.rs b/crates/total-viewsheds/src/cpu/los.rs new file mode 100644 index 0000000..b882748 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/los.rs @@ -0,0 +1,282 @@ +use itertools::izip; + +/// `LineOfSight` abstracts the implementation of line of sight calculations to +/// any "carry through" that can be materialized into a (f32, f32). +pub trait LineOfSight> { + /// `line_of_sight` calculates a line of sight for the given `pov_height` + /// and outputs a triple of the surface area, longest line of sight in meters + /// and a vector of bools of which + fn line_of_sight( + &mut self, + pov_height: f32, + line: &[i16], + output_sector: bool, + ) -> (f32, f32, Vec) + where + LOS: Angle + PrefixMax + Accumulate; +} + +/// `Angle` abstracts the angle calculation between a pov and all the elevation data within +/// its band of sight +pub trait Angle { + /// `calculate_angles` calculates the angle from the `pov_height` to a given elevation + fn calculate_angles( + pov_height: f32, + elevations: &[i16], + distances: &[f32], + adjustments: &[f32], + angles_out: &mut [f32], + ); +} + +/// `Accumulate` accumulates the surface area visible and longest line of sight +/// in a pair of (f32, f32). `Accumulate` doesn't care about the implementation details +/// of accumulation so long as the `Output` type can be materialized to (f32, f32) +pub trait Accumulate> { + /// `accumulate` accumulates the surface area using the distances by comparing + /// whether a point at a distance is visible (angle > prefix) + /// If `output_sector` is true, it should output a bitmap of which distances are visible + /// at their respective locations + fn accumulate( + init: Output, + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + output_sector: bool, + ) -> Output; +} + +/// `PrefixMax` calculates the prefix maximum of the given angles +pub trait PrefixMax { + /// `prefix_max` calculates the prefix max of the + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]); +} + +/// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters +const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; + +/// `generate_distances` generates the distance from +#[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "max_los is < 2^24" +)] +fn generate_distances(max_los: usize) -> (Vec, Vec) { + (1..=max_los) + .map(|step| { + ( + (step * 100) as f32, + (step * 100) as f32 / EARTH_RADIUS_SQUARED, + ) + }) + .unzip() +} + +/// `StraightLine` contains the distances and round-earth adjustments needed to compute +/// the longest line of sight. +pub struct StraightLine { + /// `max_los` is the longest possible line of sight in 100ms + max_los: usize, + /// `angles` is a buffer of size `max_los` to store all angle calculations in + angles: Vec, + /// `prefix_max` is a buffer of size `max_los` to store the inclusive prefix max calculation in + prefix_max: Vec, + /// `distances` holds the distances in meters for every step between 100m and + distances: Vec, + /// `adjustments` holds earth curvature adjustments in meters for every step between 100m and + adjustments: Vec, +} + +impl StraightLine { + /// new constructs a new `StraightLine` given the maximum line of sight in `max_los` + #[expect(unused, reason = "this is generally only for testing/benchmarking")] + pub fn new(max_los: usize) -> Self { + let (distances, adjustments) = generate_distances(max_los); + Self { + max_los, + angles: vec![0.0f32; max_los + 1], + prefix_max: vec![0.0f32; max_los], + distances, + adjustments, + } + } +} + +impl LineOfSight<(f32, f32)> for StraightLine { + #[expect( + clippy::indexing_slicing, + reason = "all indexing and slices are guaranteed by construction of a StraightLine" + )] + fn line_of_sight( + &mut self, + pov_height: f32, + line: &[i16], + output_sector: bool, + ) -> (f32, f32, Vec) + where + LOS: PrefixMax + Angle + Accumulate<(f32, f32)>, + { + let mut output: Vec = vec![]; + + self.angles[0] = -2000.0; + + LOS::calculate_angles( + pov_height, + line, + &self.distances, + &self.adjustments, + &mut self.angles[1..], + ); + + LOS::prefix_max( + -2000.0f32, + &self.angles[..self.max_los], + &mut self.prefix_max, + ); + + let (heatmap, longest) = LOS::accumulate( + (0.0, 0.0), + &self.angles[1..], + &self.prefix_max, + &self.distances, + &mut output, + output_sector, + ); + + (heatmap, longest, output) + } +} + +/// Unroll holds an unrolled heatmap and unrolled longest line of sight calculation +/// Since in Line of Sight-land max/addition are commutative, then Unroll will be materialized +/// into (f32, f32) +pub struct Unroll { + /// `heatmap` contains the summation of visible surface areas which will be reduced to a single + /// surface area at the end + pub heatmap: [f32; UNROLL], + /// `longest` contains many long lines of sight which will be reduced to a single + /// line of sight at the end + pub longest: [f32; UNROLL], +} + +/// `UnrolledLOS` implements an Unrolled `LineOfSight` calculation +pub struct UnrolledLOS +where + [(); UNROLL + 1]:, +{ + /// `distances` holds `max_los` distances + distances: Vec, + /// `adjustments` holds `max_los` earth curvature adjustments + adjustments: Vec, +} + +impl From> for (f32, f32) { + default fn from(val: Unroll) -> Self { + let heatmap = val.heatmap.iter().sum(); + let longest = val.longest.iter().fold(0.0f32, |acc, &elem| acc.max(elem)); + (heatmap, longest) + } +} + +impl UnrolledLOS +where + [(); UNROLL + 1]:, +{ + /// `new` initializes a new `UnrolledLOS`, and precalculates all the distances + /// and earth curvature adjustments + pub fn new(max_los: usize) -> Self { + let (distances, adjustments) = generate_distances(max_los); + + Self { + distances, + adjustments, + } + } +} + +impl LineOfSight> for UnrolledLOS +where + [(); UNROLL + 1]:, +{ + #[inline] + #[expect( + clippy::indexing_slicing, + reason = "all indexing and slices are guaranteed by construction of a UnrolledLOS" + )] + fn line_of_sight( + &mut self, + pov_height: f32, + line: &[i16], + output_sector: bool, + ) -> (f32, f32, Vec) + where + LOS: Angle + PrefixMax + Accumulate>, + { + let mut angles = [0.0f32; UNROLL + 1]; + let mut prefix_max = [0.0f32; UNROLL]; + + prefix_max[UNROLL - 1] = -2000.0; + angles[0] = -2000.0; + + let mut output: Vec = vec![]; + + let (chunked_line, rest_line) = line.as_chunks::<{ UNROLL }>(); + + let (chunked_distances, rest_distances) = self.distances.as_chunks::<{ UNROLL }>(); + + let (chunked_adjustments, rest_adjustments) = self.adjustments.as_chunks::<{ UNROLL }>(); + + let los = izip!(chunked_line, chunked_distances, chunked_adjustments).fold( + Unroll:: { + longest: [0.0; UNROLL], + heatmap: [0.0; UNROLL], + }, + |acc, (unroll_line, distances, adjusts)| { + LOS::calculate_angles( + pov_height, + unroll_line, + distances, + adjusts, + &mut angles[1..], + ); + + LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); + + let new_acc = LOS::accumulate( + acc, + &angles[1..], + &prefix_max, + distances, + &mut output, + output_sector, + ); + + angles[0] = angles[UNROLL]; + new_acc + }, + ); + + LOS::calculate_angles( + pov_height, + rest_line, + rest_distances, + rest_adjustments, + &mut angles[1..], + ); + + LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); + + let new_acc = LOS::accumulate( + los, + &angles[1..], + &prefix_max, + rest_distances, + &mut output, + output_sector, + ); + + let (heatmap, longest) = new_acc.into(); + (heatmap, longest, output) + } +} diff --git a/crates/total-viewsheds/src/cpu/mod.rs b/crates/total-viewsheds/src/cpu/mod.rs new file mode 100644 index 0000000..e49a6f1 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/mod.rs @@ -0,0 +1,9 @@ +/// los contains all the traits necessary for implementing a line of sight algorithm +mod los; + +/// vector contains vectorized implementations of the line of sight traits +mod vector; + +/// kernel is the exported kernel module +mod kernel; +pub use kernel::kernel; diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs new file mode 100644 index 0000000..cd50b05 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -0,0 +1,557 @@ +use itertools::izip; +use std::iter::zip; +use std::simd::cmp::SimdPartialOrd as _; +use std::simd::num::SimdFloat as _; +use std::simd::prelude::SimdInt as _; +use std::simd::{f32x4, f32x8, LaneCount, Mask, Simd, SupportedLaneCount}; + +/// `TAN_ONE_RAD` is used in normalizing the +const TAN_ONE_RAD: f32 = 0.017_453_3; + +use crate::cpu::los::{Accumulate, Angle, PrefixMax, Unroll}; + +/// `VectorMax` performs an element-wise SIMD max of floats, allowing for architecture +/// specific implementations +trait VectorMax +where + LaneCount: SupportedLaneCount, +{ + /// `max` computes an element-wise maximum from lhs and rhs, assuming neither contain NaNs + /// or -0.0 + fn max(lhs: Simd, rhs: Simd) -> Simd; +} + +/// `VectorGreater` performs a SIMD greater than of floats, allowing for architecture +/// specific implementations +trait VectorGreater +where + LaneCount: SupportedLaneCount, +{ + /// gt computes an element-wise maximum from lhs and rhs, assuming neither contain NaNs + /// or -0.0 + fn gt(lhs: Simd, rhs: Simd) -> Mask; +} + +/// `VectorLos` is an implementation of the internals of `PrefixMax`, `Angle`, and `Accumulate` +/// for Portable SIMD +pub struct VectorLos +where + LaneCount: SupportedLaneCount; + +impl VectorMax for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn max(lhs: Simd, rhs: Simd) -> Simd { + lhs.simd_max(rhs) + } +} + +impl VectorGreater for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn gt(lhs: Simd, rhs: Simd) -> Mask { + lhs.simd_gt(rhs) + } +} + +#[cfg(target_feature = "sse")] +impl VectorMax<4> for VectorLos<4> { + #[inline] + fn max(lhs: f32x4, rhs: f32x4) -> f32x4 { + use std::arch::x86_64::_mm_max_ps; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm_max_ps(lhs.into(), rhs.into()) }.into() + } +} + +#[cfg(target_feature = "avx")] +impl VectorGreater<4> for VectorLos<4> { + fn gt(lhs: f32x4, rhs: f32x4) -> Mask { + use std::arch::x86_64::{_mm_castps_si128, _mm_cmp_ps, _CMP_GT_OS}; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm_castps_si128(_mm_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); + Mask::::from_int_unchecked(mask.into()) + } + } +} + +impl PrefixMax for VectorLos<4> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + let (vector_angles, _) = angles_in.as_chunks::<4>(); + let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); + + for (prefix, &angle) in zip(vector_prefix.iter_mut(), vector_angles.iter()) { + let start = Simd::from(angle); + + let mut v_prefix_max = { + let shifted = start.shift_elements_right::<1>(-2000.0f32); + Self::max(start, shifted) + }; + + v_prefix_max = { + let shifted = v_prefix_max.shift_elements_right::<2>(-2000.0f32); + Self::max(v_prefix_max, shifted) + }; + + v_prefix_max.copy_to_slice(prefix); + } + + let mut local_acc = Simd::splat(highest); + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in vector_prefix { + let cur_prefix: f32x4 = Simd::from(*prefix); + let cur_max: f32x4 = Simd::splat(cur_prefix[3]); + + Self::max(local_acc, cur_prefix).copy_to_slice(prefix); + local_acc = Self::max(local_acc, cur_max); + } + } +} + +#[cfg(target_feature = "avx")] +impl VectorMax<8> for VectorLos<8> { + #[inline] + fn max(lhs: f32x8, rhs: f32x8) -> f32x8 { + use std::arch::x86_64::_mm256_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" +))] +impl PrefixMax for VectorLos<8> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + use std::arch::x86_64::{ + _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_slli_si256, + _mm_max_ps, + }; + + debug_assert!( + angles_in.len().is_multiple_of(8) && angles_in.len() == angles_out.len(), + "inconsistent lengths, buffer must be multiple of vector length" + ); + { + let (vector_angles, _) = angles_in.as_chunks::<8>(); + let (vector_prefix, _) = angles_out.as_chunks_mut::<8>(); + + izip!(vector_prefix.iter_mut(), vector_angles.iter()).for_each(|(prefix, &angle)| { + let start = Simd::from_array(angle); + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + let mut v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<4>(_mm256_castps_si256(start.into())); + let blended = _mm256_blend_ps::<0b0001_0001>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + Self::max(start, blended.into()) + }; + + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + v_prefix_max = unsafe { + let shifted = _mm256_slli_si256::<8>(_mm256_castps_si256(v_prefix_max.into())); + let blended = _mm256_blend_ps::<0b0011_0011>( + _mm256_castsi256_ps(shifted), + Simd::splat(-2000.0f32).into(), + ); + + Self::max(v_prefix_max, blended.into()) + }; + + v_prefix_max.copy_to_slice(prefix); + }); + }; + + { + let mut acc: f32x4 = Simd::splat(highest); + let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); + for prefix in vector_prefix.iter_mut() { + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + let new_max: f32x4 = + unsafe { _mm_max_ps(Simd::from_array(*prefix).into(), acc.into()) }.into(); + + let cur_max = Simd::splat(prefix[3]); + + // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions + acc = unsafe { _mm_max_ps(acc.into(), cur_max.into()).into() }; + + new_max.copy_to_slice(prefix); + } + } + } +} + +#[cfg(target_feature = "avx")] +impl VectorGreater<8> for VectorLos<8> { + #[inline] + fn gt(lhs: f32x8, rhs: f32x8) -> Mask { + use std::arch::x86_64::{_mm256_castps_si256, _mm256_cmp_ps, _CMP_GT_OS}; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm256_castps_si256(_mm256_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); + Mask::::from_int_unchecked(mask.into()) + } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorMax<16> for VectorLos<16> { + #[inline] + fn max(lhs: Simd, rhs: Simd) -> Simd { + use std::arch::x86_64::_mm512_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorGreater<16> for VectorLos<16> { + #[inline] + fn gt(lhs: Simd, rhs: Simd) -> Mask { + use std::arch::x86_64::_mm512_cmple_ps_mask; + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm512_cmple_ps_mask(lhs.into(), rhs.into()); + Mask::::from_bitmask(mask.into()) + } + } +} + +#[cfg(target_feature = "avx512f")] +impl PrefixMax for VectorLos<16> { + #[inline] + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + use std::arch::x86_64::{ + __m512, _mm512_alignr_epi32, _mm512_castps_si512, _mm512_castsi512_ps, _mm512_max_ps, + }; + use std::simd::f32x16; + + #[cfg(target_feature = "avx512f")] + #[expect( + clippy::cast_sign_loss, + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + reason = "K is always in bounds" + )] + fn mm512_slli_si512(elem: __m512) -> __m512 + where + [(); { (16 - K) as i32 } as usize]:, + { + // safety: all mm512 intrinsics are guarded by avx512f + unsafe { + let zero = f32x16::splat(-2000.0f32); + _mm512_castsi512_ps(_mm512_alignr_epi32::<{ (16 - K) as i32 }>( + _mm512_castps_si512(elem), + _mm512_castps_si512(zero.into()), + )) + } + } + + let (vector_prefix, _) = angles_out.as_chunks_mut::<16>(); + let (vector_angle, _) = angles_in.as_chunks::<16>(); + + for (prefix, &angle) in zip(vector_prefix.iter_mut(), vector_angle.iter()) { + let simd_angle = Simd::from_array(angle); + // safety: all the following operations are guarded by the avx512f build falg + unsafe { + let mut v_prefix_max = + _mm512_max_ps(simd_angle.into(), mm512_slli_si512::<1>(simd_angle.into())); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<2>(v_prefix_max)); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<4>(v_prefix_max)); + + v_prefix_max = _mm512_max_ps(v_prefix_max, mm512_slli_si512::<8>(v_prefix_max)); + + let simd_prefix_max: f32x16 = v_prefix_max.into(); + simd_prefix_max.copy_to_slice(prefix); + } + } + + let mut local_acc = f32x16::splat(highest); + + // accumulate the prefix maxes for blocks, re-computing all prefix maxes + // to include the accumulated value + for prefix in vector_prefix.iter_mut() { + let cur_prefix: f32x16 = Simd::from_array(*prefix); + let cur_max: f32x16 = Simd::splat(cur_prefix[15]); + + Self::max(local_acc, cur_prefix).copy_to_slice(prefix); + local_acc = Self::max(local_acc, cur_max); + } + } +} + +impl Angle for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + default fn calculate_angles( + pov_height: f32, + elevations: &[i16], + distances: &[f32], + adjustments: &[f32], + angles_out: &mut [f32], + ) { + debug_assert!( + elevations.len().is_multiple_of(WIDTH), + "expected elevations to be a multiple of {WIDTH}", + ); + + debug_assert!( + distances.len().is_multiple_of(WIDTH), + "expected distances to be a multiple of {WIDTH}", + ); + + debug_assert!( + adjustments.len().is_multiple_of(WIDTH), + "expected adjustments to be a multiple of {WIDTH}", + ); + + debug_assert!( + angles_out.len().is_multiple_of(WIDTH), + "expected angles buf to be a multiple of {WIDTH}", + ); + + let (vector_angles, _) = angles_out.as_chunks_mut::<{ WIDTH }>(); + let (vector_elevations, _) = elevations.as_chunks::<{ WIDTH }>(); + let (vector_adjustments, _) = adjustments.as_chunks::<{ WIDTH }>(); + let (vector_distances, _) = distances.as_chunks::<{ WIDTH }>(); + + for (angle, &elevation, &distance, &adjustment) in izip!( + vector_angles.iter_mut(), + vector_elevations.iter(), + vector_distances.iter(), + vector_adjustments.iter() + ) { + let float_elevation: Simd = Simd::from(elevation).cast(); + + let adjusted = float_elevation - Simd::splat(pov_height); + + let res = (adjusted / Simd::from_array(distance)) - Simd::from_array(adjustment); + + res.copy_to_slice(angle); + } + } +} + +impl Accumulate<(f32, f32)> for VectorLos +where + LaneCount: SupportedLaneCount, +{ + #[inline] + fn accumulate( + init: (f32, f32), + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + output_sector: bool, + ) -> (f32, f32) { + debug_assert!(angles.len().is_multiple_of(WIDTH), ""); + debug_assert!(prefix.len().is_multiple_of(WIDTH), ""); + debug_assert!(distances.len().is_multiple_of(WIDTH), ""); + + let (vector_angles, _) = angles.as_chunks::<{ WIDTH }>(); + let (vector_prefix, _) = prefix.as_chunks::<{ WIDTH }>(); + let (vector_dists, _) = distances.as_chunks::<{ WIDTH }>(); + + izip!(vector_angles, vector_prefix, vector_dists,).fold( + init, + |acc, (&angle_arr, &prefix_arr, &distances_arr)| { + let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); + if output_sector { + bitmap.extend(mask.to_array()); + } + + if !mask.any() { + return acc; + } + + let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); + ( + acc.0 + (dist * Simd::::splat(TAN_ONE_RAD)).reduce_sum(), + acc.1.max(dist.reduce_max()), + ) + }, + ) + } +} + +/// `GenericExpr` lets a const generic expression be evaluated in its +/// `CONDITION` parameter for traits that need to evaluate constant expressions +/// as part of their trait bounds +struct GenericExpr; + +/// `IsTrue `is a "marker" trait for trait bounds for when a const generic expr +/// evaluates to true, and is only implemented for `GenericExpr<{true}>` +trait IsTrue {} +impl IsTrue for GenericExpr {} + +impl Accumulate> for VectorLos +where + LaneCount: SupportedLaneCount, + GenericExpr<{ SIZE.is_multiple_of(WIDTH) }>: IsTrue, +{ + #[inline] + fn accumulate( + mut init: Unroll, + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + output_sector: bool, + ) -> Unroll { + debug_assert!( + angles.len().is_multiple_of(WIDTH), + "distance unroll should be multiple of width" + ); + debug_assert!( + prefix.len().is_multiple_of(WIDTH), + "distance unroll should be multiple of width" + ); + debug_assert!( + distances.len().is_multiple_of(WIDTH), + "distance unroll should be multiple of width" + ); + debug_assert!(angles.len() <= SIZE, "angles must be less than unroll size"); + + let (vector_sum, _) = init.heatmap.as_chunks_mut::<{ WIDTH }>(); + let (vector_longest, _) = init.longest.as_chunks_mut::<{ WIDTH }>(); + + let (vector_angles, _) = angles.as_chunks::<{ WIDTH }>(); + let (vector_prefix, _) = prefix.as_chunks::<{ WIDTH }>(); + let (vector_dists, _) = distances.as_chunks::<{ WIDTH }>(); + + izip!( + vector_sum, + vector_longest, + vector_angles, + vector_prefix, + vector_dists, + ) + .for_each( + |(sum_arr, longest_arr, &angle_arr, &prefix_arr, &distances_arr)| { + let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); + + if output_sector { + bitmap.extend(mask.to_array()); + } + + if !mask.any() { + return; + } + + let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); + + Self::max(Simd::from_array(*longest_arr), dist).copy_to_slice(longest_arr); + + let acc = Simd::from(*sum_arr) + dist; + + acc.copy_to_slice(sum_arr); + }, + ); + + init + } +} + +/// `DEFAULT_VECTOR_LENGTH` determines the CPU Kernel's default vector length based off +/// the architecture that the binary is built for +pub const DEFAULT_VECTOR_LENGTH: usize = const { + if cfg!(target_feature = "avx512f") { + 16 + } else if cfg!(target_feature = "sse") && cfg!(target_feature = "sse2") { + 8 + } else { + 4 + } +}; + +impl From> for (f32, f32) +where + GenericExpr<{ UNROLL.is_multiple_of(DEFAULT_VECTOR_LENGTH) }>: IsTrue, +{ + fn from(val: Unroll) -> Self { + let (heatmap, _) = val.heatmap.as_chunks::(); + let (longest, _) = val.longest.as_chunks::(); + + let heat = heatmap + .iter() + .fold(Simd::splat(0.0f32), |acc, &heat| { + acc + Simd::from_array(heat) + }) + .reduce_sum(); + + let long = longest + .iter() + .fold(Simd::splat(0.0f32), |acc, &long| { + VectorLos::::max(acc, Simd::from_array(long)) + }) + .reduce_max(); + + (heat, long) + } +} + +#[cfg(test)] +mod test { + use crate::cpu::los::{LineOfSight as _, UnrolledLOS}; + use crate::cpu::vector::VectorLos; + + #[test] + fn line_of_sight_four() { + let mut vs = UnrolledLOS::<64>::new(16); + let (visibility, longest, sector) = vs.line_of_sight::>( + 0.0f32, + &[ + 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, 1000, 4000, 9000, 12000, 3000, + 30000, 3000, 3000, + ], + true, + ); + println!("{:?} {:?} {:?}", visibility, longest, sector); + } + + #[test] + #[cfg(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" + ))] + fn line_of_sight_eight() { + let mut vs = UnrolledLOS::<64>::new(16); + let (visibility, longest, sector) = vs.line_of_sight::>( + 0.0f32, + &[ + 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, 1000, 4000, 9000, 12000, 3000, + 30000, 3000, 3000, + ], + true, + ); + println!("{:?} {:?} {:?}", visibility, longest, sector); + } +} diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index c55cd38..68803dc 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,5 +1,6 @@ //! Total Viewshed Calculator #![feature(portable_simd)] +#![feature(specialization)] #![expect( incomplete_features, reason = "our usage isn't crazy and unlikely to break" @@ -47,7 +48,10 @@ mod output { pub mod ring_data; pub mod viewshed; } + +/// cpu implements a CPU kernel for the longest line of sight mod cpu; + mod projection; fn main() -> Result<()> { diff --git a/scripts/apt_init.sh b/scripts/apt_init.sh index a4a64a6..ad5ed7f 100644 --- a/scripts/apt_init.sh +++ b/scripts/apt_init.sh @@ -2,6 +2,7 @@ sudo apt install -y git clang curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source ~/.bashrc git clone https://github.com/AllTheLines/CacheTVS -cd CacheTVS && git checkout cpu-clean +cd CacheTVS && git checkout rberger/cpu-clean From 83f798cde9bce3e0afbcad327022feb730eb4d8d Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Tue, 30 Dec 2025 22:52:55 -0800 Subject: [PATCH 04/27] feat: add a method of creating a default unroll --- crates/total-viewsheds/src/cpu/kernel.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs index 97efe20..04f82b4 100644 --- a/crates/total-viewsheds/src/cpu/kernel.rs +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -126,6 +126,22 @@ const fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { } } +/// `DEFAULT_UNROLL` is the default loop unrolling constant, which is based +/// off of the default vector length. 8-way unrolling for both the 4 and 8 wide +/// vectors, and 10-way unrolling for the 16-wide vector as it is optimal for Turins +const DEFAULT_UNROLL: usize = const { + match DEFAULT_VECTOR_LENGTH { + 4 => 32, + 8 => 64, + 16 => 160, + #[expect( + clippy::unreachable, + reason = "no one should be setting any other constants" + )] + _ => unreachable!(), + } +}; + /// `kernel` will calculate the longest line of sight heatmap for a given angle and elevation map /// assuming that the maximum line of sight is `max_los` #[expect( @@ -161,7 +177,7 @@ pub fn kernel( let width = 2 * max_los; - let mut vs = UnrolledLOS::<64>::new(max_los); + let mut vs = UnrolledLOS::::new(max_los); for (line, line_indexes) in izip!( rotated_elevations.chunks_exact(width), indexes.chunks_exact(width), From 64bca7e5aa1563fb21931c1c9907c0fcecfd97e3 Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Sat, 3 Jan 2026 18:59:28 -0300 Subject: [PATCH 05/27] fix: make main kernel loop range exclusive (#30) This reduces the distance searched for in every line of sight by one elevation less. This is more accurate and consistent with other approaches. No changes to viewsheds in tests or benchmarks. But total surfaces are reduced. --- crates/kernels/vulkan-and-cpu/kernel.spv | Bin 16516 -> 16120 bytes crates/kernels/vulkan-and-cpu/src/kernel.rs | 22 ++++++++++---------- crates/total-viewsheds/src/compute.rs | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/crates/kernels/vulkan-and-cpu/kernel.spv b/crates/kernels/vulkan-and-cpu/kernel.spv index 67baf5120137b544424bd1a9d4ebcbf0aa49d0ca..ed3776559b7a63c515c180a1ef3f66d50fdf0826 100644 GIT binary patch literal 16120 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 literal 16516 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, [ 0.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 5.0, 0.0, - 0.0, 5.0, 5.0, 0.0, + 0.0, 1.0, 4.0, 0.0, + 0.0, 4.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -618,7 +618,7 @@ pub mod test { .collect::>(), [ 0, 0, 0, 0, - 0, 0, 0, 0, + 0, 0, 12, 0, 0, 180, 0, 0, 0, 0, 0, 0 ] From 990997a3f6846bd461f0526c204f182be32d1049 Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Sat, 3 Jan 2026 20:09:47 -0300 Subject: [PATCH 06/27] tests: Integrate viewsheds tests into CPU kernel (#29) * tests: Integrate viewshed tests into CPU kernel Search for TODO@ryan for remaining tasks. * inline both calls * fix more rotation issues * enable ring data feature for benchmark * fmt * fix some lints, reformat * pass all unit tests, add in refraction * put test above all on default vector length * fix cfg blocks * fix prefix max carry through * fix formatting * reignore tests * fix non-sse build * remove unnecessary carry through --------- Co-authored-by: Ryan Berger --- .github/workflows/ci.yaml | 12 +- benchmarks/cpu-cardiff.json | 1 + benchmarks/run.sh | 45 +- benchmarks/vulkan-cpu-cardiff.json | 1 + .../{cardiff.json => vulkan-gpu-cardiff.json} | 0 crates/kernels/vulkan-and-cpu/src/kernel.rs | 2 +- crates/total-viewsheds/Cargo.toml | 3 + crates/total-viewsheds/src/cpu/kernel.rs | 169 +++----- crates/total-viewsheds/src/cpu/los.rs | 132 +----- crates/total-viewsheds/src/cpu/mod.rs | 4 +- crates/total-viewsheds/src/cpu/rotation.rs | 150 +++++++ crates/total-viewsheds/src/cpu/vector.rs | 116 +++-- crates/total-viewsheds/src/main.rs | 12 +- crates/total-viewsheds/src/output/ascii.rs | 10 +- .../total-viewsheds/src/output/ring_data.rs | 121 ++++++ crates/total-viewsheds/src/output/viewshed.rs | 133 ++++-- crates/total-viewsheds/src/run/compute.rs | 398 ++++++++++++++++++ crates/total-viewsheds/src/run/parallel.rs | 175 ++++++++ crates/total-viewsheds/src/run/serial.rs | 206 +++++++++ 19 files changed, 1331 insertions(+), 359 deletions(-) create mode 100644 benchmarks/cpu-cardiff.json create mode 100644 benchmarks/vulkan-cpu-cardiff.json rename benchmarks/{cardiff.json => vulkan-gpu-cardiff.json} (100%) create mode 100644 crates/total-viewsheds/src/cpu/rotation.rs create mode 100644 crates/total-viewsheds/src/run/compute.rs create mode 100644 crates/total-viewsheds/src/run/parallel.rs create mode 100644 crates/total-viewsheds/src/run/serial.rs diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 24ddbdc..9eb38ec 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: Rust +name: CI on: push: @@ -22,6 +22,7 @@ jobs: build-test: name: Build and Test 🔬 strategy: + fail-fast: false matrix: arch: [x86_64, aarch64] runner: [ubuntu-latest] @@ -66,6 +67,10 @@ jobs: e2e: name: End to end tests + strategy: + fail-fast: false + matrix: + backend: [cpu, vulkan-cpu, vulkan] runs-on: ubuntu-latest steps: @@ -83,10 +88,11 @@ jobs: mesa-vulkan-drivers \ libvulkan1 \ vulkan-tools \ - vulkan-validationlayers + vulkan-validationlayers \ + gdal-bin vulkaninfo - name: Run end to end tests - run: ./benchmarks/run.sh + run: ./benchmarks/run.sh ${{ matrix.backend }} lints: name: "Lints 💅" diff --git a/benchmarks/cpu-cardiff.json b/benchmarks/cpu-cardiff.json new file mode 100644 index 0000000..3f1e0ac --- /dev/null +++ b/benchmarks/cpu-cardiff.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[-3.3564150078447472,51.46777944512569],[-3.3557575896302696,51.46523921700127],[-3.354339095049023,51.46539037438293],[-3.3549924284124226,51.46791512131131],[-3.3564150078447472,51.46777944512569]]],[[[-3.3478794047054166,51.46859324332865],[-3.3472464824528236,51.46614590439454],[-3.3444093714812357,51.46644799631055],[-3.3450341361851073,51.46886437103278],[-3.3478794047054166,51.46859324332865]]],[[[-3.343611489278949,51.46899990912944],[-3.3429908023844406,51.46659901638458],[-3.340153635219643,51.46690100531558],[-3.3407661701781843,51.46927093353671],[-3.343611489278949,51.46899990912944]]],[[[-3.3094191502981523,51.537805687089346],[-3.3080861954746568,51.53746383819622],[-3.3067278271877596,51.53947352608531],[-3.3080510582485947,51.53982984839291],[-3.3094191502981523,51.537805687089346]]],[[[-3.306753260182827,51.537121974141336],[-3.3054203448639004,51.536780095198694],[-3.304081701681347,51.538760430259195],[-3.302758532205134,51.538404066690994],[-3.301374398893944,51.540355552427904],[-3.302687438379504,51.54072628140756],[-3.3040816522688887,51.53876050357212],[-3.304081427065243,51.53876083636486],[-3.30540461679358,51.53911718883391],[-3.306753260182827,51.537121974141336]]],[[[-3.3029270496532916,51.518692137326475],[-3.2987401161406398,51.51802335271285],[-3.2979272999185443,51.519934165427514],[-3.3020950473511523,51.52064847472703],[-3.3029270496532916,51.518692137326475]]],[[[-3.3027545745805265,51.53609629127967],[-3.3000888837487112,51.53541242671804],[-3.2987891411753116,51.53733488414837],[-3.2961429864696536,51.536622021441055],[-3.2948097779263854,51.5385013268149],[-3.293496868689499,51.538130513382406],[-3.2921217127243216,51.53998073182554],[-3.2908193618476465,51.539595656337625],[-3.2894033429077103,51.54141662442124],[-3.287936674540361,51.54322162271178],[-3.285376574390068,51.54239514865043],[-3.283882536044338,51.54415660447578],[-3.2838825391275233,51.544156605568745],[-3.282339857349679,51.54590089578278],[-3.2807479721938475,51.54762864873868],[-3.283235389849409,51.54853764169902],[-3.284852041545615,51.54678290485175],[-3.2873645639420115,51.54766460731465],[-3.2889559310524294,51.54586504563717],[-3.2902243346625806,51.54629211993515],[-3.291776692134781,51.54446160576062],[-3.293056852302406,51.54487478516136],[-3.2945689619478955,51.54301360667212],[-3.2958604756805006,51.5434127617659],[-3.297331055596334,51.541521284641306],[-3.298633524769229,51.541906293472294],[-3.3000613750221333,51.539984807368896],[-3.3000613807467243,51.53998480900603],[-3.3000615290499935,51.539984600044036],[-3.3000616489463743,51.53998443857789],[-3.300061644542428,51.53998443721306],[-3.301435099926422,51.53804808469291],[-3.3014351091727843,51.53804808714751],[-3.301435330891711,51.538047759028146],[-3.301435381634692,51.53804768763436],[-3.301435379873174,51.53804768708844],[-3.3027545745805265,51.53609629127967]]],[[[-3.3012087228255558,51.52259467514235],[-3.2998262760444055,51.522341491463294],[-3.298892429393649,51.524263480256955],[-3.3002676337010857,51.52453169036686],[-3.3012087228255558,51.52259467514235]]],[[[-3.3004294652297204,51.47112201031613],[-3.2998766769231502,51.4691913540008],[-3.2984622963434247,51.46935727763123],[-3.2990106049186996,51.47127249518871],[-3.3004294652297204,51.47112201031613]]],[[[-3.2978608407310146,51.46744908226382],[-3.2972059497423247,51.46554697472565],[-3.2958018021440587,51.46574359462343],[-3.296451232037963,51.46763000835299],[-3.292222719049197,51.46817377964479],[-3.292804742619947,51.47002104800638],[-3.293335071211205,51.47187426351803],[-3.2961728567318325,51.47157341369543],[-3.2956336156611643,51.46968946029773],[-3.297048021173683,51.469523573529656],[-3.2964512684489526,51.46763011362962],[-3.2964513568175082,51.46763037051622],[-3.2978608407310146,51.46744908226382]]],[[[-3.294397782693397,51.46594058315951],[-3.293701426544175,51.46407644221039],[-3.2909045910081263,51.46450013496852],[-3.2915894253557343,51.4663337328254],[-3.294397782693397,51.46594058315951]]],[[[-3.2913903520667156,51.470187016550064],[-3.290813302441832,51.468355354614346],[-3.290813309025397,51.46835535350774],[-3.29081322379653,51.468355106212876],[-3.2908131913575325,51.468355002848945],[-3.2908131882843374,51.46835500312765],[-3.2901850923915106,51.46652990628446],[-3.28737666138889,51.46692296160652],[-3.2867093778128496,51.465135915242364],[-3.2881078437769533,51.46492413027121],[-3.287384307366591,51.46312868586711],[-3.2845997285593804,51.463582653536776],[-3.283839551595601,51.46182597886363],[-3.2796823863387146,51.46255221134361],[-3.280422789273672,51.46426355267665],[-3.2811153609442996,51.46598280765874],[-3.281759794639487,51.46770922623863],[-3.2831640580792274,51.467512778397705],[-3.2837654977047515,51.469261201058785],[-3.2879942113193557,51.468717744150496],[-3.2885614561982153,51.470518635672924],[-3.2913903520667156,51.470187016550064]]],[[[-3.290641724868549,51.52265350370238],[-3.2892666323859525,51.52238518369917],[-3.288332934870983,51.5241917204545],[-3.2842307612594985,51.52334184145184],[-3.2851414514762767,51.521580126641375],[-3.2837664236473327,51.52131174184869],[-3.282863403849377,51.523058516641775],[-3.2814960752895934,51.52277517806019],[-3.2805523323022636,51.52449701518169],[-3.279193103299817,51.52419880504172],[-3.278209777756868,51.52589531082339],[-3.276859074612637,51.525582321518065],[-3.275837264362685,51.527253210468956],[-3.273153748743557,51.52659784720604],[-3.2721039484204018,51.52822818666899],[-3.2707715612902946,51.52788591584009],[-3.269685969298103,51.529490104750735],[-3.26836333682191,51.52913335253868],[-3.267242864483014,51.53071143609172],[-3.269867850277152,51.53145364295816],[-3.268682579914108,51.53304727308401],[-3.267452535772175,51.53462810225415],[-3.268743563027795,51.53502755278581],[-3.2674581758312655,51.536608575755544],[-3.2687378892559313,51.53702201934543],[-3.27003461816577,51.53542699044943],[-3.27003462388959,51.535426992362325],[-3.270034788142808,51.5354267814982],[-3.2700348683114484,51.535426682651654],[-3.2700348656690044,51.5354266815578],[-3.2712864134935757,51.53381809919632],[-3.2712864187765547,51.53381810083542],[-3.2712865628425334,51.53381790700124],[-3.27128667102292,51.5338177680714],[-3.2712866675000383,51.533817766704374],[-3.272492926282822,51.53219579236547],[-3.273805495858067,51.532566844735065],[-3.27258844212718,51.534203397595334],[-3.2738904874621273,51.53458867988117],[-3.2751183223303935,51.532937565829904],[-3.273805729230693,51.53256653091613],[-3.273805623708755,51.53256667258789],[-3.2749764722343557,51.53091730442837],[-3.2749764801576,51.53091730661247],[-3.2749766687727204,51.53091702768452],[-3.2749767125456444,51.530916966185764],[-3.274976711224483,51.53091696563888],[-3.2761010465440084,51.52925523983424],[-3.276101033857245,51.52925525960005],[-3.2800985148145436,51.53028186096951],[-3.2789447471304456,51.531987304612365],[-3.2815903543248752,51.53270055984533],[-3.2803686704620265,51.53442188842247],[-3.282994087489673,51.535163802497145],[-3.28423605125015,51.53341375724576],[-3.284236059614076,51.53341375942863],[-3.2842362608721523,51.53341346209075],[-3.284236305946635,51.533413398392405],[-3.2842363041855034,51.53341339784623],[-3.285428769124821,51.53165045045736],[-3.286761382206489,51.53199255980521],[-3.2855589397437557,51.533770335723084],[-3.2868818401057145,51.534126897355364],[-3.288094265054948,51.53233428609054],[-3.2867616293762336,51.53199219464798],[-3.2867614001432037,51.531992533447855],[-3.287914041830178,51.53020158694214],[-3.2852301777546495,51.52954649970012],[-3.2863141942584377,51.52777329112125],[-3.2863141995402696,51.527773292485364],[-3.28631431011267,51.527773101422035],[-3.286314417661794,51.52777292572344],[-3.2863144128197064,51.5277729243587],[-3.287348566821567,51.52598817940903],[-3.2887079094173393,51.526286299622846],[-3.2897003720403375,51.52447498391353],[-3.2897003597183736,51.52447498118808],[-3.290641724868549,51.52265350370238]],[[-3.2827638333998603,51.5309658272041],[-3.2814312780708197,51.530623675139694],[-3.2825461799120674,51.52889168235394],[-3.2838880614006567,51.52921926727614],[-3.2827638333998603,51.5309658272041]],[[-3.2761012556613744,51.529254915344666],[-3.2747688085907147,51.528912689970895],[-3.274768595914578,51.528913004588084],[-3.275837242932991,51.527253245606644],[-3.275837068867987,51.52725353000314],[-3.2771788465685696,51.52758118983801],[-3.2761012556613744,51.529254915344666]],[[-3.2736539947335443,51.530560273159296],[-3.272331298474492,51.53020356519835],[-3.273436146011293,51.52857078301548],[-3.274768579283211,51.52891302847326],[-3.2736539947335443,51.530560273159296]]],[[[-3.2873849446155567,51.52006210375729],[-3.286002651189247,51.51980875681036],[-3.285141275572867,51.521580490051676],[-3.286516318268077,51.52184886173719],[-3.2873849446155567,51.52006210375729]]],[[[-3.2826145675335154,51.54372910281568],[-3.2813463007114674,51.54330194745754],[-3.2798273083901224,51.54501934497574],[-3.2810834570195984,51.5454602559179],[-3.2826145675335154,51.54372910281568]]],[[[-3.2823914115448956,51.52104334120297],[-3.281016416047031,51.52077492415474],[-3.280128557365352,51.5224921724352],[-3.281495879094189,51.52277553216627],[-3.2823914115448956,51.52104334120297]]],[[[-3.268039683608621,51.51311436493289],[-3.2652490560358047,51.51266769364229],[-3.265864578634193,51.51111438578955],[-3.2644632970428473,51.51090626126179],[-3.265029562716257,51.509362098092424],[-3.265029566674068,51.50936209863623],[-3.265029613712399,51.50936195868835],[-3.26502967124918,51.50936180227],[-3.265029667290519,51.50936180145192],[-3.2655527294990248,51.50781138483003],[-3.264140758063853,51.507633898136696],[-3.2646155394347343,51.506093768252384],[-3.2646155460303214,51.50609376906732],[-3.2646156108010134,51.50609353666033],[-3.264615637347428,51.5060934510479],[-3.2646156351480475,51.50609345050196],[-3.2650473315029718,51.50454806444734],[-3.262205486010223,51.50425477976668],[-3.261782332001411,51.505769248261196],[-3.260365698146247,51.5056071214686],[-3.2599048366811565,51.50710164609388],[-3.2613167659828926,51.5072791862686],[-3.260809113371418,51.50878351107839],[-3.2622159158879867,51.5089763900221],[-3.26166077481124,51.51048996251477],[-3.25885830498628,51.51007359678549],[-3.2582726470856826,51.511550967415765],[-3.2576458006501805,51.51302153775836],[-3.2604234376056485,51.513498713871975],[-3.2597418790462753,51.51499230193589],[-3.259018537268488,51.51647836596822],[-3.2603932634880013,51.51674704212274],[-3.259620768414392,51.51823986086156],[-3.2623549195661945,51.51880704305082],[-3.2631427829306183,51.517284349883894],[-3.265892375869579,51.5178215945147],[-3.2666520078314543,51.516260491184966],[-3.266652009151219,51.51626049145764],[-3.2666520296742343,51.516260446996625],[-3.2666521541640265,51.5162601906521],[-3.2666521471255705,51.51626018928922],[-3.267367797971803,51.51469136883226],[-3.267367804569546,51.51469136992133],[-3.2673679036286054,51.514691137470976],[-3.267367944668376,51.514691047451485],[-3.267367942468552,51.51469104690561],[-3.268039683608621,51.51311436493289]]],[[[-3.2642427149930686,51.520917443999856],[-3.262883691630286,51.520619043100204],[-3.263722194628723,51.519090295814834],[-3.26235509184237,51.518806731795145],[-3.2615246899904906,51.5203206272608],[-3.260165709633545,51.52002219620839],[-3.2593013766165773,51.521512339271226],[-3.262002321166455,51.522138713854595],[-3.2610787019513134,51.52364823855684],[-3.262420275225551,51.52397606927757],[-3.263352823210152,51.52245187793756],[-3.263352827610457,51.522451879029504],[-3.263352921209923,51.522451717906186],[-3.2633530152710093,51.52245156391401],[-3.263353011310398,51.52245156282157],[-3.2642427149930686,51.520917443999856]]],[[[-3.259769514777304,51.488974463193365],[-3.254010896832118,51.48901241761861],[-3.254014988751654,51.49043995054621],[-3.249695758879344,51.49042116948281],[-3.249660987387492,51.491801577932215],[-3.249587624369057,51.49318143110241],[-3.251026220596371,51.493219076870005],[-3.2509130680160436,51.49461344834484],[-3.253787828929165,51.494720024301],[-3.2539034350985685,51.49329431572883],[-3.2553420533712867,51.49333190881961],[-3.255418561512838,51.49188949748406],[-3.2568579648675513,51.491911393636855],[-3.2568944791430603,51.49045266257969],[-3.259773974707167,51.49046503044318],[-3.259769514777304,51.488974463193365]]],[[[-3.259122917591976,51.481536623888736],[-3.2588689797268686,51.48005450922066],[-3.25171942339774,51.480571327340634],[-3.2519597297409835,51.481975161673596],[-3.250527090704563,51.48206287765827],[-3.250725899077643,51.48345378006317],[-3.2521608159063664,51.48338168974612],[-3.2523225358073407,51.48478992362374],[-3.258069546922069,51.484563966560636],[-3.2579004564059852,51.4830931526187],[-3.257900460359007,51.483093152339855],[-3.2579004379303376,51.483092995467686],[-3.2579004235024063,51.48309287013049],[-3.2579004199886974,51.48309287040882],[-3.257690298126726,51.4816244243719],[-3.259122917591976,51.481536623888736]]],[[[-3.237057524639891,51.44606842829136],[-3.2358170302298457,51.444832155079126],[-3.234605120911692,51.44531625417077],[-3.2333445811576333,51.444107297515195],[-3.2333445837879773,51.444107296141226],[-3.233344473807491,51.4441071944799],[-3.2333443374204625,51.444107063767746],[-3.233344333912246,51.444107065142546],[-3.2320502692437802,51.442912006821885],[-3.2320502929956283,51.4429120276465],[-3.2332343956011087,51.442401822386834],[-3.231892268942627,51.44120776780407],[-3.2307226129502515,51.441730799167495],[-3.2320500198409587,51.44291178459755],[-3.2308658996290345,51.443421977842746],[-3.2321462695220085,51.44460441752563],[-3.2333932515193577,51.44580040262498],[-3.234606966872043,51.44701005148233],[-3.237057524639891,51.44606842829136]]],[[[-3.236551522524576,51.5421385062896],[-3.2353915179329205,51.5416049925706],[-3.2339256280047954,51.542821860935355],[-3.235070534236257,51.543367934034336],[-3.236551522524576,51.5421385062896]]],[[[-3.2321591837107624,51.473382510347435],[-3.2316822703092867,51.47219546539054],[-3.230289436499877,51.472421795817304],[-3.2307602022640647,51.47359362768605],[-3.2321591837107624,51.473382510347435]]],[[[-3.2316724492659,51.43949327863987],[-3.230249519244418,51.438316743722694],[-3.230249752729415,51.4383169300324],[-3.2313894115464543,51.43776871390258],[-3.2299183512663694,51.43659546796938],[-3.2287941884207667,51.43715602023179],[-3.2302494484521818,51.43831668755615],[-3.229109767623016,51.438864894468274],[-3.230517615825066,51.44002898319438],[-3.2316724492659,51.43949327863987]]],[[[-3.228896683412453,51.47264833151399],[-3.228399837810587,51.471496950355004],[-3.2270135446127513,51.471738388763825],[-3.2275038211446807,51.47287462582223],[-3.228896683412453,51.47264833151399]]],[[[-3.227272244034375,51.53787007411242],[-3.22611245601394,51.537336468277765],[-3.224767644411201,51.53845264072544],[-3.222478346923568,51.53736028629928],[-3.2211330568027132,51.53843708363491],[-3.2233914499926897,51.53955421845159],[-3.224767641337769,51.53845264319675],[-3.224767366062082,51.53845287164833],[-3.2259120526172103,51.53899903450883],[-3.227272244034375,51.53787007411242]]],[[[-3.2228546756453778,51.47246282797409],[-3.222353714199906,51.47137731652562],[-3.2209743477651496,51.47163375688011],[-3.2204507679498007,51.47056928510358],[-3.221822734791201,51.470297857664384],[-3.221261584952861,51.46922414088421],[-3.221261586708413,51.46922414033414],[-3.2212615496733585,51.469224073436564],[-3.2212614698532285,51.46922392071967],[-3.22126146546318,51.46922392154624],[-3.220670424934726,51.46815648161363],[-3.2193145205881613,51.46845763695196],[-3.2187025383281256,51.46741172888661],[-3.2200497957558203,51.467095849420666],[-3.21939939505886,51.46604171935906],[-3.2180611946501276,51.46637223267968],[-3.217391066303432,51.465340084939236],[-3.217391206374755,51.46534029000122],[-3.2200486535793087,51.464650196735654],[-3.2193300905681017,51.46359666703104],[-3.219330091006655,51.46359666675639],[-3.2193300685452892,51.463596635504885],[-3.219329943005719,51.463596451279855],[-3.2193299377390763,51.463596452655665],[-3.2185822271075293,51.462551113754934],[-3.2211993252380644,51.461803482699246],[-3.22040107408306,51.46073784969156],[-3.2204010762768043,51.460737848866856],[-3.220401012433826,51.460737767453374],[-3.220400909831458,51.46073763038961],[-3.2204009058818923,51.46073763149008],[-3.219573201533832,51.45968105992753],[-3.2208599890615273,51.45927894183268],[-3.2199913148590085,51.45821738942688],[-3.2199913152974995,51.45821738915222],[-3.2199912950494065,51.45821736530503],[-3.219991136131241,51.45821717123343],[-3.2199911308657994,51.45821717288358],[-3.219093146279869,51.4571654479037],[-3.219093148034404,51.45716544707937],[-3.219093080697715,51.45716537115398],[-3.2190929737419816,51.45716524616167],[-3.2190929702317597,51.45716524726174],[-3.2181655917623173,51.45612325145767],[-3.216914321275693,51.45656686247941],[-3.2178294781497154,51.457595157309555],[-3.2165659623296308,51.45802505398528],[-3.2156632131190173,51.45701066925674],[-3.21566321355752,51.45701066898211],[-3.2156631959560578,51.457010649795144],[-3.215663026970835,51.457010460114375],[-3.2156630217059456,51.457010462038625],[-3.2147321268067413,51.45600608190129],[-3.2147321311934465,51.45600607997777],[-3.214731969284134,51.45600591195966],[-3.214731934083843,51.45600587413404],[-3.2147319332062914,51.45600587440902],[-3.2137731503732603,51.45501177503947],[-3.21377315344386,51.455011773665596],[-3.2137730364265105,51.45501165717945],[-3.2137729660339582,51.45501158399632],[-3.2137729638403596,51.455011584820916],[-3.212786395444219,51.45402787902143],[-3.211573999573296,51.45451173925452],[-3.2105740648204217,51.4535522643543],[-3.2105740670134835,51.45355226325547],[-3.210573972894346,51.45355217637322],[-3.210573871291193,51.453552078798914],[-3.2105738686591043,51.45355207989808],[-3.2095473291897,51.45260364743775],[-3.209547329627685,51.45260364688883],[-3.209547300603446,51.452603621126215],[-3.209547117650055,51.45260345201921],[-3.209547112824433,51.452603453942864],[-3.208494293219822,51.45166636115428],[-3.208494294973823,51.45166636005582],[-3.2084942118670607,51.45166628879885],[-3.2084940764254615,51.451666168206344],[-3.208494072915908,51.45166616958038],[-3.207415264666743,51.45074067476289],[-3.2085706421182314,51.450205197417354],[-3.207450607713831,51.44927872640197],[-3.205170121798626,51.4503746858829],[-3.2040558519366216,51.44948559770243],[-3.2040558536906585,51.449485596604006],[-3.2040557609369253,51.449485525350546],[-3.2040556409219403,51.449485429429075],[-3.204055638290412,51.449485430802376],[-3.202916509962518,51.448608434186504],[-3.2018075413866085,51.449180907697716],[-3.200660320166095,51.44832846624029],[-3.1973817425876554,51.450081809557254],[-3.198480514502624,51.450898294279085],[-3.1995564153866667,51.451726674930086],[-3.2006088685213,51.452566505136424],[-3.201637858015184,51.453417770723505],[-3.2026430615055537,51.45428021413441],[-3.2038133598204492,51.45375746765101],[-3.204808616866591,51.454643406136405],[-3.2057788890468673,51.45553993832451],[-3.2045800816947514,51.45603687122428],[-3.2055118292086275,51.456931031295355],[-3.206724351509681,51.456447238610764],[-3.2076440670044866,51.45736440692341],[-3.208538277839491,51.45829168479487],[-3.209777093440954,51.45783459156204],[-3.21065776734941,51.45878489824614],[-3.2115117589134012,51.459744613860984],[-3.212338953015999,51.4607136167355],[-3.2131388550739457,51.4616913273977],[-3.2139115166214918,51.46267781274151],[-3.215209470380255,51.46228984941032],[-3.215964912628765,51.46329848699344],[-3.2146562922537956,51.46367225365448],[-3.2153733447452937,51.46467485104685],[-3.212735517293599,51.46539370765379],[-3.212735637526196,51.465393883935235],[-3.212038991752149,51.46441974171791],[-3.210730311626556,51.46479346339383],[-3.2100175145045604,51.46384161912675],[-3.2100175162595237,51.46384161830255],[-3.2100174563917188,51.46384154154359],[-3.2100173674620143,51.463841423112925],[-3.2100173639510587,51.46384142421273],[-3.209278110000248,51.4628974889656],[-3.2092781126329006,51.46289748786648],[-3.209278029887232,51.46289738671144],[-3.2092779682618033,51.462897308033305],[-3.20927796606723,51.462897308583514],[-3.2085124823461824,51.46196157107885],[-3.208512482784773,51.461961570804235],[-3.2085124585802838,51.46196154229491],[-3.2085123243444675,51.46196137836266],[-3.2085123199559122,51.46196137973735],[-3.207720689095595,51.461033946930655],[-3.2064569833646135,51.461463734418764],[-3.207236780713284,51.462377333236475],[-3.2059612222293596,51.46279327145663],[-3.2067040383449457,51.46370136143267],[-3.2074213481565783,51.46461734277972],[-3.20811301624139,51.46554104242963],[-3.209421736502705,51.465167354127104],[-3.2100977095779144,51.466112664673446],[-3.2107471132323333,51.46706507755461],[-3.2113700452229197,51.468024748386824],[-3.2140466139260453,51.46736386704277],[-3.2146605376203317,51.46835906648343],[-3.213313212812013,51.46867488587827],[-3.2138908467164753,51.46966229026645],[-3.215246819405955,51.469361201269855],[-3.215804924932722,51.47036937692805],[-3.2171691146741934,51.47008309187945],[-3.217706689671664,51.47111187709325],[-3.2163346814640748,51.471383258528],[-3.216836254891981,51.47240317657143],[-3.2182156637835706,51.4721467887672],[-3.218695550503589,51.473186839647134],[-3.2191463563833125,51.4742320435216],[-3.220539301771849,51.47400584880392],[-3.220081953571993,51.472945550903894],[-3.2228546756453778,51.47246282797409]],[[-3.216062311100604,51.465685105939976],[-3.2153734640879446,51.464675017451604],[-3.2153734918323127,51.464675056380024],[-3.2166923782156,51.46431560811952],[-3.2173910627783835,51.46534007918182],[-3.216062311100604,51.465685105939976]],[[-3.2122544713045635,51.45692016123666],[-3.2113216348751927,51.45595290976801],[-3.212547405226602,51.45548234855523],[-3.2134932148480986,51.456463024246524],[-3.2122544713045635,51.45692016123666]],[[-3.212075935822282,51.466720096300826],[-3.211416705271461,51.465753312575366],[-3.2127356547018295,51.465393908883186],[-3.213404747183625,51.466375114774536],[-3.212075935822282,51.466720096300826]],[[-3.2079366607842132,51.45596324284653],[-3.2069778612345914,51.455043168814775],[-3.2081766217952854,51.45454621295869],[-3.2091491322430623,51.45547942089325],[-3.2079366607842132,51.45596324284653]]],[[[-3.208289824855535,51.554267999635165],[-3.2064530974875938,51.55288224071125],[-3.2046751810124436,51.55378184801485],[-3.203776405901638,51.55307905885766],[-3.201992976938107,51.55394964522297],[-3.200185730685647,51.554800502128],[-3.2010445864150867,51.55552244606611],[-3.202872292126826,51.55466194897319],[-3.20287228727958,51.554661944862076],[-3.2046751339751363,51.55378187163682],[-3.204674818783553,51.553782031220635],[-3.2055736132314925,51.55448481259515],[-3.203750908489967,51.555374587768156],[-3.2019038241447637,51.556244216345945],[-3.201903821501328,51.55624421442766],[-3.2000322583532634,51.55709374086834],[-3.1991937312075724,51.556362560538574],[-3.1973188289681485,51.557182710995036],[-3.198136739866448,51.557922919556106],[-3.2000320424650486,51.55709383893271],[-3.200031873623659,51.557093915571336],[-3.2008704259052405,51.557825094484635],[-3.202762372404276,51.5569663085126],[-3.2027623794552604,51.55696631454226],[-3.2046298930412718,51.55608705974775],[-3.204629893481778,51.55608706002174],[-3.204629915463525,51.556087049309006],[-3.2046302794920734,51.5560868778968],[-3.2046302746445163,51.55608687378578],[-3.206472439787152,51.55518759028931],[-3.2064724441937695,51.555187593852004],[-3.206472773896033,51.55518742712144],[-3.206472814780246,51.55518740706894],[-3.2064728143392403,51.55518740652068],[-3.208289824855535,51.554267999635165]]],[[[-3.2001860749305884,51.554800336777014],[-3.1993272424346597,51.55407838866357],[-3.197516377241741,51.5549003431565],[-3.1983548492934752,51.55563154004406],[-3.2001860749305884,51.554800336777014]]],[[[-3.183467079741784,51.48945455072645],[-3.183447790401246,51.488795807534856],[-3.183447791718993,51.48879580725988],[-3.1834477885733987,51.48879575432226],[-3.1834477862673696,51.488795671760165],[-3.1834477840705193,51.48879567176131],[-3.1834100823925873,51.48813723888074],[-3.1819717960969967,51.48817717801068],[-3.1820085848223956,51.48882002654213],[-3.1820273960518,51.48946312596997],[-3.183467079741784,51.48945455072645]]],[[[-3.1709129055497884,51.4427903097571],[-3.1695922577024183,51.44227533588656],[-3.1688415357162873,51.44304200450717],[-3.170140896337444,51.44354868052232],[-3.1709129055497884,51.4427903097571]]],[[[-3.166434163226909,51.50390229397185],[-3.1651563023081137,51.503487735940155],[-3.1651562786000564,51.50348776365255],[-3.165532446360487,51.50302635245598],[-3.164243219922425,51.50262576584215],[-3.1638784637000485,51.50307316395891],[-3.1626006504795274,51.50265857830181],[-3.1622352120720163,51.50308807400091],[-3.1609692038270185,51.5026596166075],[-3.1606039640011057,51.50307134403018],[-3.1593501445124796,51.50262914415638],[-3.1593501225563108,51.50262916802694],[-3.1597031433584966,51.50223122728314],[-3.1609691274240643,51.50265970166396],[-3.1613228591300127,51.50224397842195],[-3.160045090530802,51.501829364593746],[-3.1603756121475204,51.50142399874256],[-3.1603756134664422,51.50142399929073],[-3.160375655174618,51.50142394606402],[-3.1603756758098585,51.50142392054792],[-3.1603756749306586,51.501423920273915],[-3.1606948511272694,51.50101495642446],[-3.1606948063493077,51.50101501678396],[-3.1619949604918496,51.501401542233225],[-3.1623133275636803,51.50097483168283],[-3.1610025701812865,51.50060253349881],[-3.1610025473532315,51.500602563678754],[-3.1612986900989415,51.500186839251214],[-3.1599777525305304,51.49982886376772],[-3.1599777411172427,51.499828879954784],[-3.160252396199888,51.499424458477044],[-3.1589216798452333,51.49908091393528],[-3.1586568356589413,51.49947087311277],[-3.157335939484869,51.49911286783536],[-3.1575909839392415,51.49873735427682],[-3.15759098174149,51.49873735372887],[-3.1578354719713118,51.498359136520044],[-3.1578354381749567,51.4983591919379],[-3.159175527183585,51.49868820386609],[-3.1594184468182,51.498292631316055],[-3.158069370885063,51.49797827279112],[-3.158069341039362,51.497978321624764],[-3.1582925659052146,51.497594941479946],[-3.156934933144353,51.49729531340078],[-3.156720312194616,51.49766389845939],[-3.155371274263544,51.49734950914312],[-3.15515531892866,51.49770112182214],[-3.156495367144833,51.49803016413308],[-3.15626030584507,51.4983937789542],[-3.154929651277275,51.49805018961202],[-3.1546941956198538,51.49839683207071],[-3.1544490847916755,51.498740849142195],[-3.154194418281986,51.49908210249473],[-3.152894394808478,51.49869549345278],[-3.1526411848050215,51.49901986343172],[-3.1523789158646873,51.499341454575415],[-3.1536565413725697,51.4997561545552],[-3.1533735739190214,51.50008864695595],[-3.153373574798152,51.500088647230015],[-3.1530813939820157,51.50041795479476],[-3.152779949160813,51.50074413342441],[-3.1540210918445823,51.50119999451261],[-3.1536976890493227,51.501536238047734],[-3.1549259277329846,51.50200553969228],[-3.154579867576209,51.502351512823694],[-3.154224206497601,51.50269363772559],[-3.1538590203573116,51.50303184215157],[-3.1526718025824634,51.502523057469546],[-3.152311554898069,51.50284442613934],[-3.1519423648654574,51.503161825183724],[-3.151564454670089,51.50347506712079],[-3.1515644542304044,51.503475066846605],[-3.1511776898118167,51.503784261343284],[-3.1534326576290335,51.50490274816577],[-3.153850270758656,51.504568879816034],[-3.156136278006999,51.50566258437655],[-3.1565747214889033,51.505299137709564],[-3.1577328804543776,51.505833435899135],[-3.158175931623732,51.50545249526303],[-3.157003008424653,51.5049308992794],[-3.1574207528382408,51.50455820477338],[-3.1574207581087856,51.50455819983452],[-3.1574208393657557,51.50455812739658],[-3.157420837167521,51.50455812657433],[-3.1578280941003443,51.50418093302316],[-3.157828094979589,51.50418093329719],[-3.1578281301153166,51.50418089954837],[-3.157828172718472,51.504180860037124],[-3.157828171399501,51.504180859488926],[-3.158224813183415,51.50379928498652],[-3.1594398506319425,51.50428184707368],[-3.1598391659626954,51.5038825890168],[-3.1598391374180834,51.50388261864971],[-3.161067502698944,51.5043518560703],[-3.161468561569186,51.50393480272077],[-3.160227266339638,51.50347902312018],[-3.160603942485332,51.50307136844941],[-3.160603894623484,51.50307142250104],[-3.1618577370675482,51.50351361195768],[-3.16223513699277,51.50308816317217],[-3.163501168986974,51.50351661043687],[-3.1638784399929034,51.50307319331683],[-3.1638783895047604,51.50307325505099],[-3.1651562228428407,51.5034878295036],[-3.164767225165477,51.503945044279874],[-3.166033305088575,51.50437346442657],[-3.166434163226909,51.50390229397185]],[[-3.1606948695653885,51.501014931731895],[-3.15939473610586,51.50062839513907],[-3.159394711080825,51.50062842723945],[-3.1596918073792577,51.50023025658546],[-3.1596917788454313,51.5002302969159],[-3.1610025113561684,51.5006026125151],[-3.1606948695653885,51.501014931731895]],[[-3.1598392120731003,51.50388254100056],[-3.158610869830151,51.50341329342378],[-3.15898599499641,51.50302322952625],[-3.1577447492986788,51.502567423584686],[-3.1580962812269564,51.50218700328195],[-3.1593500751307695,51.50262921933496],[-3.1589859203443864,51.50302331101503],[-3.1602271859765514,51.503479105983025],[-3.1598392120731003,51.50388254100056]],[[-3.159691833718778,51.500230220095865],[-3.1583811194956777,51.49985789257121],[-3.1586568312691337,51.49947087942291],[-3.1586567812265973,51.49947095294946],[-3.159977694146562,51.49982894580064],[-3.159691833718778,51.500230220095865]],[[-3.1590865393601577,51.50102327715002],[-3.157797425517617,51.50062261955718],[-3.158094562736363,51.50024192202896],[-3.1593946728848286,51.500628476350286],[-3.1590865393601577,51.50102327715002]],[[-3.15783548338415,51.498359119236],[-3.1564954119187862,51.49803009472337],[-3.1567202915663155,51.49766393384952],[-3.156720267865674,51.497663974452166],[-3.158069322604832,51.49797835125425],[-3.15783548338415,51.498359119236]],[[-3.1546572436920264,51.503887672263296],[-3.1534844017177326,51.503366040957594],[-3.1538589461269204,51.50303191074507],[-3.153858944370006,51.50303191239131],[-3.155046187710496,51.5035406885797],[-3.1546572436920264,51.503887672263296]]],[[[-3.164138272318896,51.509490101953],[-3.162995061039285,51.50894333675702],[-3.162453632642125,51.50937626059598],[-3.163581378805674,51.50993540052466],[-3.164138272318896,51.509490101953]]],[[[-3.16263379203565,51.506163681464706],[-3.160230930234309,51.50517229530707],[-3.1597954290070724,51.50557566778044],[-3.1593487880495443,51.50597416096656],[-3.1605217608622174,51.50649573587073],[-3.160982798851236,51.50608438887264],[-3.1621702004095957,51.50659309268821],[-3.16263379203565,51.506163681464706]]],[[[-3.161851877126978,51.50839656009473],[-3.1607087205815754,51.507849772240895],[-3.160198223140325,51.50825794777995],[-3.161325914087314,51.50881710977234],[-3.161851877126978,51.50839656009473]]],[[[-3.1595655918420005,51.50730297319586],[-3.158422490028521,51.50675616296039],[-3.157942924068153,51.50713959166229],[-3.159070559800909,51.50769877516786],[-3.1595655918420005,51.50730297319586]]],[[[-3.150292337184226,51.33976419986829],[-3.1461075306345374,51.33948961882233],[-3.1461075315069698,51.33948961196456],[-3.1461069166210627,51.339489578346694],[-3.1461066700522293,51.339489562211476],[-3.146106669615668,51.3394895649546],[-3.141914893005194,51.33926062040458],[-3.1419148916963486,51.33926063247415],[-3.1377182737166263,51.33907743151125],[-3.137718274152454,51.33907742492791],[-3.1377176803037523,51.33907740552707],[-3.137717411406706,51.33907739376585],[-3.137717410969736,51.33907739678325],[-3.133516353859063,51.3389399473242],[-3.1335163542945494,51.338939936626325],[-3.1293111472581687,51.33884825878217],[-3.1293111472577912,51.33884825603913],[-3.129310901138091,51.33884825330937],[-3.1293103970736995,51.33884824236442],[-3.1293103966365186,51.33884824785051],[-3.1251032864192294,51.338802402825316],[-3.1248411205588065,51.35767725600715],[-3.1285238556659016,51.35771738662729],[-3.1276991658816273,51.37748498482242],[-3.124566884157979,51.37745085253017],[-3.1245668841579035,51.377450850335755],[-3.1245666913044916,51.377450850338334],[-3.124566239413714,51.37745084540695],[-3.1245662394138822,51.377450850344374],[-3.1214329250410846,51.3774508503357],[-3.121445430493133,51.378349648156814],[-3.1214456176522707,51.378349648159286],[-3.11833823120702,51.378383509673824],[-3.118300728786913,51.377484981259784],[-3.1151692233216868,51.377553250035014],[-3.1127338864602923,51.342531870934856],[-3.1168392909601916,51.34244237004967],[-3.1167644053286963,51.34064530678546],[-3.1126090973949068,51.340735895659144],[-3.1126090969572027,51.34073589456189],[-3.1126089971032336,51.340735897844674],[-3.1126083568131673,51.34073591177727],[-3.1126083572495062,51.3407359189092],[-3.1084570372237565,51.3408717411523],[-3.1084570367867577,51.34087173813491],[-3.108456763937577,51.34087175017035],[-3.108456183642495,51.34087176902514],[-3.1084561845163186,51.340871775608534],[-3.1043093657096885,51.34105280264639],[-3.104084914883208,51.339260620403756],[-3.099893138272707,51.33948956495358],[-3.0998931378361445,51.339489562210446],[-3.0998928890774704,51.339489578619535],[-3.0998922768193466,51.33948961196363],[-3.099892278129719,51.339489618821474],[-3.0957083326103954,51.33976414356163],[-3.095708331300803,51.33976413642942],[-3.0957077001954483,51.339764184833925],[-3.0957074707041174,51.33976419986709],[-3.0957074715783737,51.33976420261031],[-3.091531642639874,51.3400842802024],[-3.091531642203057,51.34008427855646],[-3.0915315121250555,51.34008429004222],[-3.091530897653805,51.34008433705715],[-3.0915308994008925,51.3400843439152],[-3.087363702960961,51.340449947408274],[-3.087363705581208,51.34044995700969],[-3.0832082264592127,51.34086081299845],[-3.0832082251493915,51.34086080833483],[-3.0832078064253263,51.3408608545497],[-3.0832073710618664,51.34086089746727],[-3.083207372371449,51.34086090240518],[-3.0790638955418412,51.34131697188889],[-3.079063892049457,51.34131696009252],[-3.0749319667236685,51.341818312214905],[-3.07493197021646,51.34181832263987],[-3.0708161268906036,51.34236440846894],[-3.0708161255804387,51.34236440517672],[-3.0708158290273664,51.34236444783578],[-3.0708153927449957,51.342364505793505],[-3.070815394491257,51.34236451073175],[-3.066715297545361,51.34295535838041],[-3.066715293178397,51.34295534795478],[-3.0626306013511515,51.34359102311002],[-3.062630605717965,51.343591032987185],[-3.0585658054613085,51.34427083696298],[-3.0585658010949124,51.34427082735995],[-3.054519600562561,51.34499496609756],[-3.0545195975060153,51.34499495978678],[-3.0545190323336504,51.34499506753151],[-3.0545187716577566,51.344995114284814],[-3.0545187734052353,51.34499511730318],[-3.0504939543186045,51.3457630943665],[-3.050493953444766,51.34576309299444],[-3.05049384829087,51.34576311432493],[-3.0504932349048177,51.34576323134664],[-3.050493238397994,51.34576323820639],[-3.046490294607559,51.34657495270987],[-3.046490292860556,51.3465749496914],[-3.046490036095427,51.34657500493277],[-3.0464894748167866,51.3465751186759],[-3.0464894783103404,51.34657512498716],[-3.0425097245549066,51.3474303076869],[-3.0425097228076483,51.34743030494266],[-3.042509488375145,51.34743035827053],[-3.042508906469705,51.34743048322682],[-3.0425089104003114,51.3474304898128],[-3.0385534474906573,51.348328903023955],[-3.0385534448700793,51.348328898907525],[-3.0385530741370674,51.34832898778851],[-3.0385526319848064,51.348329088138684],[-3.0385526350418988,51.34832909307834],[-3.034622650007806,51.34927046777],[-3.034622646514097,51.349270462281304],[-3.0346221701395217,51.349270582340594],[-3.0346218449679383,51.34927066027141],[-3.0346218475892757,51.34927066383934],[-3.0307184265830998,51.35025474119337],[-3.0307184217784076,51.35025473433198],[-3.0307178003012423,51.35025489897236],[-3.030717725357812,51.35025491784018],[-3.0307177262322442,51.35025491866377],[-3.026842155621331,51.35128137761527],[-3.0268421543111907,51.35128137569408],[-3.0268419916987424,51.35128142082045],[-3.0268413609895,51.35128158790139],[-3.02684136579314,51.35128159503721],[-3.0229949227171016,51.352350094907784],[-3.022994918785884,51.352350089692656],[-3.0229944585268136,51.352350223707845],[-3.0229941253968637,51.35235031613759],[-3.022994128454941,51.35235031998043],[-3.0191778647339262,51.353460567495326],[-3.0191778608024378,51.353460562554396],[-3.0191774180421667,51.35346069739297],[-3.0191770848865462,51.353460794200664],[-3.0191770879443744,51.35346079804361],[-3.0153921601242692,51.35461245817055],[-3.015392156629874,51.35461245377847],[-3.0153917782798936,51.3546125741239],[-3.0153913771456535,51.35461269609417],[-3.0153913806400485,51.354612700486236],[-3.0116388378461028,51.35580545576988],[-3.011638832167492,51.3558054489069],[-3.011638217899219,51.35580565267808],[-3.0116381687945384,51.35580566826662],[-3.011638169669391,51.355805668816046],[-3.007919241218279,51.35703913214235],[-3.007919237286309,51.35703912774964],[-3.007918859308711,51.35703925849476],[-3.007918476521545,51.35703938539489],[-3.0079184804535153,51.35703938978761],[-3.0042343996535403,51.35831314975443],[-3.004234399216843,51.35831314920537],[-3.004234362379997,51.35831316260884],[-3.004233639710435,51.35831341231399],[-3.004233647137886,51.35831342027632],[-3.000585430279879,51.3596271254544],[-3.000585424163592,51.35962711886474],[-3.000584837354267,51.35962733879043],[-3.000584675527585,51.35962739704767],[-3.000584677274989,51.35962739896962],[-2.9969733117141124,51.360980696071884],[-2.9969733108400796,51.36098069524804],[-2.996973241977455,51.36098072205556],[-2.996972679256363,51.360980932937075],[-2.9969726853730623,51.36098093925263],[-2.9933993795500315,51.362373380418944],[-2.9933993769280445,51.36237337794731],[-2.9933991720725364,51.36237346110852],[-2.993398640876962,51.36237366789317],[-2.993398646994135,51.362373673934606],[-2.989864597608597,51.363804790273605],[-2.9898645871219207,51.363804780112496],[-2.9863700223067524,51.36527449069339],[-2.986370021432836,51.36527448986946],[-2.9863699503543875,51.36527452078269],[-2.9863693027782094,51.365274793232196],[-2.9863693106443283,51.36527480037326],[-2.982916736365047,51.36678205288669],[-2.982916732431287,51.366782049590356],[-2.9829164498382674,51.36678217762576],[-2.982916025531482,51.366782362820814],[-2.982916030775649,51.36678236749023],[-2.979505678790635,51.36832705290728],[-2.9795056713607084,51.368327046589215],[-2.9795051188345427,51.368327305950686],[-2.9795050727558907,51.368327327015486],[-2.979505073630605,51.368327327565154],[-2.976138081772143,51.36990893502673],[-2.976138080897427,51.36990893447701],[-2.976138035688603,51.3699089566388],[-2.976137384812371,51.369909262218066],[-2.9761373935541484,51.369909269360896],[-2.9728148651246404,51.37152727953773],[-2.972814856818627,51.37152727321812],[-2.972814285276329,51.37152756159959],[-2.9728141882686874,51.371527608929455],[-2.9728141900180813,51.371527610028906],[-2.9695370392647895,51.37318157858038],[-2.969537038827434,51.37318157830549],[-2.969537023460755,51.37318158651443],[-2.9695363671496438,51.37318191755991],[-2.969536376767542,51.37318192470438],[-2.966305617680027,51.37487134273754],[-2.9663056115591373,51.37487133834051],[-2.9663052194502217,51.374871550674264],[-2.9663049485476396,51.374871692400255],[-2.966304952920107,51.37487169542344],[-2.9631209027371916,51.37659641111476],[-2.9783134562550218,51.38738713270149],[-2.9754767579457635,51.38897882858534],[-2.974508365598562,51.38831491928059],[-2.971697436445727,51.389948221533686],[-2.969723978506743,51.38864166543685],[-2.9669226979792844,51.39032704537304],[-2.9669226975417966,51.39032704509817],[-2.966922682603589,51.3903270544045],[-2.9669221193864757,51.390327393239176],[-2.9669221290103605,51.39032739956093],[-2.9641686432556313,51.39204269455994],[-2.963146122628434,51.3914113011281],[-2.960422606888103,51.39316798072666],[-2.9593826560984366,51.39254781645914],[-2.962123632774798,51.39077990008185],[-2.9611011706294015,51.39014849004597],[-2.9583427334284123,51.39192764289786],[-2.9562629597559744,51.39068726047162],[-2.9535199328581605,51.39251913466853],[-2.953520137259787,51.392518993150446],[-2.9524631509519783,51.39191021551947],[-2.949754804053175,51.3937831617434],[-2.94975479748874,51.393783158442076],[-2.949754485776164,51.39378338181098],[-2.9497542417934355,51.393783550419776],[-2.9497542466061026,51.39378355316991],[-2.9470988894521093,51.39568533000932],[-2.947098885513184,51.39568532808328],[-2.947098713137954,51.39568545619747],[-2.9470983394048957,51.395685723628645],[-2.947098347281687,51.395685727754994],[-2.94449622246797,51.39761615153908],[-2.9444962124028793,51.397616146312004],[-2.9444957475190803,51.39761650384106],[-2.944495688590968,51.39761654736517],[-2.9444956899032504,51.39761654819007],[-2.9419475231673426,51.39957508867769],[-2.940825202519146,51.39901381166755],[-2.9433897383408367,51.39704272622251],[-2.9422832915092547,51.39646929535587],[-2.9397029093427447,51.39845252385646],[-2.9397029067172116,51.39845252248083],[-2.9397028055391563,51.39845260296709],[-2.9397024523335316,51.39845287452126],[-2.9397024602112225,51.39845287837382],[-2.9371780962793,51.4004635096698],[-2.9326271619162627,51.39826750063524],[-2.935214008715748,51.39620726323626],[-2.9340918528878728,51.395645921427494],[-2.9314894963156464,51.3977184705689],[-2.9314894910640086,51.39771846809159],[-2.9314892772161123,51.39771864466638],[-2.931488964403053,51.397718893769195],[-2.931488971404082,51.397718897346564],[-2.9289451253929246,51.39981905055928],[-2.9289451218917693,51.39981904890767],[-2.9289449779746457,51.39981917210484],[-2.9289445986458467,51.39981948527714],[-2.928944607837248,51.399819489406894],[-2.926459514859088,51.40194703692822],[-2.926459508292822,51.40194703417419],[-2.926459259131195,51.40194725539156],[-2.9264590034009403,51.401947474403485],[-2.9264590099660426,51.40194747743182],[-2.9240334251434685,51.404101779922904],[-2.9240334146383566,51.40410177524194],[-2.9240330073411473,51.404102150617064],[-2.924032925452913,51.404102223442095],[-2.9240329276409316,51.40410222454302],[-2.9216671104003957,51.4062830757294],[-2.921667121782916,51.40628308041208],[-2.919362710018965,51.408488983024974],[-2.919362699949492,51.40848897889295],[-2.919362348390303,51.40848932883857],[-2.919362233427363,51.40848943863343],[-2.919362236930057,51.40848944001103],[-2.9171195709953865,51.41072005618024],[-2.9171195674925916,51.41072005480258],[-2.917119454239878,51.41072017200437],[-2.9171191127814944,51.410720511537455],[-2.9171191224138724,51.41072051539461],[-2.9149388311862388,51.41297522736529],[-2.914938815859945,51.41297522157774],[-2.9128206995762818,51.415254281517015],[-2.91282071315218,51.41525428647879],[-2.9107671099606294,51.41755519403188],[-2.9107671020770094,51.41755519127459],[-2.9107668709531835,51.41755546131641],[-2.91076668750722,51.41755566670964],[-2.910766693638647,51.41755566891517],[-2.9087774733056433,51.41987853856433],[-2.9087774614785005,51.419878534702505],[-2.9087771195294696,51.41987895128853],[-2.908777063948368,51.41987901619616],[-2.9087770661380534,51.419879017023064],[-2.9068527861655955,51.42222320706739],[-2.906852783099668,51.42222320596453],[-2.9068527014428547,51.422223310048096],[-2.906852390789773,51.42222368828405],[-2.906852401741185,51.42222369187017],[-2.9049936563491263,51.42458849038528],[-2.904993648900789,51.424588488177015],[-2.904993455501416,51.42458874538532],[-2.904993273632321,51.42458897683081],[-2.9049932802031586,51.42458897903744],[-2.9032005948509196,51.42697373424411],[-2.9032005834585553,51.426973730931124],[-2.9032002958901537,51.42697413169313],[-2.9032002751360877,51.42697415908423],[-2.903200276012331,51.42697415936018],[-2.901473901000057,51.42937857876252],[-2.901473915899291,51.42937858290519],[-2.899815141227388,51.43180087876299],[-2.8998151254498827,51.431800874618446],[-2.8982237318188515,51.43424138070379],[-2.898223727435792,51.43424137959818],[-2.8982236301184434,51.43424153658545],[-2.898223405934409,51.43424188040204],[-2.898223415576866,51.43424188288923],[-2.8967005540837643,51.43669884971019],[-2.896700547070014,51.43669884805085],[-2.896700400573686,51.43669909683234],[-2.8967002399807,51.436699356284315],[-2.8967002474319745,51.4366993582188],[-2.89524602623575,51.43917260649037],[-2.8952460249204366,51.43917260621352],[-2.8952460049942834,51.43917264155948],[-2.895245765523404,51.43917304925231],[-2.895245777359831,51.43917305201831],[-2.8938606876390174,51.44166177192549],[-2.893860676678486,51.441661769435356],[-2.893860475047018,51.441662153609435],[-2.8938604037418143,51.44166228129373],[-2.893860407687931,51.44166228212433],[-2.892544917786271,51.444165645878364],[-2.892544914278897,51.44416564504857],[-2.8925448592897287,51.44416575630611],[-2.892544646116001,51.44416616185049],[-2.8925446575160008,51.44416616434158],[-2.891299142832519,51.446683474709474],[-2.8912991371315466,51.446683473601006],[-2.8912990488127552,51.44668366406461],[-2.8912988851606043,51.446683994546376],[-2.891298894808091,51.446683996485554],[-2.890123740550989,51.44921449689632],[-2.8901237304640364,51.44921449495618],[-2.8901235767738003,51.44921484849715],[-2.8901234995413323,51.44921501511777],[-2.89012350436601,51.44921501595026],[-2.889019050079457,51.45175800723425],[-2.8890190347266445,51.451758004734906],[-2.8879852673664077,51.454313619950014],[-2.887985283159054,51.454313622450364],[-2.8870233464972284,51.45687905362213],[-2.8870233416717954,51.45687905278951],[-2.887023284174217,51.45687921917335],[-2.88702314839183,51.45687958124918],[-2.8870231589208153,51.45687958291617],[-2.886132929484501,51.459455106653635],[-2.8861329141278445,51.4594551044282],[-2.8853145092989867,51.46204046473296],[-2.885314499206556,51.46204046334098],[-2.8853143967990205,51.46204081944765],[-2.885314340547611,51.462040997079306],[-2.8853143458126724,51.46204099791288],[-2.884568341557622,51.46463441805218],[-2.8845683393633723,51.46463441777343],[-2.884568320988532,51.464634488779446],[-2.8845682082833517,51.46463488052322],[-2.884568219254604,51.464634881917036],[-2.8838947108946917,51.46723603455462],[-2.8838947087003217,51.46723603427584],[-2.883894692078588,51.46723610555959],[-2.883894571953226,51.46723657025089],[-2.8838945851208817,51.46723657164924],[-2.883293803526215,51.46984459471129],[-2.883293791673946,51.46984459358987],[-2.8832937064555004,51.469845015561155],[-2.883293679939784,51.46984513071234],[-2.8832936834518343,51.46984513099382],[-2.8827658062228014,51.47245930178612],[-2.8827658031497654,51.472459301505516],[-2.882765786397565,51.47245939692706],[-2.882765697105486,51.47245984001041],[-2.8827657098368373,51.47245984113369],[-2.8823109098225714,51.47507936413153],[-2.882310900601502,51.47507936356401],[-2.882310854108922,51.475079684671925],[-2.882310816065402,51.47507990266101],[-2.88231082221182,51.47507990322222],[-2.8819292403825156,51.47770405429442],[-2.881929225451968,51.47770405344083],[-2.8816208863203316,51.48033297020164],[-2.881620904766025,51.4803329710625],[-2.881386155527451,51.48296376340349],[-2.881386137957876,51.482963762818684],[-2.881224903461902,51.48559725307441],[-2.8812248955552846,51.48559725278382],[-2.881224886154527,51.48559753501692],[-2.8812248702841132,51.48559779446998],[-2.8812248777513934,51.48559779475968],[-2.8811372841000233,51.48823214265691],[-2.8811372823440244,51.488232142379],[-2.8811372820436127,51.48823219915803],[-2.881137267413633,51.4882326391014],[-2.8811372797143298,51.48823263940107],[-2.881123337663144,51.490867553801216],[-2.8811233262376104,51.490867554051945],[-2.8811233354990033,51.49086796277449],[-2.8811233348719685,51.49086808126976],[-2.881123338388522,51.4908680810027],[-2.881183063839331,51.493502714912715],[-2.881183056367858,51.49350271517161],[-2.88118306949998,51.49350297386122],[-2.8811830755507,51.49350324213662],[-2.8811830834615875,51.49350324187864],[-2.8813164966082376,51.496137349436836],[-2.8813165133098,51.49613734892265],[-2.881523534304272,51.498769073249875],[-2.881523514084589,51.49876907403115],[-2.881804174061183,51.50139866631493],[-2.8818041679054414,51.50139866685087],[-2.8818041970863764,51.50139888360558],[-2.881804230172829,51.50139919308072],[-2.8818042389655054,51.50139919255021],[-2.882158353355014,51.504024800909065],[-2.8821583463198923,51.50402480144322],[-2.8821583867623666,51.50402505031361],[-2.882158423990883,51.504025325235595],[-2.882158431905035,51.50402532470324],[-2.882585961976955,51.50664667517805],[-2.88258596153597,51.506646675451435],[-2.882585963247939,51.50664668423244],[-2.8825860471308538,51.50664719871092],[-2.8825860616414323,51.50664719764348],[-2.883086889178617,51.509263488503294],[-2.8830868834613943,51.509263489040194],[-2.883086927683545,51.50926368964152],[-2.8830869892882673,51.509264012066126],[-2.8830869985234506,51.509264011262125],[-2.8836609832011098,51.511874444437375],[-2.8836609660484807,51.51187444604816],[-2.8843082041726236,51.51447926806572],[-2.88430822220687,51.514479266182335],[-2.8850280117014853,51.51707559839721],[-2.885028002902971,51.51707559947655],[-2.8850280954095076,51.517075902213016],[-2.885028155396112,51.51707611793157],[-2.8850281615553524,51.51707611712119],[-2.8858205535539168,51.51966421064575],[-2.885820535955921,51.51966421280454],[-2.886685474303877,51.52224379312432],[-2.886685473423072,51.52224379339685],[-2.8866854820919534,51.52224381755236],[-2.8866856470714675,51.52224430914884],[-2.886685661151469,51.52224430725713],[-2.887622547494278,51.52481355517174],[-2.8876225395723436,51.52481355652734],[-2.8876226493849453,51.52481383515795],[-2.8876227348025925,51.52481406930371],[-2.8876227414039644,51.524814068219776],[-2.8886314756193356,51.52737271463817],[-2.888631472097203,51.52737271545403],[-2.8886315238024123,51.527372837070324],[-2.8886316774692933,51.52737322715153],[-2.888631688472626,51.52737322525343],[-2.8897119745690905,51.529920490103194],[-2.8897119653256387,51.52992049173059],[-2.8897121131829695,51.529920817339146],[-2.889712190530234,51.529920999625226],[-2.8897121958130034,51.52992099853854],[-2.890863714254354,51.53245609993663],[-2.890863699287601,51.53245610264999],[-2.892086601828404,51.53497928319832],[-2.9072198962713003,51.53203500558465],[-2.9084288829210463,51.534379079472174],[-2.905692797058237,51.53494443628795],[-2.9069839469755783,51.53730563563519],[-2.909703917394757,51.536710548430776],[-2.9084291393537263,51.53437954240282],[-2.9111651561604006,51.53381411513946],[-2.9124238168717387,51.536115398114866],[-3.0062168793524298,51.51554408136701],[-3.0055160628697766,51.5142675425744],[-3.005516061550228,51.51426754284739],[-3.0048513605965366,51.51298407293425],[-3.048827612597143,51.50437116925964],[-3.048432082586379,51.503560833530464],[-3.0884833487871393,51.49617638454949],[-3.088310453807556,51.49579934934299],[-3.0994120690830127,51.4938805145477],[-3.0993016153743436,51.49362286414773],[-3.099198411617549,51.49336411983833],[-3.1033989443730143,51.49273542064633],[-3.1033198951555945,51.49252141703337],[-3.106131467241785,51.49213277418237],[-3.1060688393277407,51.4919486335685],[-3.1074798223815745,51.49176963257252],[-3.1074271355353753,51.49160023659628],[-3.107379193859574,51.49143029537361],[-3.110219406338508,51.49113394186421],[-3.110258632602277,51.49127295681025],[-3.110258631723417,51.49127295708445],[-3.110258637430496,51.49127297518863],[-3.1102586400641825,51.49127298478929],[-3.11025864050365,51.491272984515035],[-3.11030175533272,51.49141157936928],[-3.1131236440690917,51.49105345825165],[-3.1131601928576296,51.4911608714107],[-3.1131601937364772,51.49116087113648],[-3.113199732427242,51.49126784812643],[-3.11319973198779,51.49126784840068],[-3.113199737696735,51.491267863213174],[-3.113199740331688,51.49126786979651],[-3.1131997407711443,51.49126786952225],[-3.1132422724575135,51.4913744210379],[-3.113242273336362,51.49137442076368],[-3.1132877681752062,51.491480471093524],[-3.113287775641501,51.49148048727762],[-3.1132877778373733,51.491480492489444],[-3.1133362318956066,51.491586030657885],[-3.1119556452491537,51.49184118436584],[-3.111900261430316,51.49172054441127],[-3.1105127405499595,51.49196060103113],[-3.110454242781037,51.4918242217609],[-3.1103995665365676,51.491687226250605],[-3.108999464542911,51.49189688995807],[-3.1089429831721307,51.49174403291468],[-3.107537225039555,51.4919383935972],[-3.107599362436346,51.49210657041075],[-3.108999476397391,51.49189692040638],[-3.1089994728853,51.491896910257],[-3.109060211317634,51.49204910809237],[-3.1090602135132146,51.49204911275568],[-3.109060223611587,51.492049138540736],[-3.1090602244903947,51.49204913854082],[-3.1091252182683404,51.492200671401186],[-3.1105127524063576,51.49196062818773],[-3.1105127436238917,51.49196060788886],[-3.110575055485183,51.49209634924312],[-3.1119556562282478,51.491841208779235],[-3.1119556549107736,51.491841205761865],[-3.1120143922430867,51.491961203325474],[-3.1120143975134518,51.49196121347494],[-3.1120144041012354,51.491961226916075],[-3.11207649936374,51.49208058729577],[-3.112076500242608,51.49208058702156],[-3.1121419090986047,51.49219922874194],[-3.1121419174438074,51.492199243280425],[-3.112141922714426,51.49219925260699],[-3.112210639916702,51.492317163593015],[-3.1122106403559204,51.49231716441594],[-3.11221065353272,51.49231718690945],[-3.112210653972195,51.49231718663519],[-3.1122826580205705,51.4924343312206],[-3.1109429151061208,51.49276361625601],[-3.1108618985943783,51.492631802473895],[-3.110861898155194,51.49263180165095],[-3.1107845795025098,51.492499124161526],[-3.10942723253446,51.49279900358395],[-3.1093454620150554,51.492650670267494],[-3.109267851264117,51.49250146813214],[-3.1078945562069595,51.492771576672986],[-3.107979923282504,51.492935699955716],[-3.106614368397733,51.493220713457845],[-3.106712503608576,51.49339875174255],[-3.109427248783713,51.49279903348412],[-3.109427246587969,51.49279902909513],[-3.1095131373853557,51.49294642418253],[-3.109513146169259,51.49294643872125],[-3.1095131549530985,51.49294645353426],[-3.109603170455712,51.49309291532147],[-3.11094293091787,51.492763642590084],[-3.111027604028587,51.49289452791913],[-3.111027603589117,51.49289452819337],[-3.111027605346032,51.49289453093651],[-3.1110276207191916,51.49289455452756],[-3.1110276215980797,51.49289455425336],[-3.1111159588008293,51.493024523465536],[-3.11243648106048,51.492666246826865],[-3.112518208289527,51.492780877935616],[-3.1125182078500555,51.49278087820988],[-3.1125182179533053,51.49278089192559],[-3.1125182245423613,51.49278090097797],[-3.1125182249818284,51.49278090070371],[-3.112603144699174,51.49289462411537],[-3.1126031438202975,51.4928946243896],[-3.112691248577561,51.49300742720474],[-3.112691248138083,51.49300742747899],[-3.112691253409525,51.49300743406258],[-3.112691266148789,51.493007450247184],[-3.1126912670276687,51.49300744997296],[-3.112782511596354,51.493119275949745],[-3.114059767820726,51.49270435235268],[-3.1141423164019484,51.49280129548947],[-3.1141423159624906,51.49280129576373],[-3.1141423295812376,51.49280131085106],[-3.114142333095665,51.49280131524006],[-3.114142333535118,51.4928013149658],[-3.1142275968720643,51.49289736294268],[-3.114227597750946,51.492897362668444],[-3.1143155169873746,51.492992448272624],[-3.1143155161084994,51.49299244854686],[-3.1144061171755784,51.49308659920389],[-3.115633877397029,51.49261705202663],[-3.1157137493050207,51.49269686134134],[-3.115713748865562,51.492696861615606],[-3.115713757652367,51.49269687011933],[-3.1157137651211206,51.4926968775258],[-3.1157958568996547,51.49277580423575],[-3.1157958560207955,51.492775804509996],[-3.1158801751453233,51.49285385629134],[-3.1158801755847723,51.49285385601707],[-3.1159666297990656,51.49293094645615],[-3.1159666394648164,51.49293095468562],[-3.1159666473731025,51.49293096181779],[-3.1160552441514158,51.49300709831636],[-3.116055248105617,51.49300710160816],[-3.116055262164928,51.493007113678026],[-3.1160552626043807,51.49300711340375],[-3.1161459747117455,51.4930822734631],[-3.116145974272286,51.49308227373737],[-3.116238811379439,51.49315646338773],[-3.1173657295823736,51.49259699654471],[-3.117288375346041,51.49253518094515],[-3.117212765864216,51.49247253590785],[-3.1171389103604024,51.492409068842626],[-3.117138909481699,51.49240906801968],[-3.1170668637506886,51.4923448269345],[-3.118253525045277,51.491835785527265],[-3.118311162833553,51.49188717782042],[-3.1183111623941238,51.491887178094714],[-3.118370240290738,51.4919379444716],[-3.1183702398513,51.49193794474589],[-3.118430727981825,51.49198806051654],[-3.1184307358904046,51.491988066825655],[-3.118430739844682,51.491988070117365],[-3.11849260789507,51.49203750922027],[-3.117365714644068,51.49259698420067],[-3.1174447798066405,51.492657943476424],[-3.117444786836515,51.49265794868838],[-3.1174447960632032,51.492657955820526],[-3.117525538762672,51.492718032160724],[-3.117525537883825,51.492718032434986],[-3.1176079647124717,51.49277723214533],[-3.117607964273032,51.4927772324196],[-3.1176920501885026,51.49283553684328],[-3.1198152777955714,51.49162115093666],[-3.1198666893277585,51.49165557075774],[-3.1198666897671763,51.49165557048346],[-3.1199190562269274,51.49168942498202],[-3.1199723503728625,51.49172269660115],[-3.118963108137045,51.492363745099524],[-3.1190354259509974,51.492407345051326],[-3.1190354263904254,51.49240734477704],[-3.1191089224572615,51.49245013335443],[-3.119108933002469,51.4924501393893],[-3.119108936956941,51.49245014158381],[-3.119183618745695,51.49249212235065],[-3.119183626215268,51.492492126191046],[-3.119183634124192,51.49249213085434],[-3.119259477907243,51.492533291464305],[-3.119259493285786,51.492533299693676],[-3.119336476653475,51.492573627526184],[-3.1193364762140425,51.492573627800475],[-3.119414606634746,51.492613126967996],[-3.1194146070741646,51.49261312669371],[-3.119493798426128,51.49265175330399],[-3.1194937979867037,51.49265175357827],[-3.1195740731164565,51.49268951860168],[-3.1195740836618926,51.49268952326502],[-3.119574089813368,51.49268952628246],[-3.1196553924767794,51.49272640365703],[-3.1188191970786217,51.49345811438277],[-3.118922140985284,51.493503115766394],[-3.1189221414247217,51.49350311549211],[-3.119026286118087,51.49354697081577],[-3.1190263072092814,51.49354697959398],[-3.1191316632306196,51.4935896932436],[-3.119131662791167,51.49358969351789],[-3.1191316658669903,51.49358969461516],[-3.1191316838824363,51.49358970202176],[-3.119238218272034,51.493631261375405],[-3.11923821783259,51.49363126164968],[-3.1192382292570913,51.493631265764485],[-3.1192382393633356,51.49363126987925],[-3.1192382398027747,51.493631269604975],[-3.1193459196004967,51.493671662040796],[-3.11934591916103,51.493671662589385],[-3.119454755346817,51.493710891396155],[-3.119454755786276,51.493710890847574],[-3.1195646283969616,51.49374891267979],[-3.119564627957526,51.49374891295407],[-3.119564633230419,51.4937489146],[-3.119564650367258,51.49374892063503],[-3.1195646508066974,51.49374892036075],[-3.1196755699425345,51.493785739330214],[-3.119675569503097,51.49378573960448],[-3.119787546143061,51.493821358725846],[-3.119900457246197,51.49385573849417],[-3.119900456806755,51.49385573876845],[-3.1200143344428923,51.49388888987944],[-3.120014339715831,51.49388889125106],[-3.12001435729226,51.49388889646313],[-3.120129144770313,51.49392080163193],[-3.1207033383278056,51.49309654731502],[-3.120611510107354,51.49307102330576],[-3.1205204088294756,51.493044502995645],[-3.120430063499558,51.493016994067254],[-3.1203405009256495,51.492988504751835],[-3.1210053871821546,51.49219125943736],[-3.1210725582413024,51.49221262605249],[-3.1211403028146383,51.4922332534095],[-3.1212086274906294,51.49225314342756],[-3.121208637157402,51.492253146170675],[-3.1212086411119886,51.49225314726792],[-3.121277497114831,51.49227228568187],[-3.1207033194333857,51.49309654182872],[-3.1207958477878717,51.49312106158031],[-3.1207958653641295,51.49312106596938],[-3.120795866242946,51.4931210662437],[-3.1208890472705915,51.493144569391795],[-3.1208890556193336,51.493144571312016],[-3.120889066165096,51.49314457405517],[-3.120982890193744,51.49316705812936],[-3.120982901178938,51.49316706059822],[-3.120982909088281,51.493167062518424],[-3.121077347551055,51.493188520933636],[-3.121077362051536,51.49318852395113],[-3.1210773664456175,51.49318852504839],[-3.1211723907754645,51.49320895149385],[-3.1211724092306565,51.493208955059984],[-3.1211724096700535,51.49320895533428],[-3.121267989981487,51.493228343225056],[-3.121268004042598,51.49322834596821],[-3.121268009754921,51.49322834706549],[-3.121364117480518,51.49324669009098],[-3.121364117480499,51.49324669063958],[-3.1214607433866415,51.49326398770124],[-3.121460762720712,51.49326399099305],[-3.1215578580267795,51.493280232762906],[-3.1216553924071526,51.49329541402785],[-3.1217533170807803,51.493309527105964],[-3.1217533170807643,51.49330952765456],[-3.1218516399505347,51.49332257473932],[-3.1218516588452716,51.49332257693389],[-3.121851660163503,51.4933225772082],[-3.1219503333269403,51.49333455089219],[-3.121950333326952,51.49333455034359],[-3.1220493071236897,51.49334544568821],[-3.1221486096694058,51.493355264612966],[-3.122148609669417,51.49335526406437],[-3.1222481324221754,51.49336399614448],[-3.1222481403316205,51.493363996693134],[-3.122248152195784,51.4933639977904],[-3.1223479043763116,51.49337164384825],[-3.1221848877380753,51.494264679393744],[-3.1223098515573784,51.49427287891078],[-3.122309856391027,51.4942728791851],[-3.1223098774833047,51.494272880556714],[-3.1224350518479094,51.494279716963476],[-3.1224350518479174,51.49427971641488],[-3.1225603993957622,51.494285188613375],[-3.1225603993957667,51.49428518806479],[-3.1226858559599404,51.49428929331135],[-3.1226858810070515,51.49428929386001],[-3.1228114580013355,51.49429203160568],[-3.1228114580013377,51.49429203105709],[-3.1229370675298567,51.49429340020428],[-3.1230627464928706,51.49429340020428],[-3.123188355142544,51.49429203133138],[-3.1231883801896587,51.494292031057036],[-3.123313932136829,51.494289293860014],[-3.1233139571839397,51.49428929331135],[-3.1234394133086965,51.49428518861338],[-3.1235647608565476,51.49427971696347],[-3.1236899365394164,51.49427288028241],[-3.1236899391759505,51.4942728800081],[-3.1236899611470803,51.49427287891079],[-3.123814926284646,51.49426467911944],[-3.1239396175890763,51.49425512115632],[-3.1240640482320874,51.49424420419932],[-3.1241881790942245,51.4942319307183],[-3.1241881790942116,51.494231930169704],[-3.1243118985517095,51.494218311687305],[-3.124435242187101,51.49420334436425],[-3.1244352645975386,51.49420334134671],[-3.1244352672340647,51.49420334107238],[-3.1245581493498236,51.49418703533419],[-3.124558156819962,51.4941870342369],[-3.1245581735179253,51.49418703204231],[-3.1246805813605776,51.494169389536395],[-3.124680583118256,51.49416938926207],[-3.1246806059680723,51.494169385970174],[-3.1248025017373937,51.494150412733106],[-3.1249238726802355,51.49413011041248],[-3.125044657268157,51.49410848861135],[-3.1250446625411654,51.494108487514076],[-3.125044681436134,51.494108484222195],[-3.125164818141076,51.49408555446392],[-3.1251648313235734,51.4940855517207],[-3.1251648431878394,51.49408554952612],[-3.125284320136229,51.49406131455585],[-3.125284330242801,51.49406131236129],[-3.1252843438647098,51.49406130961806],[-3.1254031500619255,51.49403577108381],[-3.1249224655928134,51.49318852065933],[-3.125016904055604,51.49316706251844],[-3.125110765873291,51.493144569391795],[-3.125203946900937,51.4931210662437],[-3.1252039477797493,51.49312106596939],[-3.1252039653560053,51.49312106158031],[-3.1252964937105054,51.49309654210301],[-3.125388303915336,51.49307102303146],[-3.1259854567304397,51.49388889618882],[-3.1260993334877694,51.49385574507787],[-3.1260993392000818,51.493855743157646],[-3.126099356776507,51.49385573821984],[-3.126212266121987,51.49382135872587],[-3.126212269197832,51.49382135762859],[-3.126212289410666,51.493821351593525],[-3.126324221670371,51.49378574646252],[-3.126324222109767,51.4937857461882],[-3.1263242432013625,51.493785739604505],[-3.126435162776594,51.49374892036073],[-3.126435179913441,51.49374891432571],[-3.1264351851863306,51.49374891267977],[-3.12654505823644,51.49371089084757],[-3.1265450657063187,51.49371088810435],[-3.126545079327898,51.49371088344091],[-3.1266538948616365,51.493671662040754],[-3.126653894422203,51.49367166176648],[-3.126761574659333,51.493631269330635],[-3.1267615887202225,51.493631263844264],[-3.12676159531126,51.493631261375384],[-3.1268681297008336,51.49358970174744],[-3.1268681367312694,51.49358969900426],[-3.126868151231515,51.49358969324355],[-3.1269735054951786,51.493546979593994],[-3.1269735085709742,51.493546978222405],[-3.1269735270258003,51.493546970815785],[-3.12707767215857,51.49350311549209],[-3.1278933044479356,51.49424382113968],[-3.1280168131919472,51.494189830028105],[-3.1280168197829465,51.49418982701058],[-3.128016838677188,51.49418981878088],[-3.128016838237734,51.4941898185066],[-3.1281387949430757,51.49413450056139],[-3.128138795382529,51.49413450083567],[-3.1282592092716164,51.49407785167248],[-3.1282592220140875,51.49407784536309],[-3.1282592338778312,51.49407783987663],[-3.128378020581722,51.49401989900271],[-3.1283780210211702,51.49401989927699],[-3.1283780368393774,51.49401989132167],[-3.128378045187882,51.49401988720684],[-3.1284952183240233,51.493960648866214],[-3.1284952178845664,51.49396064859194],[-3.128610694404188,51.49390015448644],[-3.128610701873814,51.493900150371644],[-3.1286107176918994,51.49390014214199],[-3.128610717252445,51.49390014186772],[-3.1287244848497986,51.49383839858601],[-3.128724485289264,51.49383839886029],[-3.1288365527496347,51.49377540064665],[-3.1288365523101787,51.49377540037238],[-3.1289467957247066,51.4937112169092],[-3.1289467966036155,51.49371121745775],[-3.129055252440312,51.49364582845033],[-3.129055260349163,51.493645823512594],[-3.1290552730912364,51.49364581583163],[-3.129161862260607,51.493579268742266],[-3.1291618745631973,51.49357926078704],[-3.1291618837901534,51.493579255026326],[-3.1292665957471857,51.49351155644376],[-3.129266596186645,51.49351155671803],[-3.129266613322272,51.49351154519667],[-3.1292666155191546,51.49351154382507],[-3.129369418629338,51.49344271487681],[-3.1293694247805703,51.493442710762025],[-3.129369439719269,51.493442700612256],[-3.1293694392798153,51.49344270033799],[-3.1294703019093157,51.49337276215157],[-3.1294703023487624,51.493372762425835],[-3.1294703150905017,51.49337275337336],[-3.1294703216810427,51.49337274870995],[-3.129569213075517,51.4933017224129],[-3.129569224499038,51.49330171390906],[-3.129569233286409,51.493301707599755],[-3.1296661218134765,51.4932296154168],[-3.129666122252928,51.49322961569107],[-3.129666136312577,51.49322960499271],[-3.129666142024311,51.49322960060365],[-3.1297610017643613,51.49315646283913],[-3.130887947555882,51.49371591852678],[-3.1309962343425384,51.49362938058882],[-3.130996234782,51.49362938086309],[-3.1309962536742333,51.49362936550121],[-3.1309962567496608,51.493629362758035],[-3.1311020874663704,51.493541675038365],[-3.1311020988894436,51.49354166516291],[-3.131102107237122,51.49354165830492],[-3.1312054695882092,51.49345283068568],[-3.1312054774964024,51.493452823553426],[-3.1312054906768307,51.49345281230635],[-3.131205490237365,51.49345281203209],[-3.131306351278747,51.49336287387177],[-3.1313063547934687,51.49336287057996],[-3.131306372367186,51.49336285494383],[-3.1313063719277254,51.49336285466956],[-3.1314047035487658,51.49327182984038],[-3.1314047039882325,51.49327183011464],[-3.1315004943350093,51.4931797295956],[-3.1315005035609853,51.49317972054316],[-3.131500513665633,51.49317971066777],[-3.1315937139806684,51.49308658055043],[-3.130365951562937,51.49261703611644],[-3.1304435798833716,51.49253636834108],[-3.1304435803228285,51.49253636861534],[-3.130518957155387,51.49245485088742],[-3.1305189668205404,51.49245484018925],[-3.1305189712137835,51.49245483525162],[-3.130592056587214,51.4923725084482],[-3.1305920557083637,51.49237250817397],[-3.1306628131680574,51.492289416189095],[-3.1306628180004927,51.49228941015425],[-3.130662827665497,51.49228939890748],[-3.130731251069826,51.49220554723166],[-3.1307312515092804,51.49220554750593],[-3.1307973333997383,51.492120946841275],[-3.130797344821527,51.49212093120562],[-3.1307973465788126,51.492120929285434],[-3.130861040837998,51.4920356380641],[-3.1308610500632534,51.492035625445844],[-3.1308610526989984,51.492035621605524],[-3.1309223523086405,51.4919496494322],[-3.1309223606551204,51.49194963708831],[-3.130922364608773,51.491949631602104],[-3.130981250250847,51.491863005911476],[-3.1323115441465217,51.49220687083295],[-3.132242835798191,51.49230795036172],[-3.132171310407174,51.49240826834781],[-3.1321713042571573,51.49240827657718],[-3.1320969815760096,51.492507804212785],[-3.1333966517524385,51.49289464743204],[-3.13348158948021,51.49278090042928],[-3.1334815921157793,51.492780896588904],[-3.1334816057332904,51.49278087848413],[-3.1334816052938286,51.492780878209864],[-3.133563332522797,51.49266624682682],[-3.134883854782457,51.4930245234655],[-3.134972191985415,51.4928945550762],[-3.1349721972562508,51.492894547121054],[-3.1349722099941744,51.49289452819331],[-3.135056883104676,51.49276364204139],[-3.1350568896930575,51.49276363161745],[-3.135056898916799,51.4927636170788],[-3.1351378996165797,51.49263182853358],[-3.1351379026910404,51.49263182332164],[-3.1351379163067614,51.49263180110222],[-3.1351379158672796,51.49263180082798],[-3.1352152340809263,51.492499124710065],[-3.1338579040454047,51.49219922929052],[-3.133923326956362,51.492080562882165],[-3.1339233260774892,51.492080562607946],[-3.133985407724632,51.491961227739075],[-3.133985408603503,51.491961228013295],[-3.1340441573549715,51.491841208504894],[-3.1340441617465755,51.491841198629814],[-3.1340441683343814,51.491841185462974],[-3.1340995407345376,51.491720568824675],[-3.134099546004451,51.491720557029446],[-3.134099551713501,51.49172054413697],[-3.1341515433959333,51.491599342717286],[-3.1341515477870963,51.491599331196426],[-3.134151553056986,51.49159931940117],[-3.1342001473586385,51.49147757023616],[-3.1342001482374306,51.49147757023608],[-3.1342453416714267,51.49135528485071],[-3.1342453460622073,51.49135527195836],[-3.1342453500141274,51.49135526126041],[-3.134287107915645,51.49123252716249],[-3.135698057811158,51.49141157936927],[-3.135741173519399,51.491272985886425],[-3.135741178787002,51.49127296750798],[-3.1357411818599323,51.49127295735868],[-3.1357804072447637,51.491133941864156],[-3.1357804081235487,51.49113394186406],[-3.135815755511245,51.490994464587395],[-3.1358157546324636,51.490994464587494],[-3.1358471906994296,51.49085465226077],[-3.1358471898206486,51.490854652260865],[-3.1358747071439153,51.49071454548391],[-3.135874708022693,51.49071454548381],[-3.135898313217341,51.49057410448563],[-3.13589831189918,51.49057410448577],[-3.13591797912071,51.49043348397476],[-3.1359179804388684,51.49043348397463],[-3.1359337198095125,51.49029261428032],[-3.1344966146247266,51.49023789395936],[-3.1345071019372113,51.490112593211165],[-3.134507102815976,51.49011259321107],[-3.134514087289861,51.4899871729356],[-3.134514087724199,51.48998715291192],[-3.1345140881621294,51.48998714715165],[-3.1345175636967726,51.48986169430209],[-3.1345175650149146,51.48986169430197],[-3.134517533394093,51.489736198455226],[-3.134517532950775,51.489736182820366],[-3.1345175329481485,51.489736172397095],[-3.1345139937836253,51.48961072187665],[-3.134513993342796,51.48961071611647],[-3.1345139928983747,51.48961069609288],[-3.1345069453368857,51.48948527745798],[-3.134506944458132,51.48948527745807],[-3.134496392059133,51.48935995269875],[-3.1330593433857725,51.48941495776675],[-3.1330685751124907,51.48952463799273],[-3.1330747378378696,51.489634372241696],[-3.1330778315391057,51.48974415722256],[-3.1330778557475796,51.48985396056863],[-3.133074809997376,51.489963762256295],[-3.133068695570199,51.49007349727696],[-3.1330595120074904,51.49018317879639],[-3.1330472689302593,51.490292700386036],[-3.1316119178335335,51.490222295683175],[-3.1315987921831714,51.49031607970089],[-3.131583053415029,51.4904096680592],[-3.1315646936125128,51.49050310464511],[-3.1315437268064485,51.49059631621917],[-3.1315437263673185,51.49059631759069],[-3.131520159566913,51.490689275349915],[-3.1314939958303873,51.49078196832066],[-3.1314652412893316,51.490874372088385],[-3.131433910859178,51.49096643947113],[-3.1314000172609173,51.4910581350817],[-3.1313635525745913,51.491149479216375],[-3.1313245523602347,51.49124038244964],[-3.131283003866868,51.491330874952496],[-3.131238940900339,51.491420881288356],[-3.1311923599335065,51.49151040968353],[-3.1311432978500724,51.491599391009814],[-3.12978602125193,51.49129944842372],[-3.1297860203733476,51.49129944979526],[-3.1298269081219887,51.49122529879505],[-3.129826910318346,51.491225294680476],[-3.129826916468168,51.49122528343396],[-3.1298657234938845,51.49115070052351],[-3.129902454637519,51.49107567528134],[-3.1299370686180943,51.491000291097905],[-3.1299370708143046,51.491000286160435],[-3.12993707564599,51.49100027546259],[-3.129969576866036,51.4909245257564],[-3.1299695781837533,51.49092452273906],[-3.1299695830152947,51.490924511218324],[-3.1299999613821097,51.490848419032616],[-3.1300282138310482,51.4907719917752],[-3.13002821602694,51.49077198491766],[-3.1300282191014452,51.490771976962876],[-3.1300543245602994,51.490695269221554],[-3.130054326317091,51.49069526428412],[-3.1300543298305064,51.49069525331205],[-3.130078286553421,51.49061827386581],[-3.130078287870945,51.49061826975129],[-3.130078291384224,51.490618257956335],[-3.1301000932335334,51.490541028202],[-3.1301197358274506,51.49046355774141],[-3.1301197362664084,51.49046355499842],[-3.1301197397794485,51.490463541831986],[-3.1301372134681418,51.49038586906829],[-3.1301525103596166,51.49030803295304],[-3.13016563134257,51.49023002690391],[-3.1301656317814803,51.49023002388662],[-3.130165633976335,51.49023001072025],[-3.130176569843183,51.49015188877493],[-3.1301765711593514,51.49015187615721],[-3.130176571598346,51.49015187368852],[-3.1301853219221694,51.490073644350815],[-3.130185321921869,51.49007364243074],[-3.1301853236771553,51.490073628167224],[-3.1301918858365756,51.489995315301584],[-3.1301918867131806,51.4899953015867],[-3.1301918867129666,51.48999530021521],[-3.1301962585260927,51.48991692796025],[-3.1301984386872053,51.489838503722254],[-3.130198439565966,51.48983850372219],[-3.1301984272115067,51.48976005246234],[-3.1301962219221533,51.489681629862844],[-3.130191825470196,51.489603258141464],[-3.1301918254699803,51.489603256769975],[-3.130191824589067,51.48960324305521],[-3.1301852378658994,51.48952493098916],[-3.130185236106149,51.489524916725834],[-3.130185236105846,51.48952491480576],[-3.130176461762752,51.48944668653259],[-3.130165497173493,51.48936853464596],[-3.1301523515872374,51.48929053018751],[-3.130137030730403,51.489212695648476],[-3.130119533294911,51.489135025267856],[-3.1301195306569625,51.489135014296146],[-3.130119529338031,51.4891350090846],[-3.1300998632494768,51.489057541262454],[-3.1300998623707295,51.489057541262504],[-3.1300780333551432,51.488980298215424],[-3.1300540528531244,51.48890332081171],[-3.1300540502157084,51.48890331313157],[-3.130054048017755,51.488903306],[-3.1300279199951997,51.488826601369816],[-3.130027916478675,51.48882659122105],[-3.1300279142809337,51.488826585460956],[-3.129999640067691,51.488750162654576],[-3.1299692398929424,51.48867407405991],[-3.1299692363767764,51.48867406610552],[-3.1299692337395126,51.48867405924827],[-3.129936711129474,51.48859831336663],[-3.1299367045367403,51.48859829882931],[-3.1299367040972457,51.488598298006444],[-3.1299020691706585,51.48852291787643],[-3.12990206345714,51.48852290635631],[-3.1299020621385805,51.488522903339124],[-3.1298653254533817,51.48844791227344],[-3.1298653188609804,51.488447899656194],[-3.129865317542471,51.488447896913314],[-3.129826490535067,51.48837331822454],[-3.1298264896560464,51.48837331630451],[-3.129826482624222,51.48837330313869],[-3.129785575851699,51.488299157945015],[-3.1297855749727663,51.48829915657359],[-3.1297855679410045,51.488299143682056],[-3.129742586246594,51.488225440484214],[-3.1283940872409453,51.48854028336653],[-3.1284284712586334,51.488599246482885],[-3.1284612077765583,51.48865858654871],[-3.128492267784225,51.48871824953033],[-3.128521661823,51.48877825517792],[-3.128549373626333,51.48883857112649],[-3.1285753970353736,51.48889918448559],[-3.1285997188588865,51.48896006371289],[-3.1285997201774007,51.48896006700436],[-3.128622336453451,51.4890212022264],[-3.1286432419012606,51.48908257863238],[-3.1272324247195105,51.48926183428929],[-3.1272167506133397,51.48921581146684],[-3.127216747536935,51.48921580296378],[-3.127216747097463,51.48921580186659],[-3.1271997887494476,51.489169957106114],[-3.1271997878705005,51.48916995491177],[-3.1271997852336026,51.48916994778016],[-3.1271815474817046,51.48912429397287],[-3.1271815439659156,51.4891242851955],[-3.127162029011096,51.489078827826646],[-3.127141250480402,51.48903359926209],[-3.127119206619395,51.48898859538682],[-3.1270959031445034,51.48894382936612],[-3.1270713615918737,51.48889934179439],[-3.1270713589552384,51.488899337131436],[-3.127071356758045,51.48889933329136],[-3.127045570099734,51.48885511072755],[-3.125697034384042,51.4891699225669],[-3.1256790258091063,51.489140638536206],[-3.1256790231726095,51.48914063414753],[-3.1256790222937942,51.48914063305036],[-3.125660198276786,51.489111549545996],[-3.1256601973979588,51.48911154817453],[-3.1256601943220743,51.48911154351155],[-3.125640560137314,51.48908266985909],[-3.1256405592584993,51.48908266876192],[-3.1256405561826193,51.48908266409895],[-3.12562011798306,51.48905400852675],[-3.1255988775275863,51.489025574325915],[-3.125598875330562,51.48902557158299],[-3.125598873133536,51.48902556856578],[-3.1255768453631148,51.488997375484885],[-3.125554023687848,51.48896941584335],[-3.125530433154723,51.48894172036137],[-3.1255304292001362,51.48894171597271],[-3.12553042832133,51.488941714875544],[-3.1255060623402917,51.48891427477531],[-3.125480933215505,51.48888710486811],[-3.1254550484176207,51.48886021283359],[-3.1254284206899414,51.48883361183723],[-3.1278568323998837,51.48786767327978],[-3.1278020749790416,51.487815039943456],[-3.127745876647353,51.487763032035595],[-3.1277458770866913,51.48776303176129],[-3.1276882229069654,51.487711633919815],[-3.127688218073587,51.48771162980556],[-3.1276882110431745,51.48771162349702],[-3.1276291396852867,51.48766087137683],[-3.127629140124609,51.48766087110253],[-3.1275686480755036,51.48761076113579],[-3.127568648514832,51.48761076086148],[-3.127506763897869,51.48756131636015],[-3.1275067586251604,51.4875613122459],[-3.127506752034271,51.48756130703452],[-3.127443507805719,51.48751255460191],[-3.1274435082450487,51.4875125543276],[-3.1274434950633823,51.487512544727714],[-3.1274434946239773,51.48751254417913],[-3.1273788855125844,51.48746447915022],[-3.1262841822225864,51.488048249834165],[-3.1262347346683987,51.48801274050173],[-3.126234729395789,51.48801273693602],[-3.1262347245625555,51.48801273337029],[-3.1261842819668098,51.48797776139079],[-3.1261842815274705,51.487977761665086],[-3.126132879920042,51.48794335144864],[-3.1261328720111687,51.487943346237216],[-3.126132869814265,51.48794334486579],[-3.1260805135892835,51.48790949997691],[-3.127107325768672,51.487279481960236],[-3.1270362380550365,51.487235105707995],[-3.1250181290305443,51.48851732033478],[-3.124981984829857,51.48849553083441],[-3.124981979117936,51.48849552754296],[-3.12498197736042,51.488495526445796],[-3.124945229959997,51.48847413439989],[-3.124907881556625,51.48845314145363],[-3.124907881995983,51.48845314117934],[-3.124869953240197,51.488432558303685],[-3.1248314546768245,51.48841239208105],[-3.124831452919321,51.48841239125819],[-3.1248314467680602,51.48841238796672],[-3.1247923990474336,51.48839264854518],[-3.124792392896182,51.488392645528016],[-3.1247923906992985,51.488392644430874],[-3.1247527973360043,51.48837333318132],[-3.124712661405275,51.48835445257183],[-3.124712656132788,51.48835445010325],[-3.124712653057176,51.488354448731826],[-3.124672002678429,51.48833601137907],[-3.124671996966581,51.488336008910494],[-3.1246719952090922,51.48833600808763],[-3.12463082730616,51.48831801289398],[-3.123815380043358,51.489058759168344],[-3.1237945527421647,51.48904998895471],[-3.123773478525395,51.48904144530791],[-3.123752169255987,51.489033132616484],[-3.1237306258125286,51.48902505170318],[-3.1237088684060366,51.48901720969946],[-3.1236868913244096,51.48900960468518],[-3.123664704673036,51.489002240226],[-3.123642311087913,51.48899511714467],[-3.1236197259468734,51.48898824037833],[-3.1235969571583673,51.48898161239553],[-3.1235969545221223,51.48898161157264],[-3.123596952325259,51.48898161102406],[-3.1235740016464764,51.48897523182465],[-3.123550871713373,51.4889691025057],[-3.1235275730705916,51.48896322608433],[-3.123527572191844,51.48896322581003],[-3.1235275686768644,51.48896322498715],[-3.1235041092328015,51.48895760310901],[-3.1234804968958305,51.48895223796833],[-3.123456743089314,51.48894713230795],[-3.123913562790006,51.48809476275861],[-3.1239610792906256,51.48810497663393],[-3.124008293541571,51.488115704524304],[-3.1240552116953606,51.48812694780155],[-3.1241018069520132,51.488138700157435],[-3.124101809148839,51.48813870070602],[-3.1241480665711894,51.48815095857521],[-3.1241939808880836,51.488163720312414],[-3.1242395274961723,51.48817697906083],[-3.1242846976092595,51.48819073235236],[-3.1243294705781413,51.4882049738788],[-3.124329476729307,51.48820497579881],[-3.1243294798048935,51.48820497689596],[-3.124373842888955,51.48821970254349],[-3.124417803997851,51.48823491478113],[-3.1244178061946957,51.488234915604],[-3.1244613279830067,51.48825060208932],[-3.1245043972704707,51.48826675733709],[-3.1245470250422693,51.48828338601062],[-3.124589163847078,51.488300469458935],[-3.1246308360935995,51.4883180164597],[-3.1262616596874806,51.486836510186855],[-3.1261783342500493,51.48680142417736],[-3.1261783171148614,51.48680141704611],[-3.1260940406732614,51.48676725126744],[-3.1260940349615587,51.48676724907322],[-3.1260940235381156,51.48676724441049],[-3.1260087873021636,51.486733995294955],[-3.125922635204887,51.48670167984584],[-3.125922634765556,51.48670168012014],[-3.1258356085428027,51.486670313695],[-3.1258355958013917,51.486670309306554],[-3.125835590529073,51.48667030738662],[-3.1257476844656207,51.48663988861218],[-3.125747684026295,51.48663988888649],[-3.1256589596285322,51.48661043860593],[-3.1256589600678772,51.48661043833161],[-3.125569388773536,51.48658194749195],[-3.1254790698730925,51.48655444763326],[-3.125479059767914,51.48655444461622],[-3.125479051420152,51.486554442147735],[-3.1253879800761553,51.486527931074015],[-3.1253879791974426,51.48652793079973],[-3.125387961183883,51.48652792558846],[-3.125296162874297,51.48650241070349],[-3.125203646381404,51.486477894748376],[-3.1252036318827483,51.48647789118279],[-3.1252036270498507,51.4864778898114],[-3.125110456074979,51.4864543897897],[-3.125110448166631,51.48645438786976],[-3.125110439379572,51.48645438567554],[-3.125016606009177,51.486431899940065],[-3.1249221809736065,51.486410445220166],[-3.1254027046578785,51.48556317623824],[-3.125283919245662,51.48553764241422],[-3.1251644381151116,51.48551340700309],[-3.1251644337216864,51.48551340618028],[-3.1251644135119143,51.485513402066196],[-3.1250442946471675,51.48549047603668],[-3.12492350684557,51.48546885390142],[-3.1245388162537977,51.48633498583803],[-3.124635430509284,51.48635228085355],[-3.124731550172997,51.48637062607857],[-3.12482714713257,51.48639001685165],[-3.124827150647379,51.48639001767449],[-3.1249221612027798,51.48641044055745],[-3.1244416241002653,51.48725770854453],[-3.1243703654554347,51.487242391031224],[-3.1242986596167355,51.487227846173056],[-3.1242265856653115,51.48721409015185],[-3.1241541106459643,51.487201116384185],[-3.12408131363953,51.48718893940629],[-3.124081311003398,51.487188939132],[-3.124081298701409,51.487188936937756],[-3.124008172674635,51.487177554829],[-3.1240081612513713,51.487177553183315],[-3.124008157736524,51.487177552634755],[-3.123934724653635,51.487166968960224],[-3.12393472289621,51.48716696868594],[-3.1239347092761784,51.48716696676597],[-3.1238609897832634,51.48715718454219],[-3.1238609805567967,51.48715718344507],[-3.1238609766025953,51.48715718289652],[-3.1237869944211494,51.487148205414364],[-3.1237127596525847,51.48714003377048],[-3.123712755259037,51.487140033221905],[-3.1237127442751604,51.48714003212478],[-3.123638292503453,51.48713267098152],[-3.1234255056886235,51.48802161421942],[-3.1234751497835926,51.488026523114264],[-3.1235246317704815,51.48803196988438],[-3.123573964392532,51.488037956175646],[-3.123286941122465,51.48891872834508],[-3.1232622796258145,51.488915735553554],[-3.123237528502026,51.48891301101902],[-3.1232127101586316,51.48891055721003],[-3.123187832064512,51.48890837440088],[-3.1231628867499235,51.48890646231716],[-3.1231379014554554,51.48890482287894],[-3.12311286431764,51.4889034555376],[-3.123087797743971,51.48890236111596],[-3.1230627096426877,51.4889015404369],[-3.123037596937738,51.48890099295183],[-3.123012472809813,51.48890071893498],[-3.1229873403340602,51.48890071893497],[-3.1229622214785904,51.48890099267751],[-3.122937108773641,51.48890154016261],[-3.1229120153999017,51.48890236111596],[-3.1228869492656064,51.48890345526331],[-3.1228619169608742,51.48890482260465],[-3.122861916082131,51.48890482260465],[-3.1228619121277896,51.48890482287894],[-3.122836922000238,51.48890646259146],[-3.12281198635182,51.488908373852276],[-3.1227870981521573,51.48891055748433],[-3.1227622846418503,51.48891301101902],[-3.122737538790518,51.488915735004966],[-3.1227375374724025,51.488915735279264],[-3.122737533957432,51.488915735553554],[-3.122712868067063,51.48891872861937],[-3.122688289167186,51.48892199021649],[-3.1226638051660838,51.488925518973566],[-3.1226394288051327,51.48892931324488],[-3.1226151574477035,51.48893337330478],[-3.1226151561295867,51.48893337357907],[-3.122615152614607,51.488933374127654],[-3.1225910029564528,51.48893769695903],[-3.1225669684066077,51.48894228420768],[-3.1225430748876604,51.488947130936474],[-3.1225193162480394,51.48895223796833],[-3.1225193114149294,51.48895223906548],[-3.12249570435045,51.48895760310903],[-3.119470877911328,51.48390617672314],[-3.1196361365138756,51.48386862706254],[-3.119802408235552,51.48383288618357],[-3.119802419658111,51.48383288371521],[-3.119969710666836,51.48379895079084],[-3.1201378979684904,51.48376685077476],[-3.120306933255545,51.483736592165215],[-3.120476850374789,51.48370816947339],[-3.1206474657072514,51.4836816131387],[-3.120818864501486,51.483656910267804],[-3.120990896967759,51.48363408252413],[-3.1211635099682633,51.483613136487214],[-3.1213367188997925,51.48359407023466],[-3.1215104438264203,51.48357689254032],[-3.1216846100844657,51.483561611629995],[-3.1218591496004517,51.483548232986976],[-3.122034093148274,51.48353675414123],[-3.1222092606281806,51.48352718715877],[-3.1223847249891175,51.48351952737597],[-3.1225603592894977,51.48351378109982],[-3.1227361288450695,51.483509949152406],[-3.122911963386766,51.48350803290455],[-3.1230878497570997,51.48350803290455],[-3.1232637067040896,51.48350994942666],[-3.123263707143408,51.483509949152364],[-3.1234394406747783,51.483513780551284],[-3.123439444189333,51.48351378055128],[-3.123615089472706,51.48351952737597],[-3.1237905525156844,51.48352718715877],[-3.1237905529549987,51.48352718688447],[-3.12396575558053,51.48353675606101],[-3.124103712441757,51.48264207743811],[-3.1243036050861175,51.48265519363132],[-3.150292337184226,51.33976419986829]],[[-3.1302039527295134,51.49277580780182],[-3.1301196546935817,51.492853840106825],[-3.128932964331192,51.49234481349322],[-3.129003202929599,51.49227979729404],[-3.129003214792017,51.49227978604727],[-3.1290032161100525,51.49227978467574],[-3.1290716269306063,51.492214012567615],[-3.1302860475833474,51.49269687752583],[-3.1302039527295134,51.49277580780182]],[[-3.1297430593606044,51.49137315571642],[-3.1296980426461563,51.49144638473686],[-3.1296980391318363,51.491446390497295],[-3.1296509759320874,51.4915191258821],[-3.1296509763715328,51.49151912615637],[-3.1296019022617356,51.491591314687575],[-3.1295508080088954,51.49166297117522],[-3.128240585123001,51.491290306359055],[-3.1282814540280643,51.49123299221192],[-3.128281454467488,51.49123299248619],[-3.1283207220693936,51.49117523074517],[-3.1283207242659654,51.49117522745351],[-3.1283207299770877,51.49117521895006],[-3.1283583699218283,51.49111704939091],[-3.128358374754235,51.49111704171039],[-3.128358376950797,51.49111703814444],[-3.1283943918793065,51.49105845555698],[-3.1284287563171223,51.490999501362616],[-3.129786013344949,51.491299462687586],[-3.1297430593606044,51.49137315571642]],[[-3.1275792632894572,51.49326714208804],[-3.1275792597743446,51.49326714400826],[-3.1274816195226918,51.49331650657774],[-3.127382590409688,51.493364809510766],[-3.127282265589514,51.4934120075416],[-3.127282265150073,51.49341200726733],[-3.1271806134288465,51.49345811520576],[-3.1270776919314893,51.49350310671392],[-3.126262082123826,51.492762396946716],[-3.1263444039701174,51.4927264107892],[-3.1263444105610168,51.49272640777176],[-3.1263444206670794,51.492726403382726],[-3.126425723769846,51.492689525459554],[-3.126425724209284,51.492689525733844],[-3.1265059988996815,51.492651760984764],[-3.1265060046117537,51.49265175824162],[-3.1265060155965414,51.49265175302966],[-3.1265852060697363,51.49261312696801],[-3.126585219690804,51.492613120110185],[-3.1265852218877654,51.49261311901294],[-3.126663321551245,51.49257363575555],[-3.1266633285814587,51.49257363218947],[-3.1266633364904566,51.49257362807479],[-3.1267403198580985,51.49253329969367],[-3.127675493147369,51.49321673085828],[-3.1275792632894572,51.49326714208804]],[[-3.1273134002095504,51.49218170834695],[-3.127246149108821,51.49222833871361],[-3.1261845463327287,51.49162114353035],[-3.1261331268917525,51.49165556856328],[-3.1261331242554826,51.49165557020913],[-3.1260807569169553,51.49168942498202],[-3.1271077637213662,51.492319381780135],[-3.1270366918253956,51.49236375305457],[-3.1269643907079057,51.492407342582545],[-3.126890875747512,51.492450141309526],[-3.126890876186934,51.492450141583795],[-3.1268161943981787,51.49249212235064],[-3.1267403352366125,51.49253329119],[-3.1258051863985603,51.491849854683956],[-3.1257474260622957,51.49188011258735],[-3.1256888412970842,51.49190972945044],[-3.1256294470430683,51.4919386995114],[-3.1255692406648636,51.491967023317684],[-3.1255082507238,51.49199468687832],[-3.1254464987512782,51.49202168113986],[-3.124630941373139,51.49128095956799],[-3.1246721018402472,51.4912629673386],[-3.1247127613491674,51.49124452525593],[-3.124752906278339,51.4912256396295],[-3.1247925010370285,51.491206327192465],[-3.1248315583669837,51.49118658218496],[-3.124831561882051,51.49118658026484],[-3.1248315658365096,51.49118657834469],[-3.1248700650862493,51.491166410367946],[-3.12490798692261,51.49114583066897],[-3.124907989998292,51.49114582902315],[-3.1249079943921148,51.4911458265544],[-3.1249453427692866,51.49112483239073],[-3.1249820900059757,51.49110343912396],[-3.1249820917634925,51.491103438026755],[-3.124982097475452,51.4911034347351],[-3.125018248844145,51.49108163989704],[-3.1250537858907506,51.49105945418614],[-3.125088690161339,51.491036889398],[-3.125088695873257,51.49103688555775],[-3.125088696752011,51.49103688500914],[-3.1251229717616695,51.4910139386756],[-3.1251565929053333,51.49099062698115],[-3.12515659773848,51.49099062341521],[-3.1251565990566093,51.49099062259229],[-3.1251895636982474,51.4909669482805],[-3.125221867444335,51.49094291382067],[-3.1252218687624547,51.49094291272347],[-3.1252218740349647,51.49094290888322],[-3.125253494917027,51.490918530734085],[-3.1252844351323295,51.4908938072504],[-3.1253146801819907,51.490868749953414],[-3.1253442195215566,51.49084336734707],[-3.1253730505153423,51.490817661352025],[-3.1253730500759467,51.49081766107775],[-3.1254011525135996,51.490791650621375],[-3.125401152074202,51.49079165034709],[-3.1254285233201906,51.490765337350055],[-3.125428522880789,51.490765337075764],[-3.1254551541485074,51.49073873004195],[-3.1254551537091104,51.49073872976766],[-3.125481032257773,51.490711841864055],[-3.125506159845641,51.49068467034815],[-3.125530523292729,51.49065722948413],[-3.125530524171442,51.490657228386915],[-3.125530528125701,51.49065722399809],[-3.1255541160096243,51.49062952750149],[-3.125554117767066,51.490629525581376],[-3.1255541208425672,51.490629521741155],[-3.1255769353611385,51.49060156686942],[-3.1255989655314544,51.490573367063796],[-3.1256201990526726,51.49054493768556],[-3.1256202021281405,51.490544933571044],[-3.125620203006847,51.490544932199555],[-3.125640639001483,51.49051627571784],[-3.1256602743952455,51.49048739542469],[-3.125660277470685,51.49048739076159],[-3.1256602783493737,51.49048738939008],[-3.12567909952365,51.490458305035546],[-3.1256791004023623,51.49045830393834],[-3.125679103038415,51.49045829954954],[-3.1256971086765755,51.4904290146999],[-3.1257142992191542,51.49039952633826],[-3.125730655775853,51.490369866832374],[-3.127096056042496,51.49065502682051],[-3.1270715193000496,51.49069952075069],[-3.127045742529804,51.49074373987316],[-3.1270187301218324,51.49078767650664],[-3.126990488223651,51.49083132050114],[-3.1269610383594872,51.49087463811655],[-3.1269303774512567,51.49091763483801],[-3.1268985208729734,51.49096028817178],[-3.126865477408896,51.49100258714472],[-3.1268312606762136,51.49104451447475],[-3.126795868915081,51.49108607180666],[-3.1267593245300893,51.491127233629115],[-3.126721638502765,51.49116798595158],[-3.126682813467332,51.49120832767569],[-3.126642866996065,51.49124823987334],[-3.1266018061168865,51.49128771513716],[-3.126559652796138,51.49132673207022],[-3.126516416698375,51.49136528271644],[-3.126472114518031,51.49140335171356],[-3.126426749768834,51.4914409365916],[-3.1263803299187702,51.49147802994313],[-3.1263328892377604,51.49151460515916],[-3.126284433876163,51.49155065730099],[-3.127379332457407,51.492134356042556],[-3.1273134002095504,51.49218170834695]],[[-3.1245412385142397,51.37924844612064],[-3.121458570684597,51.379248446120585],[-3.121446069990046,51.37834964816529],[-3.124553739208867,51.37834964816534],[-3.1245412385142397,51.37924844612064]],[[-3.122999932275662,51.489799497758995],[-3.1229999173367453,51.48979949885617],[-3.1229999318362824,51.48979949748468],[-3.1231897394964014,51.48978389754197],[-3.122999932275662,51.489799497758995]],[[-3.1229999221699236,51.48979949913048],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999195336435,51.489799498856186],[-3.1231294640897245,51.489793134009226],[-3.1229999221699236,51.48979949913048]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231051175887825,51.4897825135484],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999168973626,51.4897994963875],[-3.1231030445610655,51.48976739734576],[-3.122999906539917,51.48979949951172]],[[-3.122999926124343,51.48979949913048],[-3.122999923927443,51.48979949913048],[-3.123075520113984,51.4897966126843],[-3.122999926124343,51.48979949913048]],[[-3.122999923927443,51.48979949337025],[-3.1229999230486856,51.48979949364454],[-3.123071210197049,51.489771142064924],[-3.122999923927443,51.48979949337025]],[[-3.1229999327150413,51.48979949913048],[-3.122999926124343,51.48979949913048],[-3.1230687536654047,51.48979762319668],[-3.1229999327150413,51.48979949913048]],[[-3.1229999318362816,51.4897994972104],[-3.122999922169924,51.48979949803329],[-3.1230685533002234,51.48979232845195],[-3.1229999318362816,51.4897994972104]],[[-3.1229999226093037,51.48979949309596],[-3.122999906539917,51.48979949951172],[-3.1230548252958794,51.48977504503829],[-3.1229999226093037,51.48979949309596]],[[-3.1229999182155064,51.48979949419314],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230545941789387,51.4897723434924],[-3.1229999182155064,51.48979949419314]],[[-3.122999916897365,51.48979949967907],[-3.1229999177761245,51.489799499679066],[-3.123048076890138,51.489800286900056],[-3.122999916897365,51.48979949967907]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230435380876873,51.48979194582034],[-3.122999906539917,51.48979949951172]],[[-3.122999915139847,51.489799496387505],[-3.1229999226093037,51.48979949309596],[-3.1230360580791365,51.48978398903074],[-3.122999915139847,51.489799496387505]],[[-3.1229999190942643,51.48979949940477],[-3.1229999199730245,51.48979949940477],[-3.1230340220050645,51.489799685098525],[-3.1229999190942643,51.48979949940477]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230277546904315,51.48980025837981],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123022690392499,51.489790085821845],[-3.122999906539917,51.48979949951172]],[[-3.122999916897363,51.48979949501602],[-3.1230223037378058,51.4897891537625],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999151398466,51.48979949583891],[-3.1229999182155064,51.48979949419314],[-3.1230223274641284,51.48978875959846],[-3.122999916897363,51.48979949501602]],[[-3.1229999173367426,51.48979950077625],[-3.122999906539917,51.48979949951172],[-3.123013557886394,51.489801233231994],[-3.1229999173367426,51.48979950077625]],[[-3.122999925245585,51.489799493095944],[-3.1229999393057426,51.48979948761002],[-3.1230059530981906,51.489797276231684],[-3.122999925245585,51.489799493095944]],[[-3.1229999212911683,51.489799494467434],[-3.1229999217305435,51.48979949419314],[-3.1229999226093104,51.48979949391884],[-3.122999923927443,51.48979949337025],[-3.122999925245585,51.489799493095944],[-3.1229999212911683,51.489799494467434]],[[-3.1229999177761245,51.48979949940477],[-3.1229999221699236,51.48979949913048],[-3.122999923927443,51.48979949913048],[-3.1229999177761245,51.48979949940477]],[[-3.122999906539917,51.48979949951172],[-3.1229999151398458,51.4897994966618],[-3.122999915579226,51.489799496661796],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999915139847,51.489799496387505],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1228741878926822,51.48980155464088],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122996702833367,51.4897994470141],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122910149318569,51.48983383744875],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122854301413137,51.48984681819898],[-3.122999896246503,51.48979950269632],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122854301413137,51.48984681819898]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999905473488,51.48979950626218],[-3.1229999050341077,51.48979950708507],[-3.122999906539917,51.48979949951172],[-3.122999905473488,51.48979950626218]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998927314693,51.48979950105054],[-3.122999906539917,51.48979949951172],[-3.1229998949283706,51.48979950050195],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229870975469147,51.48980792606605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229870975469147,51.48980792606605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999894928372,51.48979950159914],[-3.122999906539917,51.48979949951172],[-3.1229998830651153,51.48979950351921],[-3.122887229531027,51.489816387510245],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999032765874,51.48979951641115],[-3.122990102019089,51.48984599155937],[-3.1229999050341077,51.48979950708507],[-3.1229999032765874,51.48979951641115]],[[-3.1229849586211156,51.48988140241038],[-3.1229999032765874,51.48979951641115],[-3.122999905034107,51.48979950845656],[-3.1229849586211156,51.48988140241038]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229966153966195,51.489801518775366],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229966153966195,51.489801518775366]],[[-3.1229941570653326,51.48980639521798],[-3.12299989976155,51.48979950818225],[-3.122999901958453,51.489799505713584],[-3.1229941570653326,51.48980639521798]],[[-3.122925924371761,51.48984332811772],[-3.122999899322174,51.48979950379351],[-3.122999906539917,51.48979949951172],[-3.122925924371761,51.48984332811772]],[[-3.122999882625732,51.489799501324846],[-3.1229226554469256,51.48980499436059],[-3.1229998971252715,51.489799500227655],[-3.122999882625732,51.489799501324846]],[[-3.1229998953677476,51.48979950105055],[-3.1228735274699115,51.489814122081704],[-3.122999878231932,51.48979950269633],[-3.122999897125266,51.48979950077625],[-3.1229998953677476,51.48979950105055]],[[-3.1229998786713167,51.48979950242203],[-3.1228313201793285,51.489815228540614],[-3.1229998826257304,51.489799501599144],[-3.1229998949283706,51.48979950050195],[-3.1229998786713167,51.48979950242203]],[[-3.1229998905345715,51.48979950269632],[-3.1229792097994995,51.48980332693594],[-3.122999893170848,51.48979950214773],[-3.1229998905345715,51.48979950269632]],[[-3.1229388663728854,51.489803168652834],[-3.1229998821863525,51.48979950077624],[-3.1229998905345715,51.48979950050195],[-3.1229388663728854,51.489803168652834]],[[-3.1214526863497736,51.4913155928189],[-3.121410545058852,51.49129850797826],[-3.121368876603988,51.491280962036726],[-3.1213277113036324,51.4912629673386],[-3.1212870443251384,51.491244521964255],[-3.1212469152138667,51.49122564346977],[-3.121207304197914,51.49120632335221],[-3.1211682547768915,51.49118658218496],[-3.1211297559665323,51.491166414756805],[-3.1210918266606473,51.491145830943275],[-3.121054471253353,51.491124832939335],[-3.121017721819745,51.49110343857535],[-3.1209815713298164,51.491081644285906],[-3.121990752994424,51.49044057635918],[-3.122008828661535,51.49045147376243],[-3.1220272031242207,51.49046217038035],[-3.122045876821795,51.4904726670357],[-3.122045878139935,51.490472667858604],[-3.1220458807762386,51.4904726692301],[-3.1220648414059866,51.49048295906524],[-3.1220840907253886,51.49049304262862],[-3.1221036190679565,51.49050291498269],[-3.122123420721641,51.490512573110024],[-3.1221234211610143,51.490512573384336],[-3.1221234246760785,51.49051257503014],[-3.1221434930500194,51.490522015913285],[-3.1221638184776634,51.490531234888984],[-3.1221844022770253,51.490540232780006],[-3.122205234781516,51.490549004923125],[-3.122205238735972,51.49054900656893],[-3.122226309400214,51.490557548849495],[-3.1214526863497736,51.4913155928189]],[[-3.121973013216208,51.489169506093845],[-3.1219555575141262,51.489180790497876],[-3.1219384199058817,51.48919226306957],[-3.121921602588391,51.489203922986185],[-3.1219216030277663,51.4892039232605],[-3.121905116985617,51.489215762019086],[-3.1218889679308552,51.4892277763283],[-3.121873151030311,51.489239969754074],[-3.1218576834200435,51.48925232913047],[-3.121857682980652,51.489252329404756],[-3.121857680344356,51.48925233159911],[-3.121842560706323,51.489264856926255],[-3.1218277877224727,51.48927755039864],[-3.1218133776501857,51.48929039775315],[-3.1218133745744923,51.48929040049608],[-3.121799323020075,51.48930340529866],[-3.1217856396501773,51.489316559046316],[-3.1145005764730107,51.486418652086726],[-3.1145963856349836,51.486326565540715],[-3.11469473758775,51.48623555296643],[-3.1147956358386795,51.486145609694766],[-3.1147956367175107,51.48614560887193],[-3.114899054014645,51.48605676122694],[-3.1150049086207514,51.485969078867804],[-3.1151131974542565,51.48588256315923],[-3.1151132005300757,51.48588256069076],[-3.1152238998576984,51.48579723109956],[-3.1153369802347934,51.48571311120655],[-3.1154523700361842,51.48563025311664],[-3.1155700916675966,51.48554864201249],[-3.11569003352195,51.48546835468322],[-3.1158122478846577,51.48538935601532],[-3.1159366003038005,51.48531173294568],[-3.121990778224486,51.48915841644037],[-3.121973013216208,51.489169506093845]],[[-3.1197153696015,51.49155065016901],[-3.119666915997426,51.491514599124415],[-3.1196669142399345,51.4915145977529],[-3.1196194739982905,51.491478023085456],[-3.1195730726017765,51.49144094427218],[-3.1195276973077424,51.49140335061633],[-3.119483393369924,51.491365280247685],[-3.1194401603477404,51.49132673207022],[-3.1206267687797054,51.49081766683808],[-3.12065559406169,51.49084336762137],[-3.1206851272500518,51.490868745290264],[-3.1207153722997143,51.490893802312954],[-3.1207153718603133,51.490893802587244],[-3.120746318666213,51.49091853128268],[-3.120746319105622,51.490918531008404],[-3.1207779456995333,51.49094291382067],[-3.12077794613895,51.490942913546384],[-3.120810243294383,51.49096694334305],[-3.1197153696015,51.49155065016901]],[[-3.1181425711017154,51.491731124572105],[-3.118089310738937,51.491677908855685],[-3.1180375568156125,51.49162413141932],[-3.117987304056082,51.491569787601755],[-3.1179385766208636,51.49151490264118],[-3.1178913920798537,51.49145949601531],[-3.117845758337119,51.49140357705241],[-3.1178017052631697,51.491347182511305],[-3.117759236368087,51.49129031760558],[-3.119069436571373,51.49091763511234],[-3.119101285680758,51.49096027966838],[-3.119101290952863,51.49096028652596],[-3.1191012922709027,51.490960288171784],[-3.119134329144795,51.49100257891563],[-3.1191685573004917,51.49104452023514],[-3.1192039389565895,51.49108606577197],[-3.1192039393959345,51.49108606632058],[-3.1192039459861856,51.491086074001096],[-3.11924049081057,51.491127235823555],[-3.1192781737623707,51.49116798540296],[-3.119278176837874,51.491167988420315],[-3.1192781812314,51.49116799335779],[-3.1193169974797086,51.491208326029856],[-3.1193170040700746,51.49120833261317],[-3.1193170053881563,51.491208333984694],[-3.1193569435116393,51.4912482374046],[-3.1181425711017154,51.491731124572105]],[[-3.1150185519111897,51.491862987807174],[-3.1149620964789895,51.49177573274204],[-3.114908068170595,51.49168784062538],[-3.1148565205650574,51.491599399513376],[-3.114856515733259,51.49159939073555],[-3.1148074444254483,51.49151039295083],[-3.114760869168761,51.491420875802206],[-3.114760868290307,51.49142087388208],[-3.1147168114732353,51.491330879067114],[-3.1146752686895853,51.491240399730884],[-3.1160627449652147,51.491000290823635],[-3.116097365534438,51.49107568981946],[-3.1160973664132654,51.491075689545205],[-3.116134082182663,51.49115068488819],[-3.1161340817432293,51.491150685162445],[-3.116134085257301,51.491150692294376],[-3.116134089210683,51.49115069997491],[-3.1161340896501195,51.491150699700626],[-3.1161728975544496,51.49122528370831],[-3.116172897115019,51.49122528398257],[-3.1161729006292265,51.4912252902916],[-3.116172905021889,51.49122529879505],[-3.1161729054613243,51.49122529852078],[-3.1162137923314277,51.49129944787515],[-3.116213791891989,51.49129944814943],[-3.1162137923312563,51.491299448972335],[-3.1162138002382354,51.49129946323621],[-3.1162138006776767,51.49129946296194],[-3.116256754662063,51.49137315571646],[-3.1162567542226283,51.49137315599073],[-3.1162567603727074,51.49137316586575],[-3.116256763008383,51.491373170528945],[-3.1162567634478173,51.491373170254676],[-3.116301770937193,51.4914463841883],[-3.1163017704977576,51.49144638446256],[-3.116301776208583,51.49144639351468],[-3.116301779722938,51.49144639900081],[-3.116301780162379,51.49144639872654],[-3.1163488275472577,51.49151911079526],[-3.1150185519111897,51.491862987807174]],[[-2.9519024639407685,51.39497748945436],[-2.9519024578144775,51.3949774861538],[-2.9519021610521303,51.39497769885246],[-2.951901908718521,51.394977873213826],[-2.951901913969912,51.394977875964514],[-2.949279563023611,51.39685607647567],[-2.94818921232238,51.39627070820654],[-2.950828303060043,51.394380549524136],[-2.9535195842771667,51.39251937582372],[-2.9545766017194866,51.393128141672996],[-2.9519024639407685,51.39497748945436]]],[[[-3.13880752128784,51.489194867782636],[-3.1387881807803097,51.48902273122295],[-3.138788179458878,51.48902272162276],[-3.1387881768145913,51.489022698307906],[-3.1387640315878107,51.4888508342137],[-3.1387640298264485,51.48885082296778],[-3.1387640263031575,51.48885079883016],[-3.138764025424416,51.48885079883028],[-3.1387350746478533,51.48867919101522],[-3.137304636601676,51.488781124496],[-3.1373309541387524,51.48893715211723],[-3.1373529023627023,51.489093411769424],[-3.137370482553123,51.48924992238132],[-3.13880752128784,51.489194867782636]]],[[[-3.1359960800675166,51.49366826096264],[-3.1346963636956353,51.49328144961557],[-3.1345972290906086,51.49340837992765],[-3.135885933794968,51.49380929569607],[-3.1359960800675166,51.49366826096264]]],[[[-3.135933440357459,51.48930495937269],[-3.1359176256711705,51.48916412000957],[-3.13591762302989,51.48916410218059],[-3.135917622148584,51.48916409312889],[-3.1358978717160966,51.48902344757218],[-3.135897870837353,51.48902344757227],[-3.1358741926159968,51.48888304052943],[-3.1344437418131115,51.48898493911548],[-3.1344647878456433,51.48910975760813],[-3.134482337937618,51.48923476405544],[-3.1344963951413174,51.48935997875662],[-3.135933440357459,51.48930495937269]]],[[[-3.132499718837331,51.48769891122479],[-3.1324395280919792,51.48759570843157],[-3.131091066237496,51.487910582081014],[-3.1311426564737266,51.487999042443555],[-3.132499718837331,51.48769891122479]]],[[[-3.13055543153605,51.48111042732694],[-3.130311410078095,51.48102943222671],[-3.1303114105173004,51.481029431678095],[-3.1303113679034746,51.48102941824021],[-3.1303113599957144,51.48102941549773],[-3.1300651125903927,51.480951091400115],[-3.1300651121511804,51.48095109194873],[-3.129816707739055,51.48087546077963],[-3.1291971085202723,51.481686753953056],[-3.1289694492086664,51.48162048329828],[-3.1289694307573304,51.48162047808758],[-3.1289694022016707,51.481620469860125],[-3.128969401762412,51.48162047013444],[-3.12873992515811,51.48155668974135],[-3.1287399255973725,51.481556689467034],[-3.128739890891448,51.481556680142646],[-3.1287398785906144,51.48155667685168],[-3.1285086549541146,51.48149540645578],[-3.1285086553933423,51.481495405907175],[-3.1282757005087682,51.48143665016064],[-3.1282756789824893,51.48143664494997],[-3.1282756592134375,51.48143664001353],[-3.128041146577101,51.48138044306037],[-3.1280411193399,51.481380437027006],[-3.1280410982529743,51.48138043181627],[-3.1278050577042644,51.48132680050341],[-3.128285474983022,51.48047951897287],[-3.128024171886754,51.48042335143374],[-3.1280241723259814,51.48042335088512],[-3.128024119170739,51.480423340189816],[-3.1280241182921307,51.48042333991556],[-3.1277612860908683,51.48037002783514],[-3.1273285144193546,51.48122726109013],[-3.127567478225996,51.48127573207922],[-3.1278050085017135,51.48132678980784],[-3.127324579128614,51.48217406979545],[-3.1275370756549803,51.482222352272686],[-3.1277481705996255,51.482272937417434],[-3.127220663128776,51.48310923178029],[-3.1274070270982155,51.483156236651524],[-3.1275920508601645,51.483205265314695],[-3.1277756887446113,51.483256305434615],[-3.127957851587019,51.483309332334805],[-3.128138537648783,51.48336434629643],[-3.1283176094364147,51.48342130454221],[-3.128495109582373,51.48348022106665],[-3.1286709071807284,51.48354105254423],[-3.128844996974688,51.48360379706276],[-3.1290172704615196,51.48366841458799],[-3.1291877641203767,51.48373491966371],[-3.1293563105736752,51.48380324674975],[-3.1295229902336175,51.483873428491265],[-3.1303382569293277,51.48313264352594],[-3.1301507828052677,51.48305370645605],[-3.130150776654469,51.48305370398776],[-3.1301507441430063,51.48305369027489],[-3.130150743703742,51.48305369054923],[-3.1299611310817013,51.48297682369771],[-3.12996112844565,51.4829768226007],[-3.1299610924196575,51.48297680806509],[-3.1299610919803813,51.48297680833942],[-3.1297693601763186,51.4829020193752],[-3.130521396121633,51.48213560772036],[-3.1303060238646934,51.482054825007786],[-3.130306007609425,51.48205481897427],[-3.130305985203528,51.48205481074675],[-3.1303059847642687,51.48205481102108],[-3.130088432488932,51.48197640317998],[-3.1300884329281957,51.48197640290565],[-3.130088396903299,51.481976390564476],[-3.130088388116696,51.481976387273434],[-3.1298686839171803,51.481900363890496],[-3.13055543153605,51.48111042732694]]],[[[-3.1238510916923468,51.48624372859342],[-3.1237515652427232,51.48623499621703],[-3.1237515503049518,51.48623499511994],[-3.12375154459345,51.48623499457139],[-3.1236517888589606,51.486227348326494],[-3.123488828002822,51.48712038677801],[-3.123563646131822,51.48712612170987],[-3.123638307880868,51.48713267207863],[-3.1238510916923468,51.48624372859342]]],[[[-3.1238277933200846,51.484431434658646],[-3.123677585530219,51.48442323085909],[-3.1235646501423164,51.48531927623283],[-3.123689826099368,51.485326112956734],[-3.1238277933200846,51.484431434658646]]],[[[-3.1238147661941706,51.48533431115741],[-3.1236898001784703,51.48532611158541],[-3.1235518323900817,51.48622078985815],[-3.123651806872144,51.48622734942358],[-3.1238147661941706,51.48533431115741]]],[[[-3.1166303945145053,51.493442715151104],[-3.1165294919022033,51.49337274898428],[-3.116430580296807,51.49330170814838],[-3.1153355947434553,51.49388537358142],[-3.1154510138349014,51.49396827203089],[-3.1154510142743654,51.49396827175662],[-3.1155687101932714,51.49404988378607],[-3.1166303945145053,51.493442715151104]]],[[[-3.1053551040859464,51.4936985872859],[-3.105248796482305,51.49350571132198],[-3.105147917839533,51.49331174493087],[-3.1037745745303167,51.493581805195845],[-3.10388322861162,51.493790734695665],[-3.1038832299299903,51.493790734421594],[-3.1039976871932753,51.493998406830656],[-3.1053551040859464,51.4936985872859]]],[[[-3.105118491211616,51.49560852316435],[-3.1049588076539503,51.49541278123443],[-3.104804678778631,51.49521540157078],[-3.104656050508114,51.495016315064035],[-3.104513013700169,51.494815641891],[-3.1043756306585495,51.494613470405284],[-3.1042439333795744,51.49440984973071],[-3.1041179099438465,51.49420475931218],[-3.102769056775546,51.49451930420634],[-3.102904050935014,51.494739004424815],[-3.1029040496166065,51.494739004698886],[-3.1030451678625677,51.49495720045774],[-3.1030451669835823,51.494957200731896],[-3.1030451832321777,51.49495722432414],[-3.103045195966887,51.494957244349926],[-3.1030451964064354,51.4949572440757],[-3.1031923654751967,51.49517382617072],[-3.1018716974286753,51.49553199528459],[-3.102035142482198,51.495761318136715],[-3.1020351416031926,51.49576131841086],[-3.1020351618048503,51.4957613455698],[-3.1020351749795383,51.49576136394999],[-3.1020351758585445,51.495761363675854],[-3.102204974617502,51.495988825220635],[-3.1022049728594947,51.49598882576891],[-3.1023811477964647,51.496214454235464],[-3.1023811425261303,51.496214447651425],[-3.099803390040655,51.49701606060227],[-3.1000086804861327,51.49726774221658],[-3.1025636322289927,51.496438160711705],[-3.102381178979478,51.49621449264242],[-3.1036700188953743,51.495813662001545],[-3.1038410735350745,51.49602334890884],[-3.105118491211616,51.49560852316435]]],[[[-3.101871728607254,51.495532041371966],[-3.101714703057258,51.49530094420277],[-3.101564171583725,51.49506818247417],[-3.1002242742497694,51.495397344925],[-3.100384195844759,51.49564463689886],[-3.1003841949657547,51.49564463717299],[-3.1003842120912752,51.49564466241154],[-3.100384227898888,51.49564468682694],[-3.100384228777898,51.49564468655283],[-3.1005510086817596,51.49589014978066],[-3.0992302987953844,51.496248289384106],[-3.099053678718109,51.49598833286212],[-3.097723142897699,51.496332013438455],[-3.097909605532155,51.49660646868752],[-3.0992303339239164,51.4962483409589],[-3.0992303005517265,51.496248292127426],[-3.099414182381057,51.496506310557955],[-3.099414161302453,51.49650628202692],[-3.098103639328718,51.496878741562334],[-3.098305337486121,51.49714896590177],[-3.098305296206378,51.49714891295392],[-3.0970053598453684,51.4975355800019],[-3.097225547562875,51.49781761679139],[-3.0972255471232675,51.497817617065586],[-3.0972255629328886,51.49781763626979],[-3.0972255919160117,51.49781767358043],[-3.097225592795072,51.49781767330633],[-3.0974536359829017,51.49809726822395],[-3.0987311700492697,51.49768251219202],[-3.098514494158713,51.4974168634873],[-3.098305338364429,51.49714896699915],[-3.099605250532503,51.4967622827754],[-3.099414199068475,51.4965063327793],[-3.10072469748542,51.49613385583437],[-3.1005510433736796,51.49589019806343],[-3.101871728607254,51.495532041371966]]],[[[-2.896103355077633,51.53968535382555],[-2.8947477665315304,51.537205227382444],[-2.893379561305473,51.53748775424684],[-2.894743201627878,51.53998274765533],[-2.896103355077633,51.53968535382555]]]]} \ No newline at end of file diff --git a/benchmarks/run.sh b/benchmarks/run.sh index 58dc838..15bee76 100755 --- a/benchmarks/run.sh +++ b/benchmarks/run.sh @@ -5,14 +5,39 @@ export RUST_LOG=trace PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" +backend=$1 + +function geojson_area() { + local file=$1 + local temp=/tmp/viewshed.json + + cp "$file" "$temp" + + output=$( + ogrinfo \ + "$temp" \ + -dialect sqlite \ + -sql "SELECT SUM(ST_Area(ST_Transform(geometry, 6933))) AS area_m2 FROM viewshed" + ) + + area=$(echo "$output" | grep -oP 'area_m2 \(Real\) = \K[0-9.]+') + echo "$area" +} + # Do the calculations -time cargo run --release -- \ +time cargo run --features ring_data --release -- \ compute "$PROJECT_ROOT/benchmarks/cardiff_50km_aeqd_100m.bt" \ --scale 100 \ --rings-per-km 3 \ - --backend vulkan \ + --backend "$backend" \ --process all +if [[ $backend == "vulkan" ]]; then + # On Github Actions there's no real GPU so it uses a software GPU, which seems to give + # very different results, so there's no point doing a diff on its benchmark viewshed. + exit 0 +fi + # Reconstruct a viewshed from the centre of the DEM time cargo run --release -- \ viewshed output \ @@ -20,7 +45,15 @@ time cargo run --release -- \ ls -alh output/viewsheds -# We allow it to fail because CI uses a software GPU which gives different results. -diff \ - "$PROJECT_ROOT/output/viewsheds/-3.122999906539917-51.48979949951172.json" \ - "$PROJECT_ROOT/benchmarks/cardiff.json" || true +expected_area=$(geojson_area "benchmarks/$backend-cardiff.json") +actual_area=$(geojson_area output/viewsheds/-3.122999906539917-51.48979949951172.json) + +diff=$(echo "$actual_area - $expected_area" | bc -l | tr -d '-') +limit=$(echo "$actual_area * 0.01" | bc -l) + +if (($(echo "$diff <= $limit" | bc -l))); then + echo "Viewhsed area within 1% of existing benchmark" +else + echo "Benchmark viewshed changed too much" + exit 1 +fi diff --git a/benchmarks/vulkan-cpu-cardiff.json b/benchmarks/vulkan-cpu-cardiff.json new file mode 100644 index 0000000..b7d3efa --- /dev/null +++ b/benchmarks/vulkan-cpu-cardiff.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[-3.309419150322782,51.537805687256515],[-3.3080861950594564,51.53746383836409],[-3.3067278272112883,51.53947352597819],[-3.3080510582732203,51.539829848560075],[-3.309419150322782,51.537805687256515]]],[[[-3.30675325976762,51.5371219743092],[-3.3054203448874317,51.53678009509157],[-3.3040817012650274,51.538760430152735],[-3.302758532228673,51.53840406658388],[-3.301374398918555,51.54035555259508],[-3.3026874384041225,51.540726281574734],[-3.3040816466048475,51.538760511154024],[-3.3040814266500034,51.53876083653272],[-3.305404616377244,51.539117188727474],[-3.30675325976762,51.5371219743092]]],[[[-3.3027545746040565,51.53609629117255],[-3.3014217192015636,51.53575436647194],[-3.3001122499939175,51.53769129298249],[-3.296142986493195,51.53662202133394],[-3.294809777950963,51.538501326982065],[-3.2934968687140804,51.53813051354959],[-3.29212171274889,51.539980731992706],[-3.290819361872218,51.53959565650481],[-3.2894033481877765,51.54141661827219],[-3.2879366745639276,51.54322162260467],[-3.285376574413637,51.54239514854331],[-3.2838825360679142,51.54415660436867],[-3.283882539591005,51.54415660546102],[-3.282339851678265,51.54590090254075],[-3.2807479722174273,51.54762864863156],[-3.2832353898729956,51.548537641591906],[-3.2848520415691875,51.54678290474464],[-3.287364563965583,51.54766460720754],[-3.2889559306360847,51.54586504553069],[-3.290224334687152,51.54629212010233],[-3.2917766921583445,51.544461605653495],[-3.2930568523259667,51.54487478505424],[-3.2945689619714495,51.543013606565],[-3.2958604757040537,51.54341276165879],[-3.297331055619892,51.541521284534184],[-3.29863352479278,51.54190629336518],[-3.300061375045665,51.539984807261774],[-3.3000613807702615,51.53998480889891],[-3.3000615246983314,51.539984605978],[-3.3000616489709746,51.539984438745066],[-3.3000616445670357,51.539984437380234],[-3.301435099949963,51.5380480845858],[-3.301435109196319,51.538048087040394],[-3.3014353309152558,51.538047758921024],[-3.301435381658224,51.538047687527246],[-3.301435379896708,51.53804768698133],[-3.3027545746040565,51.53609629117255]]],[[[-3.3015313912527606,51.5184692256269],[-3.298740115724514,51.51802335260637],[-3.297927299942077,51.519934165320386],[-3.300705783595633,51.52041038807249],[-3.3015313912527606,51.5184692256269]]],[[[-3.30120872240939,51.52259467503589],[-3.299826275628241,51.52234149135683],[-3.298892429417183,51.524263480149834],[-3.3002676332859706,51.5245316905347],[-3.30120872240939,51.52259467503589]]],[[[-3.3004294648129613,51.47112200993538],[-3.2998766765064116,51.46919135362003],[-3.298462295926695,51.469357277250474],[-3.2990106045019503,51.471272494807955],[-3.3004294648129613,51.47112200993538]]],[[[-3.2978608403143084,51.46744908188306],[-3.297205949324596,51.465546974070584],[-3.295801801726351,51.46574359396836],[-3.2964512316223105,51.46763000824653],[-3.292222718632526,51.468173779264006],[-3.2928047844210897,51.47002118087328],[-3.2942192029854276,51.46985532906724],[-3.2947539680019564,51.47172384694905],[-3.2961728563151036,51.471573413314665],[-3.2956336152444554,51.46968945991696],[-3.2970480207569612,51.4695235731489],[-3.2964512693663997,51.46763011763563],[-3.296451356399772,51.467630369861155],[-3.2978608403143084,51.46744908188306]]],[[[-3.2943977822767385,51.46594058277872],[-3.2937014261265145,51.4640764415553],[-3.2909045905915053,51.46450013458772],[-3.2915894249380853,51.46633373217032],[-3.2943977822767385,51.46594058277872]]],[[[-3.291390351650036,51.47018701616927],[-3.290813301584999,51.4683553539599],[-3.2908133086077376,51.468355352852655],[-3.29081322249046,51.46835510281609],[-3.2908131909408835,51.46835500246816],[-3.2908131878686873,51.468355003021145],[-3.2901850919738713,51.46652990562938],[-3.28737666053213,51.46692296095204],[-3.2867093769571145,51.46513591486217],[-3.2881078433593616,51.46492412961611],[-3.287384306950011,51.46312868548631],[-3.2845997277046597,51.46358265343087],[-3.2838395511790646,51.46182597848281],[-3.281068122483625,51.46231014994611],[-3.2818150949615443,51.464036554939156],[-3.2804227600661533,51.464263480468354],[-3.2811153928634957,51.46598288760366],[-3.2825139070970835,51.46577116965459],[-3.283164063367944,51.4675127769119],[-3.2845683138685233,51.4673163122499],[-3.2851750817049736,51.46908006495523],[-3.2894037618264345,51.46853655720164],[-3.2899759086228184,51.470352834126295],[-3.291390351650036,51.47018701616927]]],[[[-3.2906417248931086,51.52265350386954],[-3.2892666324095057,51.52238518359205],[-3.2883329348955317,51.52419172062168],[-3.2842307612840322,51.52334184161902],[-3.2851414514998445,51.52158012653426],[-3.2837664232321853,51.52131174201647],[-3.2828632178192145,51.5230588761151],[-3.28286321957993,51.52305887666129],[-3.2819115821666425,51.52479521054492],[-3.2791931033243307,51.524198805208904],[-3.2782097777804498,51.525895310716265],[-3.2768590741965014,51.52558232141152],[-3.275837264386271,51.52725321036184],[-3.2744954971657148,51.526925536548774],[-3.2734363639179165,51.52857044469752],[-3.270771561313899,51.52788591573297],[-3.2696859693225884,51.52949010491791],[-3.2683633368455127,51.52913335243157],[-3.2672428645066183,51.5307114359846],[-3.2698678503007534,51.531453642851055],[-3.2686824380524495,51.53304746378794],[-3.2699844125917874,51.53343278812932],[-3.268743721640607,51.5350273571839],[-3.2674581758557477,51.536608575922735],[-3.2687378892795405,51.53702201923832],[-3.2700346181893813,51.535426990342316],[-3.270034623913197,51.53542699225521],[-3.2700347881664182,51.535426781391095],[-3.270034868335054,51.53542668254455],[-3.2700348656926104,51.53542668145069],[-3.2712864135171795,51.533818099089196],[-3.27128641880015,51.5338181007283],[-3.2712865584877173,51.533817912934154],[-3.271286671047405,51.53381776823858],[-3.2712866670847287,51.5338177668721],[-3.272492926306423,51.53219579225835],[-3.2738054958825717,51.53256684490225],[-3.2725884421507754,51.53420339748822],[-3.2738904874866295,51.53458868004833],[-3.275118322354904,51.532937565997074],[-3.273805729254297,51.53256653080903],[-3.27380562811122,51.532566666714956],[-3.2749764726977193,51.53091730432069],[-3.2749764801811887,51.53091730650535],[-3.2749766648584293,51.530917033616994],[-3.274976712570142,51.53091696635294],[-3.2749767108092223,51.53091696580663],[-3.2761010334410763,51.5292552594935],[-3.280098514398355,51.53028186086298],[-3.2789447471540365,51.53198730450525],[-3.281590354348455,51.53270055973822],[-3.2803686704865678,51.53442188858966],[-3.2829940875132486,51.53516380239003],[-3.2842360512737234,51.53341375713864],[-3.284236059637651,51.53341375932152],[-3.284236260895723,51.53341346198363],[-3.2842363059702033,51.53341339828528],[-3.2842363042090774,51.53341339773912],[-3.285428769150345,51.531650450898844],[-3.286761382671809,51.531992560246074],[-3.2855589393284905,51.53377033589087],[-3.286881840129284,51.53412689724825],[-3.288094265078508,51.53233428598342],[-3.2867616294007864,51.53199219481515],[-3.2867613909804887,51.531992547068306],[-3.2879140418537403,51.53020158683503],[-3.2852301782179727,51.52954649959239],[-3.2863141942819967,51.52777329101413],[-3.2863141995638334,51.52777329237825],[-3.2863143101362318,51.527773101314914],[-3.28631441768536,51.527772925616325],[-3.286314412843264,51.52777292425158],[-3.2873485668451377,51.52598817930192],[-3.2887079090011735,51.52628629951636],[-3.2897003720648907,51.5244749840807],[-3.28970035974293,51.524474981355254],[-3.2906417248931086,51.52265350386954]],[[-3.2827638334243945,51.53096582737129],[-3.2814312780953485,51.530623675306856],[-3.2825461799365954,51.528891682521106],[-3.2838880614242294,51.52921926716902],[-3.2827638334243945,51.53096582737129]],[[-3.276101255245204,51.52925491523813],[-3.2747688086152182,51.52891269013807],[-3.274768582809337,51.52891302369859],[-3.2758372394570308,51.52725325099],[-3.2758370688915854,51.52725352989602],[-3.2771788465921543,51.527581189730896],[-3.276101255245204,51.52925491523813]],[[-3.27365399431737,51.53056027305275],[-3.2723312984980883,51.53020356509123],[-3.2734361556597316,51.5285707678098],[-3.273436146034892,51.52857078290837],[-3.274768579747468,51.52891302863988],[-3.27365399431737,51.53056027305275]]],[[[-3.2873849446391135,51.520062103650176],[-3.2860026512137823,51.51980875697753],[-3.2851412755964344,51.52158048994455],[-3.286516318291641,51.52184886163008],[-3.2873849446391135,51.520062103650176]]],[[[-3.2823914115684607,51.52104334109585],[-3.281016416071554,51.52077492432192],[-3.2801285573889323,51.522492172328086],[-3.281495879117762,51.52277553205915],[-3.2823914115684607,51.52104334109585]]],[[[-3.2680396831926215,51.513114364826315],[-3.2652490560602683,51.5126676938095],[-3.265864578657799,51.51111438568244],[-3.2644632983860453,51.51090626142738],[-3.263853765822272,51.51244433380262],[-3.2610632333258263,51.51199756506659],[-3.260423443347457,51.51349871485535],[-3.2618122805111627,51.5137372778267],[-3.2611238796268673,51.51524596029653],[-3.2603932727498077,51.51674704392487],[-3.2658923758931873,51.51782159440759],[-3.2666520078550594,51.516260491077844],[-3.266652009174823,51.51626049135053],[-3.2666520340622562,51.51626043673522],[-3.2666521537488595,51.516260190819814],[-3.26665214715004,51.51626018945641],[-3.267367797556651,51.51469136899998],[-3.2673678045940155,51.51469137008851],[-3.2673679115063923,51.51469111870208],[-3.2673679442523595,51.51469104734491],[-3.267367942492152,51.51469104679849],[-3.2680396831926215,51.513114364826315]]],[[[-3.2650473310879033,51.50454806461506],[-3.2636264040000986,51.50440143074512],[-3.263198978572504,51.5059313581052],[-3.261782334663055,51.505769248425246],[-3.261316766885604,51.507279186160446],[-3.2641406601681826,51.5076342152336],[-3.2646155394583403,51.50609376814528],[-3.2646155456143884,51.50609376896073],[-3.2646156056063043,51.50609355466305],[-3.2646156373718838,51.50609345121507],[-3.264615634732967,51.50609345066967],[-3.2650473310879033,51.50454806461506]]],[[[-3.2642427150166817,51.52091744389274],[-3.261524693533985,51.52032062797242],[-3.2606518416315833,51.52182553464595],[-3.2633528276349133,51.52245187919668],[-3.2642427150166817,51.52091744389274]]],[[[-3.2597739738520035,51.49046503033709],[-3.259769513482797,51.48897446308778],[-3.255450551250183,51.48900295568703],[-3.2554547331453207,51.49044617526452],[-3.2496957584635893,51.49042116937618],[-3.2496609834579977,51.49180173692146],[-3.2511003724995193,51.49182370374111],[-3.251026228090774,51.49321907702904],[-3.255342053394907,51.4933319087125],[-3.255418561097058,51.491889497377436],[-3.2568579644517675,51.49191139353024],[-3.256894479167478,51.490452662746875],[-3.2597739738520035,51.49046503033709]]],[[[-3.2591229167361635,51.48153662350835],[-3.258868978871086,51.48005450884027],[-3.254579264379416,51.480364652183866],[-3.2548249996921412,51.481799677357984],[-3.2519597337183406,51.48197516156214],[-3.2521608198838483,51.483381689634655],[-3.2535957321870703,51.483309581761084],[-3.253759292836184,51.484733460584955],[-3.2580695460662095,51.48456396618023],[-3.2579004551116495,51.483093152513106],[-3.2579004599433006,51.48309315223325],[-3.2579004352727368,51.48309298000302],[-3.2579004226473844,51.483092870024386],[-3.257900419572992,51.48309287030221],[-3.257690297270923,51.481624423991505],[-3.2591229167361635,51.48153662350835]]],[[[-3.237057524223203,51.446068427636085],[-3.2358170298131856,51.44483215442385],[-3.234605120056764,51.44531625379019],[-3.2333445807410204,51.444107296859904],[-3.233344583372018,51.44410729576024],[-3.2333444773505873,51.44410719766106],[-3.233344337003845,51.444107063112455],[-3.233344333496279,51.44410706476156],[-3.232050025563494,51.44291178146783],[-3.230865899213105,51.44342197746173],[-3.2321462651470436,51.444604413582425],[-3.233393252862521,51.44580040361382],[-3.2346069660164125,51.44701005082746],[-3.237057524223203,51.446068427636085]]],[[[-3.2365515225489503,51.54213850645678],[-3.235391517957285,51.54160499273779],[-3.2339256280284894,51.54282186082825],[-3.2350705342606267,51.54336793420153],[-3.2365515225489503,51.54213850645678]]],[[[-3.2321591832945487,51.473382509966434],[-3.231682269893089,51.472195465009555],[-3.23028943608304,51.472421795162006],[-3.2307602018478634,51.47359362730504],[-3.2321591832945487,51.473382509966434]]],[[[-3.2316724488500004,51.43949327825888],[-3.2302495188291838,51.43831674361598],[-3.23024975231354,51.4383169296514],[-3.2313894111305714,51.43776871352157],[-3.2299183508505047,51.436595467588376],[-3.2287941880055446,51.43715602012507],[-3.2302494484751874,51.43831668717475],[-3.2291097667682513,51.438864894087665],[-3.2305176154091706,51.44002898281338],[-3.2316724488500004,51.43949327825888]]],[[[-3.2288966829962744,51.47264833113297],[-3.22839983739442,51.471496949974],[-3.227013544195974,51.47173838810851],[-3.2275038207285123,51.472874625441214],[-3.2288966829962744,51.47264833113297]]],[[[-3.224767644434912,51.53845264061833],[-3.2224783465080478,51.53736028646684],[-3.2211330568264365,51.53843708352781],[-3.223391450016402,51.53955421834448],[-3.224767644434912,51.53845264061833]]],[[[-3.2228546747900397,51.47246282759343],[-3.2223537137837925,51.4713773161446],[-3.2209743473490446,51.471633756499074],[-3.2204507675337086,51.47056928472254],[-3.221822734375108,51.47029785728335],[-3.221261584536189,51.46922414022888],[-3.2212615862917398,51.46922413967881],[-3.2212615519017915,51.46922407744208],[-3.221261469437147,51.469223920338635],[-3.2212614650470943,51.4692239211652],[-3.220670424518067,51.4681564809583],[-3.219314520172112,51.46845763657092],[-3.218702537472338,51.46741172823163],[-3.220049795339183,51.46709584876533],[-3.219399394642824,51.466041718978026],[-3.2180611937949375,51.466372232298994],[-3.217391072935233,51.46534009497582],[-3.2173912055190357,51.46534028934622],[-3.2200486531632766,51.46465019635462],[-3.219330089712958,51.46359666665036],[-3.219330090590634,51.46359666637534],[-3.2193300676884133,51.463596634301304],[-3.219329942589129,51.463596450624514],[-3.21932993732249,51.463596452000324],[-3.218582226691537,51.462551113373884],[-3.221199324822041,51.46180348231821],[-3.220401073667647,51.460737849584824],[-3.2204010758613997,51.46073784876011],[-3.220401009815897,51.460737764056894],[-3.220400909415458,51.460737630008566],[-3.220400905465889,51.46073763110905],[-3.219573200679337,51.45968105982116],[-3.2208599886455422,51.45927894145164],[-3.2199913144436096,51.45821738932015],[-3.219991314882101,51.45821738904547],[-3.2199912919931606,51.45821736218319],[-3.219991135715262,51.45821717085239],[-3.219991130450426,51.45821717277683],[-3.2190931454248415,51.457165447523025],[-3.2190931476184472,51.457165446698326],[-3.219093079842704,51.457165370773296],[-3.219092973326023,51.45716524578062],[-3.2190929698163764,51.45716524715499],[-3.2181655913463683,51.45612325107662],[-3.2169143208597633,51.45656686209837],[-3.2178294777343317,51.45759515720279],[-3.2165659619136844,51.45802505360423],[-3.215663212703085,51.45701066887569],[-3.2156632131415965,51.45701066860104],[-3.2156631981811805,51.45701065270357],[-3.215663026554359,51.45701045945902],[-3.2156630212894695,51.45701046138328],[-3.2147321263902877,51.45600608124594],[-3.214732130777541,51.45600607959671],[-3.2147319719482024,51.45600591486776],[-3.2147319336673803,51.45600587347869],[-3.214731932790378,51.45600587402797],[-3.213773149956817,51.45501177438411],[-3.213773153027418,51.455011773010234],[-3.2137730364491177,51.455011656523745],[-3.2137729656175127,51.45501158334097],[-3.2137729638629637,51.45501158416521],[-3.212786395027806,51.45402787836607],[-3.211573998717852,51.454511738599486],[-3.2105740644040517,51.45355226369894],[-3.210574066597633,51.453552262874396],[-3.210573986112617,51.45355218859969],[-3.210573870874815,51.45355207814355],[-3.2105738678036944,51.45355207924304],[-3.209547328772832,51.452603646508074],[-3.2095473292113272,51.452603646233456],[-3.209547304145028,51.45260362403381],[-3.209547117233694,51.452603451363835],[-3.209547112408087,51.45260345328749],[-3.208494292364471,51.45166636049924],[-3.2084942945574886,51.45166635940044],[-3.2084942013370163,51.4516662793733],[-3.2084940760096394,51.45166616782525],[-3.2084940729391014,51.45166616919899],[-3.2074152642509497,51.45074067438179],[-3.2085706417019177,51.45020519676198],[-3.207450607298041,51.44927872602088],[-3.205170121382844,51.450374685501814],[-3.2040558515208724,51.44948559732132],[-3.2040558532748964,51.449485596222914],[-3.2040557657958746,51.44948552880598],[-3.2040556405061786,51.44948542904797],[-3.204055637874651,51.44948543042128],[-3.2029165095467773,51.44860843380539],[-3.2018075409708766,51.44918090731661],[-3.2006603197503742,51.448328465859184],[-3.1973817421719435,51.45008180917614],[-3.1984806995750334,51.45089843175063],[-3.199589749616724,51.450325995087056],[-3.2006812869478383,51.45116639889931],[-3.2017492479850427,51.452018587209324],[-3.202793362744441,51.45288234825914],[-3.203813268382303,51.453757386688956],[-3.2048086261253985,51.4546434145261],[-3.2057788886310448,51.45553993794342],[-3.204580081278935,51.45603687084318],[-3.205511828792294,51.456931030639964],[-3.206724351093332,51.45644723795537],[-3.2076440665881143,51.457364406268034],[-3.208538277423614,51.458291684413794],[-3.211015888706507,51.45737748344965],[-3.211908991950807,51.45834117369109],[-3.210657605441588,51.45878471585189],[-3.2115117584980277,51.459744613754204],[-3.2123389446780504,51.460713607034336],[-3.2131388546579993,51.46169132701663],[-3.213911516205531,51.462677812360454],[-3.2152094699642877,51.46228984902926],[-3.2159649117736486,51.463298486612736],[-3.214656291837813,51.46367225327342],[-3.215373344328747,51.46467485039148],[-3.2127355168776166,51.46539370727272],[-3.2127356327058587,51.4653938769744],[-3.2120389913361858,51.46441974133684],[-3.210730311210063,51.464793462738456],[-3.210017513649501,51.463841618746],[-3.21001751584358,51.46384161792148],[-3.210017453334732,51.46384153787291],[-3.2100173670460723,51.46384142273185],[-3.210017363534606,51.463841423557355],[-3.2092781095843206,51.46289748858452],[-3.2092781122169693,51.46289748748539],[-3.209278032111727,51.4628973893457],[-3.2092779678458743,51.46289730765223],[-3.2092779656512986,51.46289730820243],[-3.208512481491157,51.46196157069809],[-3.2085124823688647,51.461961570423156],[-3.2085124603655695,51.4619615449295],[-3.2085123239290727,51.46196137825587],[-3.208512319540509,51.461961379630566],[-3.207720688680207,51.461033946823875],[-3.206456982948715,51.46146373403768],[-3.2072367802978894,51.46237733312969],[-3.2059612218139666,51.46279327134985],[-3.2067040379295375,51.46370136132588],[-3.2074213477406417,51.46461734239864],[-3.208113015824939,51.46554104177424],[-3.2094217360862443,51.46516735347173],[-3.210097711803645,51.466112667856265],[-3.2107472365684484,51.46706525839169],[-3.2120760653477856,51.46672029605837],[-3.2127083388246165,51.46769431470514],[-3.2140466130703285,51.46736386638777],[-3.2146605372043173,51.468359066102366],[-3.213313212396006,51.4686748854972],[-3.2138908462999036,51.46966228961109],[-3.2152468185507366,51.46936120088914],[-3.2158049245166724,51.47036937654699],[-3.2171691142575733,51.470083091224105],[-3.2177067086587754,51.4711119145496],[-3.2182155892461592,51.472146627982305],[-3.2186955478799093,51.47318683378194],[-3.2191463559671916,51.47423204314056],[-3.220539301355141,51.474005848148586],[-3.2200819531552987,51.47294555024856],[-3.2228546747900397,51.47246282759343]],[[-3.2160623106845976,51.46568510555894],[-3.215373470277864,51.46467502639147],[-3.2153734914163175,51.46467505599896],[-3.216692377799592,51.46431560773848],[-3.2173910619232275,51.46534007880112],[-3.2160623106845976,51.46568510555894]],[[-3.2122544708886642,51.45692016085558],[-3.211321634019729,51.455952909112966],[-3.2125474048107225,51.45548234817416],[-3.2134932139931283,51.456463023865794],[-3.2122544708886642,51.45692016085558]],[[-3.212075935406302,51.46672009591977],[-3.2120759437753965,51.466720108805404],[-3.2114167044163513,51.46575331219462],[-3.21273565428584,51.46539390850213],[-3.213404746767085,51.466375114119174],[-3.212075935406302,51.46672009591977]],[[-3.207936659929306,51.455963242465764],[-3.206977860818762,51.45504316843368],[-3.208176621379437,51.4545462125776],[-3.2091491318266834,51.455479420237864],[-3.207936659929306,51.455963242465764]]],[[[-3.2082898244392952,51.55426799952838],[-3.2073714468029517,51.55357512370101],[-3.205573919666375,51.554484662782556],[-3.2037508957645775,51.55537459397858],[-3.2037508891697595,51.555374597000345],[-3.2019038232885015,51.556244216239435],[-3.2019038206450685,51.55624421432115],[-3.200032258377508,51.55709374103552],[-3.1991937307913423,51.55636256043175],[-3.1973188285519054,51.55718271088821],[-3.198136739450655,51.55792291972359],[-3.200032058757349,51.55709383140901],[-3.200031873207871,51.557093915738804],[-3.200870425488989,51.55782509437783],[-3.20276237154801,51.556966308406096],[-3.2027623785989823,51.556966314435755],[-3.2046298926255057,51.55608705991524],[-3.2046299027370906,51.55608705497095],[-3.204630279075828,51.556086877790015],[-3.204630274228266,51.55608687367898],[-3.20647243937091,51.55518759018252],[-3.2064724437775247,51.5551875937452],[-3.2064727580935117,51.55518743470581],[-3.206472814364504,51.555187407236446],[-3.20647281392299,51.555187406413886],[-3.2082898244392952,51.55426799952838]]],[[[-3.1834670793258306,51.489454550345286],[-3.183447789106558,51.48879580715414],[-3.183447790863676,51.488795806878926],[-3.183447787718081,51.488795753941325],[-3.183447785412053,51.488795671379236],[-3.183447783215202,51.48879567138036],[-3.183410081537282,51.4881372384998],[-3.181971795242058,51.48817717790403],[-3.182008583506829,51.48882000997791],[-3.1820273951968363,51.48946312586332],[-3.1834670793258306,51.489454550345286]]],[[[-3.170912905134363,51.44279030937587],[-3.1695922572869994,51.44227533550536],[-3.16884153530088,51.44304200412594],[-3.1701408959220196,51.4435486801411],[-3.170912905134363,51.44279030937587]]],[[[-3.166434163251002,51.503902294139046],[-3.165156302332199,51.50348773610735],[-3.165156273355822,51.503487770130455],[-3.165532446384321,51.50302635234888],[-3.1642432199462522,51.50262576573504],[-3.1638784641633917,51.50307316385167],[-3.1626006505033706,51.502658578194726],[-3.1622352116563617,51.50308807389397],[-3.160969203851092,51.5026596167747],[-3.160603964464455,51.503071343922954],[-3.1593501445363352,51.502629144049294],[-3.1593501225801575,51.502629167919835],[-3.15970314338235,51.50223122717605],[-3.1609691274479146,51.502659701556865],[-3.16132285915386,51.50224397831486],[-3.160045090554651,51.50182936448667],[-3.1603756121715914,51.501423998909765],[-3.1603756134905168,51.50142399945793],[-3.1603756551986955,51.501423946231235],[-3.160375675833936,51.50142392071513],[-3.1603756749547296,51.50142392044111],[-3.160694846761442,51.50101496262758],[-3.1606948063731513,51.50101501667688],[-3.161994960515691,51.501401542126125],[-3.162313327587757,51.50097483185002],[-3.1610025702051323,51.5006025333917],[-3.1610025517671194,51.500602557810026],[-3.161298690122779,51.50018683914412],[-3.1599777525543793,51.49982886366062],[-3.1599777450919446,51.499828874360524],[-3.160252396223737,51.49942445836995],[-3.158921679869077,51.49908091382819],[-3.158656835682787,51.49947087300566],[-3.1573359395087195,51.49911286772826],[-3.157590983963293,51.49873735444402],[-3.157590981326084,51.4987373538962],[-3.1578354803346955,51.498359122969966],[-3.1578354381988154,51.4983591918308],[-3.159175526768183,51.49868820403343],[-3.1594184468420536,51.49829263120896],[-3.1580693704694576,51.49797827268416],[-3.1580693489629295,51.4979783078005],[-3.158292565489817,51.497594941647286],[-3.1569349331684102,51.49729531356799],[-3.1567203122184644,51.49766389835231],[-3.155371273847953,51.49734950903615],[-3.155155318513068,51.49770112171516],[-3.1564953671686924,51.49803016402599],[-3.156260305429657,51.498393779121535],[-3.154929651301321,51.49805018977922],[-3.154694199594885,51.49839682620233],[-3.154449084376253,51.49874084930952],[-3.1541944183060364,51.49908210266194],[-3.1528943943930563,51.49869549362009],[-3.152641184828889,51.49901986332462],[-3.1523789158885602,51.49934145446833],[-3.1536565413964297,51.49975615444811],[-3.153373573942886,51.50008864684886],[-3.1533735748220195,51.500088647122936],[-3.1530813878576396,51.500417961546646],[-3.1527799491848594,51.50074413359162],[-3.154021091429138,51.50119999467992],[-3.153697688633696,51.501536237940755],[-3.1549259273173487,51.50200553958531],[-3.1545798750668363,51.5023515058572],[-3.1542242065214623,51.502693637618506],[-3.1538590203811787,51.503031842044486],[-3.1526718026063314,51.50252305736244],[-3.152311554921928,51.50284442603223],[-3.151942373674799,51.503161817668484],[-3.151564452057914,51.503475068660116],[-3.15117768983569,51.503784261236184],[-3.1534326576530667,51.50490274833297],[-3.153850270782524,51.50456887970895],[-3.1561362780308544,51.50566258426945],[-3.1565747215127558,51.50529913760247],[-3.157732880478225,51.50583343579204],[-3.158175931647806,51.50545249543023],[-3.157003008448506,51.50493089917231],[-3.1574207524225777,51.504558204666424],[-3.1574207528623037,51.504558204940594],[-3.1574207660386566,51.504558192593414],[-3.1574208393896126,51.504558127289485],[-3.1574208376309,51.504558126467124],[-3.157828093684679,51.50418093291619],[-3.1578280950036506,51.504180933464404],[-3.1578281376055504,51.50418089230738],[-3.1578281727423265,51.50418085993004],[-3.1578281718628762,51.504180859381705],[-3.158224813646989,51.50379928515358],[-3.1594398506557857,51.504281846966585],[-3.1598391589600547,51.5038825960436],[-3.1598391374419403,51.50388261854263],[-3.1610675027227852,51.50435185596321],[-3.161468561593266,51.503934802887976],[-3.1602272663634814,51.503479023013085],[-3.160603948656862,51.50307136175725],[-3.1606038946475685,51.50307142266825],[-3.161857737091403,51.503513611850586],[-3.1622351370166077,51.50308816306509],[-3.1635011690108192,51.50351661032978],[-3.1638784452851874,51.503073186899094],[-3.1638783895288443,51.5030732552182],[-3.165156222866676,51.503487829396505],[-3.164767225189314,51.50394504417278],[-3.166033305112411,51.50437346431948],[-3.166434163251002,51.503902294139046]],[[-3.1606948695894586,51.50101493189911],[-3.15939473612971,51.50062839503197],[-3.159394715934193,51.50062842109635],[-3.159691811793284,51.50023025071679],[-3.15969177886949,51.50023029708311],[-3.1610025113800164,51.500602612408],[-3.1606948695894586,51.50101493189911]],[[-3.1598392120971615,51.50388254116775],[-3.1586108694147015,51.50341329359112],[-3.1589859950204806,51.503023229693454],[-3.1577447493225352,51.50256742347759],[-3.158096281250813,51.50218700317485],[-3.159350075154611,51.50262921922786],[-3.15898592036845,51.50302331118223],[-3.1602271855611055,51.50347910615037],[-3.1598392120971615,51.50388254116775]],[[-3.1596918337426203,51.500230219988765],[-3.1583811195195293,51.49985789246412],[-3.1586568312929884,51.49947087931581],[-3.158656781250447,51.49947095284236],[-3.1599776937311495,51.499828945967984],[-3.1596918337426203,51.500230219988765]],[[-3.159086539384005,51.501023277042925],[-3.157797425541467,51.50062261945008],[-3.1580945627604335,51.50024192219617],[-3.1593946724691966,51.500628476243335],[-3.159086539384005,51.501023277042925]],[[-3.1578354829685433,51.498359119129034],[-3.1564954119426436,51.49803009461628],[-3.156720291590169,51.49766393374244],[-3.1567202678895265,51.49766397434508],[-3.1580693221892244,51.49797835114729],[-3.1578354829685433,51.498359119129034]],[[-3.154657243716079,51.50388767243048],[-3.153484401741777,51.5033660411248],[-3.153858954057102,51.50303190350421],[-3.153858944394056,51.50303191255851],[-3.1550461877345475,51.5035406887469],[-3.154657243716079,51.50388767243048]]],[[[-3.1641382723429836,51.5094901021202],[-3.1629950610631323,51.508943336649914],[-3.1624536326659687,51.50937626048888],[-3.1635813788297495,51.50993540069185],[-3.1641382723429836,51.5094901021202]]],[[[-3.1626337920594936,51.50616368135761],[-3.1602309302583724,51.50517229547427],[-3.159795429031146,51.505575667947646],[-3.1593487880733955,51.505974160859466],[-3.1605217608862954,51.50649573603794],[-3.160982798875079,51.50608438876556],[-3.162170200433427,51.50659309258112],[-3.1626337920594936,51.50616368135761]]],[[[-3.1618518771508217,51.508396559987624],[-3.1607087206054283,51.507849772133795],[-3.1601982231643952,51.50825794794715],[-3.161325914111156,51.50881710966524],[-3.1618518771508217,51.508396559987624]]],[[[-3.1595655918660763,51.50730297336307],[-3.158422490052593,51.506756163127605],[-3.1579429240920165,51.507139591555195],[-3.1590705598247677,51.50769877506078],[-3.1595655918660763,51.50730297336307]]],[[[-3.138807519993514,51.48919486740144],[-3.1387881794860824,51.48902273111605],[-3.1387881799254553,51.489022731115995],[-3.1387881772834434,51.48902271438425],[-3.1387881755203626,51.489022698201],[-3.1387881750809914,51.48902269820105],[-3.138764030293587,51.488850834106785],[-3.1387640307329585,51.48885083410673],[-3.1387640285320373,51.48885082231227],[-3.1387640254483067,51.488850798723185],[-3.1387640245695656,51.4888507987233],[-3.1387350737931015,51.48867919118255],[-3.137304635746914,51.48878112466332],[-3.1373309537232745,51.48893715201019],[-3.137352901508193,51.48909341275962],[-3.137370481698181,51.48924992200004],[-3.138807519993514,51.48919486740144]]],[[[-3.1365059987832664,51.41567619371163],[-3.1344351150502288,51.41554031421577],[-3.134435115488144,51.41554031119843],[-3.1344348264022814,51.415540295317236],[-3.1344346895357553,51.415540286278706],[-3.1344346890974992,51.41554028792456],[-3.1323603392632116,51.41542699195807],[-3.1323603383871115,51.415426997992746],[-3.130283578791366,51.41533633880275],[-3.1302835787907997,51.415336335236844],[-3.1302832765486555,51.415336325380835],[-3.1302831519667618,51.415336319902586],[-3.130283151528314,51.41533632127412],[-3.128204183964265,51.4152683028311],[-3.128204184402307,51.41526829734508],[-3.1261231549413537,51.41522292941053],[-3.12612315494126,51.41522292803902],[-3.12612304088842,51.415222926944864],[-3.126122783830641,51.415222921191436],[-3.1261227838308283,51.41522292393443],[-3.1240412361222627,51.415200241763166],[-3.1240412361222254,51.41520024011736],[-3.1240411093482527,51.41520024011849],[-3.1240408079858275,51.41520023682957],[-3.1240408079859026,51.41520024012117],[-3.1219590016963314,51.41520024012113],[-3.121959001257742,51.41520023682954],[-3.121958699895317,51.41520024011845],[-3.121958573121344,51.41520024011733],[-3.1219585731213066,51.41520024176312],[-3.119877082439141,51.415222923661545],[-3.119877082439272,51.415222921741446],[-3.119876907850546,51.41522292557699],[-3.1198766538636242,51.41522292831323],[-3.1198766543021015,51.41522293105622],[-3.1177960529791493,51.41526828913494],[-3.117796052540516,51.41526828886063],[-3.117796027975187,51.41526828968243],[-3.1177956818677273,51.415268297073155],[-3.1177956823059563,51.415268300913375],[-3.1157166577152005,51.41533632154817],[-3.1157166572767956,51.415336319902345],[-3.1157165208508464,51.41533632592847],[-3.1157162300140495,51.41533633551087],[-3.115716230452192,51.41533633880251],[-3.113639471295105,51.41542699799246],[-3.1136394704189487,51.4154269922321],[-3.1115651201460417,51.41554028792418],[-3.111565120146384,51.41554028655267],[-3.1115649955627567,51.41554029476952],[-3.111564693755397,51.41554031119805],[-3.1115646946319107,51.41554031448974],[-3.109494237293268,51.41567616578182],[-3.1094942364169005,51.415676162490115],[-3.1094939275871005,51.41567618604431],[-3.1094938104602625,51.4156761937112],[-3.1094938108985297,51.415676195082746],[-3.1074273908665644,51.41583458848441],[-3.1074273904281746,51.41583458766145],[-3.107427319800199,51.41583459368666],[-3.107427021935214,51.41583461668826],[-3.1074270228114345,51.41583461997997],[-3.1053648976527373,51.41601554120556],[-3.1053648989669584,51.41601554586886],[-3.103308598476535,51.416218859903275],[-3.1033085980388035,51.416218857708806],[-3.1033084050130455,51.41621887907175],[-3.1033081751380833,51.41621890179999],[-3.1033081760143726,51.416218904268845],[-3.1012578442152283,51.41644459113837],[-3.1012578424632555,51.41644458537774],[-3.0992132597174353,51.416692679369994],[-3.0992132614694454,51.416692684582046],[-3.097176671946912,51.41696291328817],[-3.097176671509003,51.41696291191656],[-3.0971765346293627,51.41696293163598],[-3.0971763086917377,51.41696296148487],[-3.097176309567709,51.41696296395376],[-3.0951475503239907,51.4172553414585],[-3.0951475481337414,51.41725533624628],[-3.093126453167258,51.4175698941883],[-3.09312645535747,51.41756989912624],[-3.091115247605313,51.41790629096694],[-3.091115245415108,51.417906286303236],[-3.0891132877917604,51.418264614404436],[-3.0891132860394213,51.418264611112335],[-3.089112999531949,51.418264665889424],[-3.089112877558907,51.41826468779813],[-3.089112877996585,51.41826468916975],[-3.087121550363728,51.41864470645149],[-3.0871215499254645,51.41864470590276],[-3.0871214880592754,51.418644718501604],[-3.087121194088331,51.41864477436873],[-3.0871211958405427,51.418644777660866],[-3.085140744418041,51.41904643427169],[-3.0851407435417744,51.419046432899904],[-3.0851406167347357,51.41904646001462],[-3.085140338551583,51.41904651643048],[-3.085140340303664,51.41904651972263],[-3.083171417671951,51.41946968147659],[-3.0831714172342,51.419469680379244],[-3.083171315434587,51.419469703385815],[-3.0831710131102685,51.419469768292096],[-3.0831710153009313,51.41946977158443],[-3.0812141692538506,51.419914320757506],[-3.0812141679394727,51.419914318836945],[-3.081213993294879,51.41991436074252],[-3.0812137655576968,51.41991441222964],[-3.0812137673100297,51.419914414973256],[-3.0792695874099834,51.420380217157536],[-3.079269585657749,51.42038021441388],[-3.0792693535221165,51.42038027302738],[-3.0792691894054536,51.420380312465284],[-3.0792691907197645,51.42038031438587],[-3.0773382165909204,51.42086724122364],[-3.077338214400882,51.42086723765688],[-3.0773379023894916,51.420867320373794],[-3.0773378699161285,51.42086732859012],[-3.077337870354573,51.420867328864595],[-3.0754207413252233,51.42137522107457],[-3.075420740448918,51.42137521997701],[-3.0754206491679703,51.42137524544981],[-3.075420347682157,51.42137532514859],[-3.0754203503110804,51.42137532844126],[-3.0735176992298525,51.4219040166257],[-3.0735176970391724,51.42190401388179],[-3.0735174539069163,51.42190408482271],[-3.073517305133264,51.42190412617913],[-3.073517306447673,51.42190412782549],[-3.0716296561123735,51.422453465890364],[-3.0716296543602035,51.422453463420894],[-3.0716294243853457,51.42245353326648],[-3.071629270339405,51.42245357818408],[-3.0716292716537534,51.42245357983045],[-3.06975719674653,51.4230234014352],[-3.0697571949941183,51.42302339924],[-3.0697570031943675,51.42302346004737],[-3.069756809641573,51.42302351920813],[-3.069756811393975,51.423023521403316],[-3.0679008318412544,51.42361366816667],[-3.067900829212743,51.42361366487384],[-3.067900519774322,51.42361376731637],[-3.0679005009010316,51.42361377334209],[-3.0679005013394525,51.42361377361659],[-3.066061227588075,51.42422405403822],[-3.066061225835801,51.42422405184297],[-3.0660610449924897,51.42422411456969],[-3.0660608496680304,51.42422417920948],[-3.066060851859053,51.424224181404945],[-3.064238895354478,51.42485439084827],[-3.0642388949160706,51.42485439057375],[-3.0642388747237748,51.42485439796971],[-3.0642385196120534,51.424854520677826],[-3.0642385231168197,51.424854524794064],[-3.0624343887582803,51.42550448822299],[-3.062434385691291,51.4255044849298],[-3.062434090696159,51.42550459559433],[-3.0624340156318177,51.42550462271119],[-3.062434016508253,51.425504623534536],[-3.0606481935018834,51.42617416565318],[-3.060648193063488,51.426174165378654],[-3.060648160138627,51.42617417797891],[-3.0606478809383937,51.426174282887054],[-3.060647884005661,51.42617428590597],[-3.058880971421853,51.42686318432133],[-3.0588809701070527,51.426863183223404],[-3.0588808629850903,51.42686322650411],[-3.0588806061607032,51.42686332675717],[-3.058880609228294,51.426863329501856],[-3.0571332010021375,51.427571351145595],[-3.0571331957438463,51.42757134620524],[-3.055405405185291,51.428298450596166],[-3.055405404747308,51.428298450047315],[-3.055405376646567,51.428298462374585],[-3.0554050491059446,51.42829860015824],[-3.0554050530497863,51.42829860372642],[-3.0536981210683076,51.42904426854378],[-3.05369811887681,51.42904426689669],[-3.053697974852726,51.429044332094776],[-3.05369776935974,51.42904442194343],[-3.053697771988783,51.42904442441368],[-3.0520118138945165,51.42980859522501],[-3.0520118099503857,51.42980859193104],[-3.0520115284716716,51.4298087242471],[-3.052011513980936,51.42980873082151],[-3.052011514419311,51.429808731096074],[-3.050347093055807,51.430591154326656],[-3.050347092617426,51.430591154052074],[-3.0503470732949247,51.43059116336628],[-3.050346748331622,51.430591316223826],[-3.050346752714076,51.430591319792434],[-3.0487044152569194,51.43139173803631],[-3.0487044108745147,51.431391734467645],[-3.0487041109149584,51.43139188596498],[-3.048704080612403,51.43139190075793],[-3.0487040810503405,51.4313919013068],[-3.0470842803972866,51.43221009277488],[-3.047084279958911,51.43221009250029],[-3.0470842681001185,51.43221009880149],[-3.0470839479269713,51.43221026043063],[-3.047083952748162,51.43221026399964],[-3.0454871897972757,51.43304597649941],[-3.045487186729157,51.433045974302985],[-3.045486994781834,51.43304607840974],[-3.0454868586222834,51.43304614963747],[-3.0454868608136687,51.43304615128471],[-3.0439135742301873,51.43389915673372],[-3.043913568093967,51.433899152340786],[-3.0423636822785993,51.43476950566762],[-3.0423636910454905,51.43476951143394],[-3.0408389127031827,51.43565625361315],[-3.0408389056897964,51.43565624894516],[-3.0393387522614588,51.43655965463052],[-3.0393387518230885,51.436559654355904],[-3.039338736445148,51.43655966394539],[-3.039338442078913,51.43655984120676],[-3.0393384473393263,51.4365598445021],[-3.037863989814463,51.43747926943261],[-3.0378639884988505,51.43747926888305],[-3.037863938846032,51.43747930093998],[-3.0378636883951904,51.437479457108495],[-3.037863693217741,51.43747945985499],[-3.0364150313500495,51.43841483731598],[-3.0364150247740156,51.43841483347094],[-3.034992395043782,51.43936602003794],[-3.034992392851941,51.439366018664785],[-3.034992287376781,51.43936609154912],[-3.034992102363455,51.43936621539332],[-3.0349921058704004,51.43936621759035],[-3.0335964849397348,51.44033255882307],[-3.0335964818711525,51.440332556900636],[-3.0335963284780707,51.4403326670518],[-3.0335961953099573,51.44033275911465],[-3.033596197940172,51.44033276076246],[-3.0322277175617933,51.44131415924787],[-3.0322277153699315,51.44131415787467],[-3.0322276116333775,51.44131423487232],[-3.032227434059168,51.44131436228377],[-3.032227438005594,51.441314364206924],[-3.03088651043798,51.44231052606743],[-3.0308865051764218,51.442310523320316],[-3.0308862682289828,51.44231070581712],[-3.030886235260582,51.442310730203815],[-3.0308862361373223,51.4423107307531],[-3.029573234659122,51.44332138100627],[-3.029573233343446,51.443321380456624],[-3.0295731898185108,51.44332141498358],[-3.029573002098388,51.443321559663715],[-3.0295730064832394,51.443321561861595],[-3.028288370897634,51.44434636523035],[-3.028288368266814,51.444346363856724],[-3.0282882605407293,51.44434645319108],[-3.0282881084155395,51.44434657430821],[-3.028288111923687,51.444346575956835],[-3.0270322733986723,51.4453851889261],[-3.027032271644581,51.44538518810176],[-3.027032211839418,51.445385239346656],[-3.027032013087563,51.445385403763154],[-3.0270320179114485,51.4453854059615],[-3.0258053220272974,51.446437541722936],[-3.0258053189574627,51.44643754034889],[-3.0258051949351166,51.44643765078842],[-3.025805069602292,51.446437758209576],[-3.025805072672116,51.44643775958361],[-3.024607891964175,51.44750310199446],[-3.0246078867012143,51.44750309979565],[-3.0246076931684667,51.4475032784759],[-3.024607645228385,51.447503321226236],[-3.02460764654412,51.44750332177595],[-3.0234401064949226,51.44858176733241],[-3.023440112196346,51.44858176980594],[-3.022303021974518,51.449672577283735],[-3.0223030167114104,51.449672575084826],[-3.0223028372082967,51.44967275377327],[-3.0223027866165464,51.44967280255496],[-3.0223027883713187,51.44967280310507],[-3.0211963129045363,51.45077580483063],[-3.0211963111503546,51.450775804006206],[-3.021196257467294,51.450775859916476],[-3.0211960867551553,51.450776029833285],[-3.0211960915799323,51.45077603175757],[-3.0201205406380924,51.45189092082567],[-3.020120533180996,51.45189091807613],[-3.019075806499497,51.45301781867827],[-3.0190758130792856,51.45301782115279],[-3.0180630630349374,51.4541554958575],[-3.0180630590867596,51.45415549448248],[-3.0180629494714983,51.454155623030275],[-3.0180628543947945,51.45415572964723],[-3.018062857465539,51.454155730747175],[-3.017082017535748,51.45530423544836],[-3.017082011393517,51.455304233522725],[-3.0170818387983993,51.45530444430218],[-3.0170818154653527,51.455304471710924],[-3.0170818163428184,51.45530447198602],[-3.0161331598763677,51.45646348899236],[-3.0161331581214084,51.45646348844216],[-3.016133115845517,51.45646354244038],[-3.016132964817053,51.45646372690544],[-3.016132970081915,51.456463728556024],[-3.0152167886124377,51.45763290451675],[-3.0152167846633975,51.457632903415934],[-3.0152166868828325,51.45763303361768],[-3.0152165996838987,51.457633145176885],[-3.0152166031938727,51.45763314627732],[-3.014333152279017,51.458812158512046],[-3.0143331465748595,51.45881215686098],[-3.0143330069227487,51.458812351757516],[-3.0143329945887145,51.45881236847827],[-3.014332995466232,51.45881236875338],[-3.0134823972900895,51.46000107136012],[-3.0134824047494173,51.46000107356148],[-3.0126652935886855,51.4611985826867],[-3.0126652856900926,51.46119858048488],[-3.0118815513288473,51.4624050601992],[-3.0118815486961408,51.462405059373815],[-3.0118814962354445,51.462405144082176],[-3.011881390451146,51.46240530718922],[-3.011881395278098,51.462405308565295],[-3.011131601895308,51.46361989273845],[-3.011131598384296,51.463619891912224],[-3.011131528711649,51.463620010616744],[-3.0111314471490163,51.46362014302483],[-3.0111314510984895,51.4636201441258],[-3.0104156490836242,51.464842744304235],[-3.0104156482060165,51.46484274402909],[-3.0104156340914434,51.46484276925094],[-3.0104155207552883,51.46484296307073],[-3.0104155264607244,51.4648429644477],[-3.0097339563004426,51.46607317935943],[-3.0097339505948675,51.46607317798243],[-3.009733848667316,51.46607337318403],[-3.0097338164659484,51.46607343102976],[-3.0097338182212,51.466073431580064],[-3.009086707331591,51.467310851138556],[-3.0090867055763066,51.46731085058825],[-3.009086678651412,51.46731090514734],[-3.0090865736298396,51.46731110610561],[-3.0090865793355426,51.467311107482615],[-3.0084741098163734,51.46855538681505],[-3.008474106743521,51.46855538626346],[-3.0084740594955983,51.46855548853036],[-3.0084739831295573,51.468555643708285],[-3.008473987519252,51.46855564453546],[-3.0078963468850355,51.469806409123535],[-3.0078963411783644,51.46980640802074],[-3.0078962594524308,51.4698065972059],[-3.007896228098944,51.469806665200956],[-3.0078962302934986,51.469806665751705],[-3.007353581461888,51.47106356927846],[-3.0073535739989667,51.47106356789962],[-3.0068459089359627,51.472326675571914],[-3.0068459168382873,51.47232667695122],[-3.0063737943213984,51.473594600456416],[-3.00637379168746,51.4735945999052],[-3.006373762038436,51.473594686553724],[-3.0063736970276884,51.473594860942285],[-3.006373702296273,51.473594861770415],[-3.0059370584534792,51.474867737519965],[-3.00593705055004,51.474867736414886],[-3.0055359412421305,51.476145437856474],[-3.0055359359732674,51.4761454370283],[-3.005535884113406,51.47614561910982],[-3.005535858427053,51.476145700824716],[-3.005535861061834,51.47614570110164],[-3.0051705641827775,51.47742734920199],[-3.00517056330496,51.4774273489268],[-3.0051705553169947,51.47742738046296],[-3.0051704990227353,51.47742757762619],[-3.0051705047310038,51.477427578454815],[-3.004841064469899,51.47871301120441],[-3.004841063592064,51.47871301092923],[-3.004841056484314,51.47871304164336],[-3.0048409965771783,51.478713275832874],[-3.004841003164145,51.478713276662404],[-3.0045475307537903,51.48000206766459],[-3.0045475246052207,51.4800020671098],[-3.004547481877461,51.48000228184135],[-3.0045474703252992,51.48000233230038],[-3.0045474720817302,51.48000233257645],[-3.0042900500609426,51.481294124771125],[-3.0042900483044623,51.48129412449506],[-3.004290039828198,51.48129417440856],[-3.004289996654443,51.481294390785315],[-3.0042900028031876,51.48129439134013],[-3.0040687125209327,51.48258879087798],[-3.0040687081285453,51.48258879059923],[-3.0040686857556325,51.48258894720019],[-3.0040686670192076,51.482589056900025],[-3.0040686700936643,51.48258905717744],[-3.0038835774573496,51.48388570664252],[-3.003883569990297,51.48388570608634],[-3.0037346840297303,51.48518467285818],[-3.003734693254334,51.48518467341614],[-3.003622179368038,51.48648452925868],[-3.0036221701424584,51.48648452897499],[-3.003545988185696,51.48778568018257],[-3.0035459837928133,51.487785679903794],[-3.0035459794658586,51.48778582253375],[-3.0035459721092566,51.48778594760563],[-3.0035459756234197,51.4877859478835],[-3.0035061824751157,51.489087485287605],[-3.0035061802789706,51.48908748501106],[-3.003506180088958,51.48908755769951],[-3.003506174804134,51.489087730501126],[-3.003506179636514,51.48908773078034],[-3.003502776584867,51.490389510136474],[-3.00350277131153,51.4903895104054],[-3.0035027760915183,51.49038969885213],[-3.003502775903644,51.49038977071769],[-3.003502778100569,51.49038977071992],[-3.003535768908331,51.49169137400431],[-3.0035357653931514,51.49169137400074],[-3.003535772097318,51.49169149881255],[-3.0035357756977428,51.49169163431877],[-3.0035357796523203,51.4916916343228],[-3.0036051712617025,51.49299293999603],[-3.003605179611209,51.49299293973023],[-3.0037109265508866,51.49429303043156],[-3.003710916442737,51.49429303096987],[-3.003853031589563,51.4955920308687],[-3.003853028512804,51.495592031139864],[-3.0038530431775685,51.49559213703321],[-3.0038530599143676,51.49559229093053],[-3.0038530643094337,51.4955922906607],[-3.004031450745502,51.49688928529471],[-3.004031447229209,51.49688928556545],[-3.00403146799851,51.49688941011709],[-3.0040314865455815,51.49688954426685],[-3.004031490501324,51.496889543996566],[-3.0042461681112513,51.49818465637838],[-3.004246175583496,51.49818465583735],[-3.0044969964154626,51.499476973033374],[-3.004496993777918,51.499476973305],[-3.0044970159320905,51.49947707317124],[-3.004497046724203,51.49947723147131],[-3.004497051119638,51.49947723120145],[-3.004783984706357,51.50076661799472],[-3.004783976354019,51.50076661880921],[-3.005107067571535,51.50205319704142],[-3.0051070768038057,51.502053195953515],[-3.005465971464113,51.503335544665326],[-3.005465967067608,51.503335545209495],[-3.005466015886256,51.50333570325298],[-3.005466043323461,51.50333580120417],[-3.0054660459612257,51.50333580093252],[-3.0058607673236866,51.50461404380062],[-3.0058607585304404,51.50461404488904],[-3.0062912751136364,51.50588804656769],[-3.006291274673403,51.50588804684155],[-3.0062912781651514,51.505888056445386],[-3.0062913610509163,51.50588830147415],[-3.0062913680855616,51.505888300658256],[-3.006757379567831,51.507157163508346],[-3.0067573751702756,51.50715716432688],[-3.006757431511622,51.50715730591939],[-3.0067574725456203,51.5071574173242],[-3.006757475623836,51.50715741677866],[-3.007258928876922,51.508421008663994],[-3.007258926677741,51.50842100921042],[-3.0072589550815607,51.50842107534374],[-3.0072590288950827,51.50842126166345],[-3.007259034171867,51.50842126084577],[-3.007795779085525,51.50967919632883],[-3.007795774687741,51.509679197147406],[-3.007795844194858,51.50967934972412],[-3.0077958861459906,51.50967944796322],[-3.0077958892243677,51.50967944741764],[-3.0083678791758683,51.51093159348532],[-3.085721607630666,51.49668609583448],[-3.085534903930499,51.496278893308926],[-3.0994120682283004,51.49388051416615],[-3.0993016140812153,51.493622861846006],[-3.099198410762993,51.49336411918249],[-3.103398943518404,51.49273541999051],[-3.103319893861589,51.49252141637747],[-3.1061314668265543,51.49213277352662],[-3.106068838473009,51.491948633187],[-3.1074798215268378,51.49176963219103],[-3.1074271324862717,51.491600228534196],[-3.1073791934442374,51.49143029499218],[-3.110219405923146,51.491133941482786],[-3.11025863174745,51.491272956703064],[-3.1102586308685907,51.49127295697727],[-3.110258636575666,51.49127297508145],[-3.1102586392093503,51.49127298468211],[-3.1102586396488223,51.491272984407864],[-3.1103017544779674,51.491411578987794],[-3.1131236436537173,51.49105345787023],[-3.113160192442249,51.49116087102929],[-3.113160193321094,51.491160870755074],[-3.113199732011858,51.491267847745014],[-3.113199731572405,51.49126784801927],[-3.113199735085616,51.49126785707134],[-3.1131997394769715,51.49126786914075],[-3.1131997399163622,51.4912678691408],[-3.113242263698251,51.49137439898637],[-3.1132422632588543,51.49137439898634],[-3.113242263698076,51.49137439980927],[-3.113242272042189,51.491374420382186],[-3.113242272481582,51.49137442038222],[-3.113287768199214,51.49148047071215],[-3.1132877677598176,51.49148047071211],[-3.1132877734692883,51.49148048333021],[-3.11328777698265,51.4914804918337],[-3.1132877774220438,51.49148049183373],[-3.1133362310408197,51.49158603027644],[-3.1119556443943748,51.49184118398437],[-3.111900261014936,51.49172054402985],[-3.1105127401346624,51.4919606003754],[-3.110454245439207,51.4918242296087],[-3.1103995656818846,51.49168722559484],[-3.108999464567051,51.49189688930239],[-3.108942982317381,51.49174403253319],[-3.1075372241849064,51.4919383929414],[-3.107599362021003,51.492106570029314],[-3.1089994755427184,51.4918969197506],[-3.1089994720305487,51.49189690987551],[-3.1090602109023635,51.49204910743664],[-3.1090602104629568,51.49204910743658],[-3.109060214853795,51.492049117860375],[-3.109060223196234,51.49204913815929],[-3.1090602236357197,51.49204913788505],[-3.1091252174135775,51.4922006710197],[-3.110512751990988,51.4919606278063],[-3.110512746282304,51.49196061491376],[-3.110575054630414,51.492096348861644],[-3.111955655373469,51.49184120839779],[-3.112014391827769,51.491961202669756],[-3.112014391388378,51.491961202669714],[-3.1120143944627894,51.49196120843024],[-3.1120144032464587,51.491961226534606],[-3.11201440412526,51.49196122653469],[-3.1120764985090177,51.492080586640014],[-3.112076499827294,51.492080586365844],[-3.112141909122689,51.49219922808627],[-3.1121419086832205,51.49219922836051],[-3.112141917028424,51.492199242899005],[-3.11214192229905,51.492199252225554],[-3.1121419227385134,51.4921992519513],[-3.112210639501384,51.49231716293728],[-3.1122106390619875,51.492317162937255],[-3.112210643893544,51.4923171708923],[-3.1122106531174074,51.49231718625373],[-3.112210653556812,51.49231718625377],[-3.1122826571658453,51.49243433056485],[-3.110942914251402,51.492763615600246],[-3.1108618977396683,51.49263180181812],[-3.1108618973004867,51.492631800995184],[-3.1107845786478037,51.49249912350576],[-3.109427231679689,51.49279900320246],[-3.109345461160283,51.49265066988601],[-3.109267850409344,51.49250146775067],[-3.1078945557916953,51.492771576017255],[-3.1079799228672367,51.4929356993],[-3.1066143679823885,51.49322071307639],[-3.106712502753809,51.49339875136104],[-3.1094272483683434,51.4927990331027],[-3.1094272430982075,51.49279902377601],[-3.109513137409393,51.49294642380115],[-3.10951313696998,51.49294642380111],[-3.1095131431187317,51.49294643395078],[-3.109513154098398,51.49294645287848],[-3.1095131549772144,51.492946452878584],[-3.1096031696010136,51.493092914665674],[-3.110942930063076,51.49276364220862],[-3.1110276031738087,51.49289452753764],[-3.111027602734328,51.49289452781189],[-3.111027611079876,51.49289454015609],[-3.111027619864479,51.49289455387179],[-3.1110276203038807,51.49289455387184],[-3.111115957946114,51.493024522809776],[-3.1124364802057536,51.49266624617111],[-3.1125182074347215,51.49278087755416],[-3.1125182069952526,51.49278087782842],[-3.1125182170985672,51.492780891269845],[-3.112518223687561,51.49278090059651],[-3.11251822412703,51.492780900322245],[-3.1126031438443698,51.49289462373392],[-3.1126031434049026,51.492894624008166],[-3.1126031587798098,51.492894643484576],[-3.1126031609761724,51.49289464650204],[-3.1126912477226867,51.49300742709758],[-3.1126912472832124,51.49300742737183],[-3.112691257826229,51.493007439990386],[-3.112691265293982,51.493007449865715],[-3.112691265733456,51.49300744959145],[-3.112782510741484,51.49311927584258],[-3.1140597669658536,51.49270435224554],[-3.1141423159865456,51.49280129510805],[-3.1141423151076757,51.49280129538228],[-3.1142275793233707,51.492897343359246],[-3.1142275793233103,51.49289734363355],[-3.1142275845951737,51.492897349119865],[-3.1142275964566575,51.49289736256128],[-3.1142275968960664,51.4928973625613],[-3.1143155161326046,51.49299244761687],[-3.114315515693143,51.49299244789114],[-3.114315528433442,51.4929924616069],[-3.114315533705383,51.49299246681891],[-3.1144061163208048,51.49308659854815],[-3.115633876542257,51.4926170513709],[-3.115713748450191,51.4926968609599],[-3.1157137515255724,51.49269686397734],[-3.1157137642663435,51.49269687687007],[-3.1157137647057835,51.4926968765958],[-3.115795856044871,51.49277580358002],[-3.1157958551660108,51.492775803854265],[-3.1158801580347846,51.49285384027402],[-3.115880157595375,51.492853840274],[-3.115880166382326,51.492853848229124],[-3.1158801747299454,51.49285385563562],[-3.1159666465182667,51.49293096143637],[-3.1159666473970873,51.492930961436414],[-3.116055243296585,51.49300709793493],[-3.1160552472508196,51.493007100952426],[-3.116055261310087,51.493007113296585],[-3.1160552617495387,51.49300711302232],[-3.116145974296314,51.4930822730817],[-3.1161459734174506,51.493082273355945],[-3.116238810964011,51.493156463006315],[-3.1173657291669477,51.49259699616331],[-3.1172883793241954,51.49253518440412],[-3.117212763691344,51.49247253415488],[-3.1171389099449476,51.49240906873551],[-3.1170668628959,51.49234482627878],[-3.1182535241904508,51.49183578514585],[-3.118311161978717,51.491887177439004],[-3.1183111646148656,51.49188717990778],[-3.1183111734020423,51.49188718786273],[-3.118311173841476,51.49188718758845],[-3.1183702394358965,51.49193794409019],[-3.1183702389964707,51.491937944364466],[-3.118430727566413,51.49198805986084],[-3.1184307271269858,51.49198806013512],[-3.118492607040256,51.492037508564565],[-3.1173657137892334,51.49259698381924],[-3.117444779830608,51.49265794309504],[-3.1174447793911932,51.492657943095026],[-3.117444791254102,51.49265795214736],[-3.1174447956477747,51.49265795543912],[-3.1174447956478035,51.49265795516484],[-3.11752553790783,51.49271803177931],[-3.117525537468389,51.49271803205358],[-3.117607963857595,51.49277723203821],[-3.117607970887547,51.49277723697586],[-3.117607980114318,51.49277724383369],[-3.117607980553769,51.49277724355941],[-3.1176920497730727,51.49283553646187],[-3.1198152769407304,51.491621150555254],[-3.1198666788066394,51.491655563518655],[-3.1198666783672384,51.49165556351865],[-3.119866686715422,51.491655569004806],[-3.119866688912319,51.49165557037634],[-3.1198666889123405,51.49165557010205],[-3.119919055372082,51.491689424600615],[-3.119919055811481,51.49168942460062],[-3.1199723499574206,51.49172269621975],[-3.1189631077216053,51.492363744718126],[-3.1190354110359495,51.49240733589196],[-3.1190354105965215,51.492407336166245],[-3.119035422020482,51.492407342749736],[-3.1190354250961483,51.492407344669914],[-3.1190354255355768,51.49240734439563],[-3.1191089220418386,51.492450132698735],[-3.119108922041818,51.49245013297303],[-3.1191089255568945,51.492450134893225],[-3.1191089365414975,51.49245014120241],[-3.1191836332693157,51.492492130747216],[-3.1191836337087384,51.49249213047294],[-3.119259477491818,51.4925332908086],[-3.119259477052389,51.492533291082886],[-3.119336475798596,51.49257362741908],[-3.1193364753591935,51.49257362741906],[-3.1193364911771675,51.49257363564845],[-3.1193364916165995,51.492573635374164],[-3.1194145908406723,51.492613118631546],[-3.1194145904012687,51.492613118631525],[-3.1194145943557796,51.49261312055172],[-3.11941460621929,51.492613126586605],[-3.1194146062193147,51.49261312631231],[-3.1194937980106796,51.49265175292259],[-3.119493797571251,51.492651753196874],[-3.11957407270101,51.492689518220274],[-3.1195740766555344,51.49268952014047],[-3.119574088958514,51.492689525901056],[-3.1195740893979225,51.49268952590106],[-3.119655392061327,51.492726403275626],[-3.1188191962237304,51.493458114275654],[-3.1189221405698264,51.49350311538499],[-3.1189221410092793,51.49350311511071],[-3.1190262857026214,51.49354697043439],[-3.1190262852631823,51.49354697070867],[-3.1190263067938298,51.49354697921258],[-3.119131662375724,51.49358969313648],[-3.1191316619363074,51.493589693136464],[-3.119131674239564,51.49358969779991],[-3.119131683027565,51.49358970164036],[-3.119131683467002,51.49358970136608],[-3.1192382174171565,51.493631260993986],[-3.1192382169777213,51.49363126126827],[-3.1192382284022213,51.49363126538308],[-3.119238238508462,51.493631269497854],[-3.119238238947902,51.49363126922356],[-3.1193459187455965,51.49367166193368],[-3.1193459183061574,51.49367166220797],[-3.1193459358823374,51.49367166851733],[-3.11934593983699,51.49367166988893],[-3.119345940276404,51.493671669888954],[-3.1194547334005143,51.49371088305953],[-3.119454732961105,51.493710883059514],[-3.1194547347187287,51.493710883608145],[-3.1194547549313585,51.493710891014764],[-3.119454754931383,51.49371089074046],[-3.119564627542091,51.49374891229838],[-3.1195646271026503,51.493748912572656],[-3.119564637648412,51.49374891613883],[-3.1195646499518035,51.49374892025364],[-3.119564649951825,51.49374891997933],[-3.1196755690876548,51.4937857389488],[-3.1196755686482143,51.49378573922309],[-3.1196755857851457,51.49378574443521],[-3.1196755910580287,51.49378574635542],[-3.119675591058046,51.49378574608112],[-3.1197875233177492,51.49382135121214],[-3.1197875277118374,51.49382135258374],[-3.1197875452881805,51.493821358344434],[-3.119787545727616,51.49382135807016],[-3.1199004563913113,51.493855738112764],[-3.119900456391292,51.49385573838706],[-3.1199004691342003,51.49385574195325],[-3.1199004788012084,51.493855744970766],[-3.12001433402743,51.493888889498045],[-3.120014334027411,51.49388888977234],[-3.120014356437378,51.493888896081735],[-3.120014356876813,51.493888895807444],[-3.120129143915413,51.493920801524816],[-3.1207033379123437,51.49309654693362],[-3.1206114982673543,51.49307101990689],[-3.120520400504735,51.493044500419714],[-3.120430047704979,51.4930169890225],[-3.120340500510174,51.49298850464474],[-3.121005386766693,51.492191259055964],[-3.121072544204528,51.49221262128215],[-3.12107254420452,51.49221262155644],[-3.1210725551894596,51.492212624848186],[-3.1210725573864364,51.492212625671115],[-3.121072557825857,51.492212625396824],[-3.12114030239919,51.49223325275383],[-3.1211403023991826,51.49223325302812],[-3.121140309868943,51.49223325522261],[-3.1211403155811266,51.492233256868474],[-3.1211403160205267,51.49223325686848],[-3.12120862707518,51.49225314277187],[-3.1212086266357684,51.49225314304616],[-3.1212086305903552,51.4922531441434],[-3.1212086406965316,51.492253146886526],[-3.1212774966993675,51.49227228530049],[-3.1207033190179208,51.49309654144733],[-3.1207958473724235,51.493121060924636],[-3.1207958469329777,51.493121061473225],[-3.1208890653102173,51.49314457367378],[-3.1208890653102266,51.49314457339948],[-3.1209828897782916,51.493167057473684],[-3.1209828893388623,51.493167057747975],[-3.1209829007634746,51.49316706021682],[-3.120982908233399,51.49316706213703],[-3.1209829086728225,51.49316706186275],[-3.121077365590741,51.493188524666984],[-3.1210773660301636,51.493188524392686],[-3.121172390360008,51.49320895083815],[-3.121172389920581,51.49320895111245],[-3.1211724083757617,51.49320895495288],[-3.1211724092545876,51.493208954952905],[-3.1212679895660327,51.49322834256936],[-3.1212679891266117,51.49322834284365],[-3.1212679922024753,51.493228343392296],[-3.1212680089000404,51.493228346684084],[-3.121268009339467,51.49322834640979],[-3.1213641170650397,51.49324668998389],[-3.121364117065029,51.49324669025818],[-3.1213641240955967,51.49324669135547],[-3.121364135959661,51.493246693824304],[-3.121364136399086,51.49324669355001],[-3.121460742971178,51.49326398704555],[-3.1214607429711703,51.49326398731985],[-3.121460762305238,51.49326399061166],[-3.1215578382772224,51.49328022908972],[-3.1215578378378086,51.49328022908972],[-3.1215578448683883,51.49328023018699],[-3.1215578571718923,51.493280232381515],[-3.1215578576113154,51.493280232107224],[-3.1216553722181684,51.493295410354676],[-3.121655372218161,51.493295410628974],[-3.121655374415218,51.4932954109033],[-3.121655391552268,51.49329541364644],[-3.1216553919916903,51.49329541337217],[-3.1217533162258846,51.49330952699888],[-3.121753316225878,51.49330952727316],[-3.121753334681185,51.49330952974204],[-3.1217533359994256,51.49330952974204],[-3.1218516395350644,51.49332257408365],[-3.1218516395350577,51.493322574357954],[-3.121851646126244,51.49332257518089],[-3.121851659748031,51.493322576826806],[-3.121851659748036,51.493322576552515],[-3.121950313137895,51.493334548041965],[-3.1219503131378903,51.49333454831626],[-3.121950316653194,51.49333454859059],[-3.121950332472051,51.493334550510795],[-3.121950332911472,51.493334550236504],[-3.1220493067082202,51.49334544503253],[-3.1220493062687993,51.49334544530682],[-3.122148609253928,51.493355264231575],[-3.1221486092539363,51.49335526368299],[-3.1222481320066957,51.49336399576311],[-3.1222481399161426,51.49336399631175],[-3.122248151780308,51.49336399740901],[-3.122347903521418,51.49337164346685],[-3.122184886883168,51.49426467901235],[-3.1223098511418943,51.49427287825511],[-3.1223098511418907,51.4942728785294],[-3.1223098687187916,51.494272879626685],[-3.1223098770678193,51.49427288017533],[-3.122309877067822,51.49427287990103],[-3.1224350268247516,51.49427971521048],[-3.122435026385326,51.49427971548477],[-3.1224350373708942,51.494279716033425],[-3.122435051432422,51.49427971658208],[-3.122435051432425,51.494279716307794],[-3.1225603989802693,51.49428518850629],[-3.122560398980275,51.4942851879577],[-3.1226858555444523,51.494289292655665],[-3.122685855544451,51.494289292929956],[-3.122685879712715,51.49428929347863],[-3.1226858805915616,51.49428929347862],[-3.12281143253873,51.49429203067567],[-3.1228114448425752,51.494292030949985],[-3.122811457585844,51.4942920312243],[-3.122811457585845,51.49429203095],[-3.122937067114364,51.494293399822894],[-3.122937079418211,51.494293399822915],[-3.1229370921614805,51.494293400097206],[-3.122937092161481,51.494293399822915],[-3.123062719711991,51.494293399822915],[-3.1230627197119913,51.494293400097206],[-3.123062745198531,51.49429339982291],[-3.123062745637954,51.49429339982291],[-3.1231883542876275,51.494292031224305],[-3.12318836747032,51.49429203094999],[-3.123188379334743,51.494292030949964],[-3.1233139312819125,51.49428929375292],[-3.1233139563290235,51.49428929320427],[-3.1233139563290213,51.49428929292997],[-3.1234394128932,51.494285188232],[-3.1234394128932026,51.494285188506296],[-3.123564760441053,51.49427971685639],[-3.123564760880477,51.49427971685639],[-3.12356478548815,51.49427971575908],[-3.123564785488146,51.49427971548478],[-3.1236899356845003,51.49427288017533],[-3.123689949746021,51.49427287935235],[-3.1236899607315847,51.4942728788037],[-3.123814925869152,51.49426467901236],[-3.123814925869148,51.49426467873806],[-3.123939617173582,51.49425512104925],[-3.1239396417812095,51.49425511885468],[-3.1240640473771624,51.49424420381794],[-3.1240640473771695,51.49424420409224],[-3.1241881782393097,51.494231930611235],[-3.1241881782392937,51.49423193006263],[-3.1243118976967943,51.494218311580234],[-3.1243119130765296,51.49421830993429],[-3.1243119223043685,51.494218308837],[-3.1244352413321734,51.49420334398287],[-3.12443524133218,51.49420334425716],[-3.1244352615455275,51.49420334178825],[-3.1244352668185686,51.4942033409653],[-3.124558148494905,51.49418703522711],[-3.124558153328521,51.494187034404156],[-3.124558173102429,51.494187031935226],[-3.1245581731024226,51.494187031660935],[-3.1246805809450797,51.49416938942931],[-3.1246805972035996,51.49416938696041],[-3.1246806051131553,51.49416938586312],[-3.124802500882473,51.49415041262604],[-3.124802507913176,51.49415041152874],[-3.124802525050521,51.49415040878553],[-3.124923871825316,51.49413011030541],[-3.124923889841463,51.49413010701356],[-3.1249238959933185,51.49413010591628],[-3.125044680581216,51.49410848411512],[-3.125044680581203,51.49410848384081],[-3.1251648172861417,51.49408555408254],[-3.125164817725573,51.49408555435683],[-3.125164837938753,51.49408555024202],[-3.1251648423329246,51.49408554941906],[-3.1252843192812962,51.49406131417449],[-3.125284319720731,51.49406131444878],[-3.125284341252119,51.494061309785316],[-3.1252843434492092,51.49406130951098],[-3.1254031492070085,51.494035770976744],[-3.1249224647379217,51.49318852082655],[-3.125016903200688,51.49316706213706],[-3.1250169036401143,51.493167062411345],[-3.1250169225346345,51.49316705774798],[-3.125110746563282,51.49314457367379],[-3.125110750517953,51.49314457285084],[-3.1251107650183854,51.49314456928472],[-3.125203946485453,51.493121066136624],[-3.1252039579100117,51.49312106311915],[-3.125203964940522,51.49312106147324],[-3.1252964739611544,51.49309654693365],[-3.1252964792340268,51.49309654556207],[-3.1252964928556057,51.49309654199595],[-3.1253883034998444,51.49307102292438],[-3.1259854558755276,51.49388889608176],[-3.126099333072272,51.493855744970794],[-3.1260993387846083,51.493855743324865],[-3.1260993563610118,51.49385573811278],[-3.1260993559215926,51.49385573811278],[-3.1262122652670707,51.49382135861881],[-3.126212265706485,51.49382135861879],[-3.126212283722244,51.49382135285808],[-3.1262122885557533,51.49382135148646],[-3.126324242346455,51.49378573949745],[-3.126324242346429,51.49378573922314],[-3.1264351619216804,51.49374892025366],[-3.1264351685127862,51.49374891805911],[-3.1264351847708345,51.493748912572705],[-3.1264351843314206,51.49374891257271],[-3.1265450573815015,51.49371089046619],[-3.1265450578209375,51.49371089074047],[-3.1266538940067243,51.49367166193369],[-3.126653894006696,51.4936716616594],[-3.1267615738044254,51.49363126922359],[-3.1267615878653094,51.4936312637372],[-3.1267615944563554,51.49363126126833],[-3.126868128845918,51.49358970164039],[-3.1268681446643773,51.493589695331046],[-3.126868150376612,51.49358969313651],[-3.1269735046402736,51.493546979486936],[-3.12697350507969,51.49354697948692],[-3.126973516943494,51.49354697454918],[-3.126973526610303,51.49354697070871],[-3.126973526170861,51.493546970434416],[-3.1270776770158446,51.49350311291617],[-3.1270776717430775,51.49350311538502],[-3.1278933040324315,51.49424382103262],[-3.12801681233699,51.49418982964678],[-3.128016812776445,51.49418982992104],[-3.1280168307918497,51.49418982169139],[-3.128016837822271,51.494189818673846],[-3.128138794088192,51.494134500728634],[-3.128138794527641,51.49413450100292],[-3.1282592334623613,51.49407784004386],[-3.1282592330228707,51.49407783949529],[-3.128378020166217,51.49401989889564],[-3.1283780206056706,51.49401989916993],[-3.128495195060072,51.49396066028066],[-3.1284952056054904,51.49396065479425],[-3.128495217469103,51.49396064875917],[-3.1286107172764,51.493900142034924],[-3.1286107168369495,51.49390014176066],[-3.1287244839949158,51.493838398753255],[-3.128724484434371,51.49383839902753],[-3.1288365523341723,51.49377540081389],[-3.128836551894715,51.49377540053961],[-3.1289467957486643,51.49371121707641],[-3.1289467961881092,51.493711217350686],[-3.1290552520248105,51.49364582834326],[-3.1290552599336667,51.49364582340552],[-3.1290552726757315,51.49364581572456],[-3.129161861405694,51.493579268635244],[-3.1291618618451436,51.49357926890951],[-3.1292665957711057,51.49351155633667],[-3.129266596210553,51.49351155661094],[-3.1292666133461813,51.49351154508958],[-3.1292666155430675,51.49351154371798],[-3.129369419092669,51.49344271476969],[-3.1293694252439086,51.49344271065491],[-3.129369440182596,51.49344270050514],[-3.1293694397431446,51.49344270023087],[-3.1294703023726838,51.49337276231876],[-3.1294703028121327,51.49337276259302],[-3.129569233749774,51.493301707766946],[-3.1295692333103267,51.49330170749268],[-3.1296661218374293,51.493229615584006],[-3.1296661235948795,51.49322961421243],[-3.129666142048219,51.493229600496555],[-3.129666141608772,51.493229600222286],[-3.1297610013488217,51.493156462457776],[-3.1308879475797986,51.49371591841969],[-3.130996234366492,51.493629380756026],[-3.1309962348059597,51.4936293810303],[-3.1311020874903326,51.49354167520558],[-3.1311020989134013,51.49354166533012],[-3.131102107261081,51.49354165847214],[-3.1312054696121696,51.49345283085289],[-3.1312054775203566,51.493452823720624],[-3.1312054907007894,51.49345281247356],[-3.131205490261332,51.493452812199294],[-3.1313063513026616,51.49336287376468],[-3.1313063583320915,51.49336286718108],[-3.1313063719517387,51.493362855111066],[-3.131306371512274,51.4933628548368],[-3.1314047035726778,51.49327182973328],[-3.1314047040121324,51.49327183000755],[-3.1314047171921735,51.493271817114675],[-3.1314047224642736,51.49327181245127],[-3.131500494358918,51.493179729488524],[-3.131500496116212,51.49317972756832],[-3.131500513689598,51.49317971083498],[-3.1315005132501317,51.493179710560725],[-3.1315937140045818,51.49308658044333],[-3.130365951586848,51.49261703600936],[-3.1304435794679284,51.49253636850831],[-3.1304435803467863,51.49253636878255],[-3.1305189571792935,51.49245485078034],[-3.1305189668444586,51.492454840082154],[-3.1305189712376995,51.49245483514455],[-3.1305920566111256,51.49237250834111],[-3.130592055732277,51.49237250806687],[-3.1306628276894433,51.49228939907468],[-3.13066282725,51.49228939880042],[-3.130731251533199,51.49220554739885],[-3.1307312620765964,51.492205533957616],[-3.1307312642731393,51.49220553121452],[-3.130797333423695,51.492120947008495],[-3.130797344845489,51.49212093137284],[-3.130797346602767,51.49212092945265],[-3.130861040861948,51.49203563823131],[-3.1308610500872076,51.492035625613056],[-3.1308610527229557,51.492035621772736],[-3.1309223523325516,51.491949649325115],[-3.130922356725416,51.4919496427417],[-3.130922364632723,51.491949631769316],[-3.130981250274758,51.49186300580439],[-3.132311543730971,51.492206870451604],[-3.1322428463646843,51.49230793489321],[-3.1321713104311417,51.492408268515014],[-3.1321713042811203,51.492408276744385],[-3.132096981599967,51.492507804380004],[-3.133396651776342,51.49289464732495],[-3.133481589504118,51.49278090032221],[-3.133481592139686,51.49278089648181],[-3.133481605757203,51.49278087837703],[-3.133481605317725,51.492780878102785],[-3.1335633325467125,51.49266624671974],[-3.1348838548063522,51.49302452335841],[-3.134972210018151,51.49289452836053],[-3.134972209139261,51.49289452808632],[-3.1350568822497618,51.492763641934395],[-3.135056883128654,51.4927636422086],[-3.1351378996404784,51.492631828426504],[-3.135137907546159,51.492631814710855],[-3.1351379158913284,51.49263180126947],[-3.135215233665418,51.49249912460303],[-3.1338579036299072,51.49219922918348],[-3.133923313364639,51.49208058718872],[-3.133923318195901,51.49208057813649],[-3.133923326540861,51.49208056277511],[-3.1339854077485425,51.49196122763199],[-3.1339854086274057,51.4919612279062],[-3.134044168358293,51.491841185355895],[-3.134099540758506,51.4917205689919],[-3.134099547785013,51.49172055308204],[-3.134099551737405,51.49172054402989],[-3.134151542980507,51.491599342884534],[-3.1341515434197693,51.491599342335896],[-3.1341515530808866,51.49159931929409],[-3.1342001473825376,51.49147757012907],[-3.1342001482613355,51.49147757012899],[-3.134245341255938,51.49135528474366],[-3.134245345646712,51.49135527185131],[-3.1342453495986344,51.49135526115339],[-3.1342871079396164,51.4912325273297],[-3.1356980578350555,51.49141157926218],[-3.1357411731039013,51.49127298577938],[-3.135741178371507,51.491272967400946],[-3.1357411814444354,51.491272957251645],[-3.135780407708055,51.49113394175702],[-3.1357804120972266,51.491133924750166],[-3.1357804147309007,51.4911339151495],[-3.1358157480735684,51.49099449328225],[-3.1358157502678297,51.49099448368163],[-3.1358157550957535,51.49099446448035],[-3.135847184579423,51.490854679035415],[-3.1358471867729794,51.49085466696612],[-3.1358471902839375,51.490854652153736],[-3.1358747067284223,51.49071454537686],[-3.135874707607201,51.49071454537677],[-3.135898307976797,51.49057413345455],[-3.1358983079766403,51.49057413290594],[-3.1358983128019307,51.490574104652886],[-3.1358983119231567,51.490574104652985],[-3.135917979144606,51.490433483867676],[-3.1359179804627653,51.49043348386753],[-3.1359337193940267,51.490292614173285],[-3.1344966146486963,51.49023789412658],[-3.134507101521728,51.49011259310411],[-3.1345071024004945,51.49011259310403],[-3.134514087313831,51.489987173102804],[-3.1345140877481685,51.48998715307912],[-3.1345140881860996,51.48998714731886],[-3.1345175645933527,51.489861670056825],[-3.1345175637145917,51.48986167005692],[-3.134517532099787,51.48973619807396],[-3.1345175325391663,51.48973619807393],[-3.1345175320958476,51.48973618243907],[-3.1345175320932905,51.489736172290094],[-3.1345139924893917,51.489610721769694],[-3.13451399292877,51.48961072176966],[-3.134513992046628,51.48961070832922],[-3.134513991604141,51.48961069598592],[-3.134513991164763,51.48961069598595],[-3.134506944042587,51.48948527707672],[-3.13450694360321,51.48948527707677],[-3.134496391204284,51.48935995259175],[-3.133059342530923,51.48941495765974],[-3.133068574257639,51.489524637885715],[-3.133074736541886,51.48963436418012],[-3.1330778302433604,51.489744150258176],[-3.1330778544579987,51.489853981582485],[-3.1330778553367598,51.48985398158241],[-3.13307481002128,51.4899637621492],[-3.133068695155808,51.490073502107236],[-3.133059512031456,51.4901831789636],[-3.133047268954163,51.49029270027895],[-3.1316119178574917,51.490222295850394],[-3.131598792207131,51.490316079868094],[-3.131583051683248,51.49040967782691],[-3.131564693197446,51.49050310673242],[-3.1315437268304094,51.49059631638638],[-3.131543726391278,51.49059631775789],[-3.1315201595908215,51.49068927524282],[-3.1314939984888497,51.49078195861302],[-3.1314652443871434,51.4908743621064],[-3.131433917031324,51.49096642180863],[-3.13143391615305,51.49096642455166],[-3.1314000172848275,51.491058134974615],[-3.1313635525985006,51.491149479109296],[-3.1313245528233873,51.491240381519646],[-3.13128300608701,51.491330870730806],[-3.131238944438079,51.491420873775006],[-3.1311923590788187,51.49151041067369],[-3.131143297434631,51.491599391177054],[-3.1297860212758817,51.49129944859093],[-3.1297860203973005,51.49129944996246],[-3.129826916492083,51.49122528332687],[-3.129826915613253,51.49122528305263],[-3.1298657235177987,51.49115070041643],[-3.1299024476333557,51.49107568971237],[-3.1299024489510723,51.491075686695034],[-3.1299024546614342,51.491075675174244],[-3.1299370686420067,51.49100029099081],[-3.129969576450602,51.49092452592363],[-3.1299695777683154,51.49092452290629],[-3.129969582599855,51.49092451138556],[-3.129999960966633,51.490848418925545],[-3.129999962284339,51.49084841590821],[-3.1299999671156997,51.49084840329028],[-3.1300282134155717,51.49077199166814],[-3.1300282147331915,51.4907719881022],[-3.1300282186860064,51.49077197713011],[-3.130054324584209,51.49069526911447],[-3.130054325023345,51.49069526746866],[-3.13005432985446,51.490695253479245],[-3.130078286577377,51.490618274033025],[-3.130078287894903,51.49061826991851],[-3.1300782914081777,51.49061825812355],[-3.1301000928181,51.49054102836924],[-3.1301000950137983,51.490541020414526],[-3.130100096770282,51.49054101355699],[-3.1301197358514044,51.490463557908626],[-3.1301197362903608,51.49046355516563],[-3.1301197398034035,51.49046354199918],[-3.1301372099793223,51.49038588404773],[-3.130137211735451,51.49038587499583],[-3.1301372130527074,51.49038586923553],[-3.1301525103835286,51.49030803284597],[-3.13016563400029,51.490230010887466],[-3.130165633121522,51.49023001088752],[-3.130176569867096,51.49015188866784],[-3.130176571183264,51.49015187605013],[-3.130176571622259,51.490151873581425],[-3.1301853219460813,51.49007364424373],[-3.1301853219457794,51.49007364232366],[-3.1301853237010673,51.490073628060124],[-3.130191885421149,51.489995315468825],[-3.130191886297754,51.48999530175394],[-3.130191886297538,51.48999530038246],[-3.130196258110623,51.48991692785319],[-3.13019625898688,51.489916911943936],[-3.130198439148164,51.48983848880313],[-3.130198438269403,51.48983848880319],[-3.130198426359207,51.4897600685388],[-3.130198425917322,51.48976005262963],[-3.1301962215092334,51.489681645939264],[-3.130196221068689,51.489681638533284],[-3.1301962206279277,51.48968162975584],[-3.1301918241759723,51.48960325803446],[-3.1301918241757574,51.489603256662974],[-3.130191823294843,51.4896032429482],[-3.1301918228554655,51.48960324294823],[-3.130185236571678,51.48952493088214],[-3.1301852370110557,51.48952493088212],[-3.130176460907912,51.48944668642555],[-3.1301764591487253,51.4894466757281],[-3.13017645870866,51.489446671339394],[-3.1301654985180236,51.489368550448],[-3.1301654971989947,51.48936854468785],[-3.1301654958792775,51.48936853453896],[-3.130152350732398,51.48929053008049],[-3.1301523502930246,51.48929053008051],[-3.130137029436193,51.48921269554146],[-3.1301370285566725,51.489212690604184],[-3.130137026358217,51.489212680455346],[-3.13011953200066,51.489135024886544],[-3.1301195324400326,51.48913502488653],[-3.130119528922995,51.489135011720506],[-3.130119528483195,51.48913500897757],[-3.1300998619552254,51.48905754088114],[-3.130099861515853,51.489057540881184],[-3.130078032500266,51.4889802978341],[-3.1300780320608954,51.488980297834125],[-3.1300540524375777,51.488903320156055],[-3.1300540498002056,51.4889033127502],[-3.130054047602208,51.488903305344344],[-3.1300279191402853,51.488826600714184],[-3.1300279147448085,51.48882658919399],[-3.130027913426064,51.488826585079615],[-3.129999645366348,51.48875017763348],[-3.1299996431687473,51.48875017269627],[-3.1299996392127785,51.48875016199896],[-3.129969238598704,51.488674073678595],[-3.1299692390380303,51.488674073404276],[-3.1299367102746007,51.4885983129853],[-3.129936703681705,51.488598297350784],[-3.1299020678764258,51.488522917495125],[-3.129902068315753,51.48852291722079],[-3.1299020617231665,51.48852290350636],[-3.1299020612837114,51.4885229029578],[-3.129865324598517,51.48844791189211],[-3.129865325037842,51.48844791161778],[-3.1298653184454452,51.48844789900054],[-3.129865317126931,51.48844789625765],[-3.1298264901195654,51.488373317843184],[-3.1298264874827573,51.48837331372889],[-3.1298264817693227,51.488373302483076],[-3.1297855754362067,51.48829915756367],[-3.1297855706019213,51.48829914906076],[-3.1297855670861443,51.488299143300715],[-3.129742585391733,51.48822544010288],[-3.1283940868254545,51.48854028298517],[-3.128428475237811,51.48859925433022],[-3.128461206921602,51.488658585344474],[-3.1284612073610374,51.48865858589304],[-3.128492268247675,51.4887182507947],[-3.1285216636049578,51.48877825973378],[-3.128549375847772,51.48883857650523],[-3.128575397938433,51.48889918767003],[-3.128599720201454,51.48896006799446],[-3.1286223364775383,51.48902120349078],[-3.1286432410463956,51.48908257825102],[-3.1272324243040246,51.489261833907925],[-3.1272167497584613,51.48921581081119],[-3.12719978789457,51.48916995645047],[-3.1271997870156203,51.489169954256134],[-3.1271997843787216,51.489169947124516],[-3.127181547066223,51.4891242935915],[-3.127181543550533,51.48912428591132],[-3.1271815431110577,51.48912428481415],[-3.127162032111454,51.489078836771235],[-3.127162032111407,51.489078836222646],[-3.127162028156245,51.48907882744529],[-3.127141249625552,51.48903359888074],[-3.1271412465493187,51.48903359202344],[-3.127141245670398,51.489033590103396],[-3.127119206203914,51.48898859500543],[-3.127095907562927,51.488943838036356],[-3.12709590272903,51.488943828984745],[-3.127071361176405,51.48889934141301],[-3.127071358539759,51.48889933675007],[-3.1270713563425603,51.48889933291],[-3.127045569244885,51.4888551103462],[-3.1256970335291974,51.48916992218554],[-3.125679025393634,51.489140638154836],[-3.1256790240754047,51.48914063623479],[-3.1256790218783155,51.48914063239468],[-3.125660197421946,51.48911154916462],[-3.125660197861306,51.48911154889032],[-3.1256405557671325,51.48908266344329],[-3.125640555327778,51.48908266371759],[-3.1256201171282028,51.48905400787108],[-3.12559887227869,51.48902556818442],[-3.125576844508289,51.48899737537782],[-3.1255768423112515,51.48899737208631],[-3.1255768401142636,51.48899736989198],[-3.1255540228330276,51.488969415736285],[-3.125530432299887,51.488941719980005],[-3.1255304283452685,51.488941715042756],[-3.125530427905877,51.488941714768465],[-3.125506061485446,51.48891427439395],[-3.1255060614854657,51.48891427466825],[-3.1254809376334207,51.48888710997256],[-3.1254809358758346,51.48888710805252],[-3.125480932360675,51.48888710448674],[-3.1254550528355014,51.48886021738946],[-3.125455051956715,51.48886021656658],[-3.1254550475627747,51.488860212177926],[-3.125428420274459,51.48883361118156],[-3.1278568315450177,51.487867672624134],[-3.1278020851092627,51.487815049436335],[-3.127802083351643,51.48781504779063],[-3.1278020741241765,51.48781503928781],[-3.1277458762318497,51.48776303137994],[-3.127745874034821,51.48776302918566],[-3.127745864807373,51.48776302068283],[-3.1277458643680136,51.48776302068285],[-3.127688222052132,51.48771163353847],[-3.1276882115065336,51.48771162421281],[-3.1276882101883463,51.487711623115665],[-3.127629139269813,51.48766087099548],[-3.127629139269786,51.48766087072118],[-3.127629132239453,51.48766086496123],[-3.127629127845466,51.48766086112124],[-3.1275686476600364,51.48761076075443],[-3.1275686476600084,51.48761076048013],[-3.127568637114546,51.48761075197735],[-3.127568634917553,51.487610750057364],[-3.1275067634823923,51.487561315978795],[-3.1275067577703006,51.487561311590255],[-3.127506751618806,51.48756130665315],[-3.12750675117944,51.48756130665317],[-3.1274435073902582,51.487512554220544],[-3.127443507390231,51.487512553946246],[-3.1274434955267134,51.4875125451692],[-3.127443494208535,51.48751254407207],[-3.1273788846577633,51.487464478768864],[-3.126284181807121,51.488048249452795],[-3.1262347342529315,51.48801274012036],[-3.1262347241470825,51.48801273298893],[-3.126184281551368,51.4879777612837],[-3.126184281112006,51.487977761283716],[-3.126132879065221,51.48794335106728],[-3.1260805017499376,51.48790949246413],[-3.1260805017499598,51.48790949273842],[-3.126027197058929,51.48787621701582],[-3.125018128615079,51.48851731967911],[-3.1249819839750317,51.488495530453044],[-3.1249819787024835,51.488495527161575],[-3.1249819765056,51.488495526064426],[-3.1249452291051765,51.488474134018524],[-3.1249452247114036,51.48847413154993],[-3.1249452216357474,51.4884741296299],[-3.1249078811411697,51.48845314107226],[-3.124907876308027,51.48845313832937],[-3.124907874111131,51.48845313695792],[-3.1248699523853785,51.488432557922316],[-3.124869947112878,51.48843255545373],[-3.124869944915988,51.48843255408228],[-3.1248314463526023,51.48841238758535],[-3.124831445913252,51.48841238785966],[-3.12479239819261,51.48839264816382],[-3.1247923907232438,51.48839264459808],[-3.1247923902838473,51.48839264404949],[-3.1247527964811956,51.48837333307425],[-3.124752796481188,51.48837333279995],[-3.1247126526417226,51.48835444835043],[-3.124712652202354,51.48835444835044],[-3.124672002262975,51.488336010997706],[-3.1246719961117586,51.488336008529124],[-3.1246719947936326,51.488336007706245],[-3.124630829966318,51.48831801388404],[-3.124630835238783,51.48831801607833],[-3.126261659272035,51.486836509805485],[-3.126178333395262,51.48680142407029],[-3.126178333834598,51.486801423795995],[-3.1260940226833163,51.48676724402912],[-3.126094022683334,51.48676724430342],[-3.126008804021832,51.486734001770564],[-3.1260088044611747,51.486734001770564],[-3.1260087895229067,51.486733996285],[-3.1260087864473647,51.48673399491361],[-3.1259226501670745,51.4867016854986],[-3.1259226440160384,51.48670168330438],[-3.1259226343501076,51.48670167973878],[-3.1258356076880114,51.48667031331364],[-3.1258356002189047,51.48667031084515],[-3.125835589674271,51.486670307005255],[-3.125747701624542,51.486639894539216],[-3.125747687565079,51.4866398898765],[-3.125747683610848,51.4866398885051],[-3.12565895921309,51.48661043822455],[-3.1256589592130712,51.48661043795026],[-3.1256589429568473,51.48661043273899],[-3.125658940760071,51.486610432190446],[-3.125569404174945,51.48658195232186],[-3.1255694024175242,51.48658195177331],[-3.125569388358086,51.48658194711058],[-3.1255693879187576,51.486581947384884],[-3.125479069018301,51.4865544472519],[-3.125479069457652,51.48655444725189],[-3.1254790505653576,51.48655444176636],[-3.125387979221365,51.48652793069264],[-3.125387972631038,51.486527928772695],[-3.12538796076844,51.486527925207085],[-3.12529616201952,51.48650241059642],[-3.1252961620195046,51.486502410322124],[-3.125296143566651,51.48650240565944],[-3.1252961431272865,51.48650240538515],[-3.125203645526629,51.486477894641304],[-3.1252036455266166,51.486477894367006],[-3.1251104552201916,51.48645438940834],[-3.1251104385247874,51.48645438529418],[-3.125016624925238,51.4864319042214],[-3.1250166161382027,51.486431902301476],[-3.1250166055937445,51.48643189955869],[-3.124922180118822,51.48641044483879],[-3.1254027042424464,51.48556317585685],[-3.1252839183908896,51.48553764203285],[-3.1252839047712446,51.48553763929015],[-3.1252838942270005,51.48553763709599],[-3.1251644372603433,51.485513406621735],[-3.1251644328669186,51.48551340579892],[-3.1251644126571465,51.485513401684834],[-3.125164412657158,51.485513401959125],[-3.1250442937924037,51.485490475929616],[-3.1250442942317305,51.485490475655304],[-3.12492350643015,51.48546885379436],[-3.1245388153990183,51.48633498545667],[-3.1246354340479967,51.48635228129501],[-3.12473156074133,51.486370628165695],[-3.1248271304611666,51.48639001345328],[-3.1248271313398646,51.48639001345325],[-3.124922160348008,51.486410440450385],[-3.1244416236848225,51.487257708163156],[-3.124370364600638,51.48724239064986],[-3.1243703501018243,51.487242387632755],[-3.124298658761945,51.48722784579167],[-3.124226585249872,51.48721408977049],[-3.124226572947869,51.48721408757624],[-3.1242265720691593,51.487214087576255],[-3.1241541247293054,51.48720111874563],[-3.1241541190176645,51.4872011176485],[-3.1241541097911694,51.48720111600281],[-3.1240813132240937,51.487188939024904],[-3.124081310587959,51.48718893875064],[-3.124081298285974,51.48718893655637],[-3.1240081718198396,51.487177554447634],[-3.1240081603965817,51.487177552801946],[-3.124008156881733,51.48717755225338],[-3.1239347088607423,51.48716696638459],[-3.1238609757478057,51.48715718251513],[-3.123786994005715,51.48714820503299],[-3.123786986536676,51.48714820421014],[-3.1237869786282833,51.487148203387314],[-3.123712743859724,51.48714003174341],[-3.1237127438597296,51.487140032017706],[-3.123638307026083,51.48713267197155],[-3.1238510908375745,51.48624372821205],[-3.123751564387951,51.48623499583566],[-3.1237515494501817,51.48623499473857],[-3.1237515437386785,51.486234994190006],[-3.1236518060173784,51.48622734931648],[-3.123814765339417,51.485334310776025],[-3.123689808989137,51.485326111752556],[-3.1236898252446137,51.48532611257536],[-3.1238277929046734,51.48443143427727],[-3.123677584675481,51.48442323047772],[-3.1235646492875637,51.48531927585145],[-3.123689799323716,51.48532611120403],[-3.1235518315353117,51.48622078947678],[-3.123651788443536,51.48622734794511],[-3.1234888271480354,51.48712038639662],[-3.12356365054929,51.487126121602756],[-3.123638291648666,51.48713267060015],[-3.1234255048338206,51.48802161411234],[-3.12347515068624,51.48802652273288],[-3.123524631355044,51.48803196950298],[-3.1235739635377318,51.48803795579427],[-3.123286940267649,51.48891872796369],[-3.1232622734985367,51.488915734623596],[-3.123237532919668,51.488913011460525],[-3.123237532040925,51.48891301146052],[-3.1232375276472073,51.488913010911936],[-3.123212709743186,51.48891055682866],[-3.123187831649066,51.48890837429378],[-3.123187828573466,51.48890837401949],[-3.123187826376609,51.4889083737452],[-3.1231628863344776,51.48890646193578],[-3.1231379006006392,51.48890482249756],[-3.1231128687352787,51.48890345543051],[-3.123112863462823,51.48890345515622],[-3.123087797328527,51.48890236100888],[-3.1230627092272427,51.488901540055515],[-3.1230627039547874,51.488901540055515],[-3.123037596082923,51.48890099257043],[-3.1230124671219137,51.488900718827885],[-3.122987339479245,51.488900718827885],[-3.1229622210631462,51.48890099257043],[-3.1229371079188266,51.48890154005551],[-3.122937104403856,51.48890154032981],[-3.122937103525113,51.4889015403298],[-3.122912014984458,51.488902361008876],[-3.12288694841079,51.48890345515621],[-3.1228619112729743,51.48890482277186],[-3.1228369264178792,51.48890646221009],[-3.1228119854970062,51.48890837374519],[-3.1227870972973424,51.48891055737724],[-3.122762284226404,51.48891301091193],[-3.122762279832688,51.48891301146052],[-3.122762278953945,51.48891301146052],[-3.1227375383750746,51.48891573489789],[-3.122712867212249,51.48891872851228],[-3.1226882931454623,51.48892198956084],[-3.1226638043112684,51.48892551886648],[-3.1226394231172274,51.48892931396067],[-3.122615156592888,51.48893337319771],[-3.1225910025410086,51.48893769685194],[-3.122566971945516,51.488942283277716],[-3.122566969748653,51.488942283826304],[-3.122566967991162,51.4889422841006],[-3.1225430691997422,51.48894713192654],[-3.1225193153932227,51.488952237861234],[-3.1225193105601203,51.488952238958404],[-3.122495703495629,51.48895760300192],[-3.1194708770566177,51.483906176616024],[-3.1196361286298773,51.48386862860101],[-3.119802426711322,51.48383288196254],[-3.1199697084941382,51.483798950958],[-3.120137882176659,51.48376685341025],[-3.120306932400832,51.48373659205811],[-3.1204768495200756,51.483708169366274],[-3.1206474648525404,51.4836816130316],[-3.1206474666098374,51.483681612757344],[-3.1208188614501493,51.48365691043495],[-3.1209909022635713,51.48363408159424],[-3.1211635095528716,51.483613136380114],[-3.1213367303460986,51.48359406875625],[-3.121510451758136,51.483576891610454],[-3.1216846079117833,51.48356161179717],[-3.1218591614860425,51.48354823178282],[-3.122034084385796,51.48353675458266],[-3.122209260212788,51.48352718705168],[-3.1223847351174006,51.483519526720336],[-3.1225603720536945,51.4835137804442],[-3.122736127990358,51.48350994877102],[-3.1229119752723156,51.483508032797474],[-3.1230878493417045,51.48350803279745],[-3.1232637058493733,51.48350994904527],[-3.1232637062886925,51.48350994904528],[-3.1234394402593786,51.48351378016991],[-3.123439439820062,51.4835137804442],[-3.1236150890573096,51.483519527268875],[-3.1237905516609623,51.483527186777394],[-3.1237905521002776,51.48352718650309],[-3.123965755165132,51.483536755953914],[-3.124103712026366,51.48264207733103],[-3.1243036046707187,51.48265519324993],[-3.1365059987832664,51.41567619371163]],[[-3.1302039527534284,51.492775807694734],[-3.130119654717541,51.492853840274044],[-3.1289329639157364,51.492344813660445],[-3.1290032029535113,51.49227979718695],[-3.1290032148159432,51.49227978594019],[-3.1290032161339694,51.49227978456865],[-3.1290716269545595,51.49221401273482],[-3.1302860476072603,51.49269687741873],[-3.1302039527534284,51.492775807694734]],[[-3.129743051037995,51.49137316905033],[-3.129698042670074,51.491446384629775],[-3.129698039155753,51.4914463903902],[-3.1296509759560083,51.49151912577501],[-3.1296509763954408,51.49151912604928],[-3.1296019022856565,51.49159131458049],[-3.129550808032845,51.491662971342414],[-3.128240585146908,51.491290306251955],[-3.12828145405201,51.491232992379125],[-3.128281455369964,51.491232990459],[-3.1282814623991246,51.49123298058401],[-3.128320722093336,51.49117523091238],[-3.1283207278043856,51.49117522186034],[-3.128320730001003,51.49117521884297],[-3.128358369506353,51.491117049283844],[-3.1283583699457687,51.49111704955813],[-3.1283943919032238,51.491058455449895],[-3.1284287563410693,51.49099950152983],[-3.1297860133689004,51.4912994628548],[-3.129743051037995,51.49137316905033]],[[-3.1275792466164907,51.493267150210485],[-3.127481619107194,51.493316506470656],[-3.127382589554813,51.49336480967802],[-3.127282262098212,51.49341200853183],[-3.127180601149621,51.493458120310734],[-3.127077691515993,51.49350310660686],[-3.1262620817083384,51.49276239683965],[-3.1263444035546337,51.492726410682124],[-3.1263444101455344,51.492726407664684],[-3.1263444202515993,51.492726403275654],[-3.1264257229149814,51.492689525626794],[-3.1264257233544095,51.49268952590108],[-3.126505998044764,51.4926517606034],[-3.126505998484191,51.492651760877685],[-3.1265852047754312,51.49261312686097],[-3.12658520521486,51.49261312713525],[-3.1266633211357586,51.492573635648476],[-3.1266633281659755,51.492573632082404],[-3.1266633360749707,51.49257362796771],[-3.1267403194426087,51.4925332995866],[-3.1276754922924574,51.493216730751215],[-3.1275792466164907,51.493267150210485]],[[-3.127313404627256,51.492181705771024],[-3.1273134041878223,51.49218170549674],[-3.127246149132767,51.492228338880814],[-3.1261845463566664,51.49162114369757],[-3.126133133945719,51.49165556379297],[-3.1260807569408726,51.49168942487493],[-3.1271077633058844,51.49231938167306],[-3.1270366914099164,51.492363752947504],[-3.1269644012770046,51.49240733616628],[-3.12689087533205,51.49245014147675],[-3.126816193982716,51.492492122517874],[-3.1268161935432888,51.49249212224358],[-3.126740334821127,51.49253329108292],[-3.125805185983083,51.49184985457688],[-3.125747436631474,51.491880106719805],[-3.1256888391240736,51.49190973044058],[-3.12562943432473,51.49193870543912],[-3.1255692398099773,51.49196702321061],[-3.125508250308322,51.49199468677125],[-3.1254464983358075,51.49202168103279],[-3.1246309409576787,51.4912809597352],[-3.1246721009853786,51.49126296695722],[-3.1246721014247836,51.49126296723152],[-3.1247127604943112,51.49124452542314],[-3.1247529058628722,51.491225639522405],[-3.1247925085304877,51.49120632324511],[-3.124831557951515,51.49118658207789],[-3.124831561466581,51.491186580157745],[-3.1248315654210432,51.4911865782376],[-3.1248700646707848,51.491166410535165],[-3.124907986507146,51.491145830561884],[-3.124907987825286,51.49114582973898],[-3.124907993537265,51.49114582672163],[-3.1249453419144353,51.49112483255796],[-3.1249820891511098,51.4911034390169],[-3.1249820895905214,51.49110343929119],[-3.125018241837988,51.49108164417882],[-3.1250537784452157,51.491059458742214],[-3.1250886901852577,51.49103688929091],[-3.1250886963365634,51.49103688517636],[-3.1251229717855913,51.49101393856851],[-3.125156592929274,51.490990627148356],[-3.1251565968836674,51.49099062440533],[-3.125156599519926,51.4909906224852],[-3.1251895707521977,51.49096694323595],[-3.125221867468275,51.49094291398788],[-3.125253494940953,51.490918530627],[-3.1252844351562494,51.49089380714331],[-3.12531468591775,51.49086874518318],[-3.1253442195454837,51.49084336723999],[-3.125373044388096,51.49081766673098],[-3.1253730505392614,51.49081766124495],[-3.12540115253753,51.49079165051428],[-3.125428523344113,51.490765337242976],[-3.125455154172432,51.49073872993486],[-3.125481032281696,51.490711841756976],[-3.1255061598695675,51.49068467024106],[-3.1255305233166646,51.490657229651326],[-3.125554116033552,51.49062952739441],[-3.125554117790993,51.4906295254743],[-3.125554120866491,51.49062952163407],[-3.1255769309914947,51.49060157224837],[-3.1255769327489054,51.49060156977966],[-3.125576935385054,51.490601566762344],[-3.125598965555389,51.490573367231],[-3.1256201990766,51.49054493757848],[-3.1256202021520645,51.490544933463966],[-3.125620203030766,51.49054493209246],[-3.1256406390254092,51.490516275610744],[-3.1256406421008482,51.49051627094764],[-3.1256406429795627,51.490516269850445],[-3.1256602783733123,51.490487389557295],[-3.1256790995475874,51.490458305202765],[-3.1256971082611122,51.490429014592834],[-3.1257142957283293,51.49039953199147],[-3.1257306557997917,51.49036986699958],[-3.127096056505803,51.490655026713405],[-3.1270715193239638,51.4906995206436],[-3.127045742553713,51.49074373976607],[-3.127018725752461,51.49078768325712],[-3.1269904882476007,51.49083132066834],[-3.1269610423374434,51.4908746325234],[-3.1269303774751767,51.49091763473093],[-3.126898520896893,51.4909602880647],[-3.1268654800688926,51.491002583745995],[-3.12683125542793,51.49104452040236],[-3.126795868938994,51.49108607169957],[-3.1267593298262555,51.49112722776163],[-3.1267216323757574,51.4911679929764],[-3.1267216319363893,51.4911679932507],[-3.1266828134912745,51.49120832784291],[-3.126642861747696,51.49124824525234],[-3.126601814049324,51.49128770762384],[-3.126559652820089,51.491326732237425],[-3.126516424630856,51.491365275477406],[-3.126472114541977,51.49140335188077],[-3.126426749792755,51.491440936484516],[-3.126380330382068,51.49147802956173],[-3.1263328892616835,51.491514605052075],[-3.1262844339000786,51.49155065719389],[-3.127379332481326,51.492134355935484],[-3.127313404627256,51.492181705771024]],[[-3.1238153796279047,51.48905875878696],[-3.1237945518873502,51.489049988847626],[-3.1237945518873382,51.48904998857333],[-3.123773473716186,51.48904144328078],[-3.123752168401165,51.48903313223511],[-3.1237306253970782,51.4890250513218],[-3.123708867990579,51.48901720959239],[-3.123708866672457,51.4890172090438],[-3.1237088631574625,51.48901720794663],[-3.1236868904695876,51.4890096043038],[-3.1236647042575836,51.489002239844616],[-3.1236647025000845,51.489002239296035],[-3.123664699424469,51.48900223847316],[-3.123642314626833,51.48899511813475],[-3.1236423106724653,51.48899511676329],[-3.1236197299251676,51.48898824136841],[-3.123619727288925,51.48898824081983],[-3.1236197250920523,51.48898823999696],[-3.123596951909809,51.488981610642675],[-3.123574001231027,51.48897523144326],[-3.123550870858553,51.48896910212433],[-3.1235508673435666,51.48896910130145],[-3.123550866025449,51.48896910102716],[-3.1235275722157727,51.488963225702946],[-3.1235041136504598,51.48895760409909],[-3.1234805013134928,51.488952238958404],[-3.1234804964803877,51.48895223786124],[-3.1234567426738655,51.48894713165225],[-3.1239135623745575,51.48809476210294],[-3.1239610788751766,51.48810497625254],[-3.124008302352811,51.48811570633722],[-3.1240552152342187,51.48812694851732],[-3.124101808733402,51.488138700598924],[-3.1241480661557435,51.488150958193835],[-3.124193984866315,51.48816372130247],[-3.124193985305678,51.48816372130247],[-3.124239526641361,51.48817697867946],[-3.12428470026939,51.48819073306813],[-3.1243294697233326,51.48820497349743],[-3.1243738512608914,51.48821970517927],[-3.124373851700261,51.48821970517926],[-3.124417799188705,51.488234913028336],[-3.124461327128173,51.48825060143367],[-3.12446132756755,51.48825060170795],[-3.124504396855019,51.48826675695571],[-3.124504399930627,51.48826675832714],[-3.1245470215512157,51.48828338453211],[-3.1245891691434653,51.488300471546154],[-3.124630826890709,51.48831801251259],[-3.1238153796279047,51.48905875878696]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231441772096526,51.48980028534266],[-3.122999906539917,51.48979949951172]],[[-3.1229999305420684,51.48979950396072],[-3.1229999270270317,51.48979950341212],[-3.1229999388902834,51.4897995056065],[-3.1230119937179746,51.48980187881897],[-3.122999906539917,51.48979949951172],[-3.122999916921297,51.48979950149206],[-3.122999906539917,51.48979949951172],[-3.1229999208757118,51.489799502314945],[-3.12299992570889,51.48979950313783],[-3.1229999243907502,51.489799502863534],[-3.1229999199969525,51.489799502040654],[-3.123085014730475,51.48981423419909],[-3.1229999305420684,51.48979950396072]],[[-3.122999921754475,51.48979950313783],[-3.1229999164819127,51.48979950204065],[-3.122999918678813,51.48979950258924],[-3.1229999274664078,51.489799504509314],[-3.123013353599122,51.4898028064895],[-3.122999915163776,51.48979950176635],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230681939447127,51.489814596007136],[-3.122999921754475,51.48979950313783]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230677080275564,51.48983966643075],[-3.122999906539917,51.48979949951172]],[[-3.122999919118189,51.489799506155094],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123063133628804,51.48983203742552],[-3.122999919118189,51.489799506155094]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230611876261722,51.48984124939929],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12306033253123,51.489795201330665],[-3.122999906539917,51.48979949951172]],[[-3.122999914285011,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.123057303855442,51.48977099713692],[-3.122999914285011,51.48979949545753]],[[-3.122999917800053,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.1230555577837613,51.48978986434651],[-3.122999917800053,51.48979949737761]],[[-3.1229999186788127,51.489799499023384],[-3.122999906539917,51.48979949951172],[-3.123033219280841,51.4897982273802],[-3.1229999186788127,51.489799499023384]],[[-3.122999906539917,51.48979949951172],[-3.1230170452638766,51.48978822433985],[-3.122999906539917,51.48979949951172],[-3.1230072347928504,51.4897948436634],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999151637724,51.48979949436035],[-3.12303114056406,51.48978284565736],[-3.122999906539917,51.48979949951172]],[[-3.1229999147243905,51.489799491343085],[-3.122999912527493,51.48979949326316],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999116487335,51.48979949408605],[-3.12303024290257,51.48976977186469],[-3.1229999147243905,51.489799491343085]],[[-3.122999915163772,51.489799495183235],[-3.1229999226332272,51.48979949161739],[-3.1230227501715087,51.489788946561504],[-3.122999915163772,51.489799495183235]],[[-3.1229999169212954,51.489799491343085],[-3.122999914285013,51.48979949326316],[-3.122999916481918,51.48979949189168],[-3.1229999125274976,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229999156031574,51.48979949189168],[-3.123022085386839,51.48978270247667],[-3.1229999169212954,51.489799491343085]],[[-3.1229999248301312,51.48979948640575],[-3.122999915163775,51.489799492988865],[-3.1230172812104544,51.48978723906687],[-3.1229999248301312,51.48979948640575]],[[-3.1229999195575715,51.48979949161739],[-3.12299992878455,51.48979948585716],[-3.1230162122004783,51.48979017129634],[-3.1229999195575715,51.48979949161739]],[[-3.122999912088113,51.48979949408605],[-3.1229999147243905,51.489799491343085],[-3.1230160338103983,51.48978484967046],[-3.122999912088113,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011906274105,51.48977420888779],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230117920385596,51.48978638408544],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011124621572,51.48979003469729],[-3.122999906539917,51.48979949951172]],[[-3.1229999182394312,51.4897994976519],[-3.122999916042529,51.4897994979262],[-3.1230111127602544,51.48979794815059],[-3.1229999182394312,51.4897994976519]],[[-3.1229999388902834,51.4897995056065],[-3.1229999305420684,51.48979950396072],[-3.1230089518906006,51.48980117223153],[-3.1229999388902834,51.4897995056065]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999125274976,51.489799494634646],[-3.1229999134062574,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.1229999147243985,51.489799493537454],[-3.1229999248301312,51.48979948640575],[-3.123007590251068,51.489794264074916],[-3.122999906539917,51.48979949951172]],[[-3.12299992878455,51.48979948585716],[-3.122999922633235,51.48979948942301],[-3.1230072800490234,51.4897951308518],[-3.12299992878455,51.48979948585716]],[[-3.122999908133694,51.48979949216598],[-3.1230022008176466,51.48979176962301],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.489799492988865],[-3.1230003106056703,51.48979758086815],[-3.122999907694314,51.48979949216598],[-3.123004957045847,51.489778401235625],[-3.122999908133694,51.48979949216598]],[[-3.1229999098912127,51.48979949216598],[-3.1229999094518357,51.489799492988865],[-3.122999909451834,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123004641572434,51.48979012356979],[-3.1229999098912127,51.48979949216598]],[[-3.122999915163774,51.48979948503426],[-3.122999912088114,51.48979948969731],[-3.1229999138456344,51.48979948640575],[-3.1230043010533075,51.48979253408722],[-3.122999915163774,51.48979948503426]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12300323248147,51.489791470091234],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230026129561934,51.48979625327317],[-3.122999906539917,51.48979949951172]],[[-3.1229999107699746,51.48979949189168],[-3.122999915163774,51.48979948503426],[-3.123001164760169,51.489797601988954],[-3.1229999107699746,51.48979949189168]],[[-3.1229999076943153,51.489799488051524],[-3.1230008721330726,51.48979323656057],[-3.1229999072549353,51.489799492988865],[-3.1229999072549353,51.48979949134308],[-3.1230010909441535,51.4897900997061],[-3.1229999076943153,51.489799488051524]],[[-3.1229999098912145,51.48979949244028],[-3.122999909451835,51.489799493263156],[-3.1229999098912127,51.48979949216598],[-3.1230007245015274,51.48979805622395],[-3.1229999098912145,51.48979949244028]],[[-3.1229999138456344,51.48979948640575],[-3.122999909451834,51.489799493537454],[-3.1229999098912145,51.48979949244028],[-3.1230006265198194,51.48979829623335],[-3.1229999138456344,51.48979948640575]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123000507887263,51.48979958268381],[-3.122999906539917,51.48979949951172]],[[-3.1229999217544746,51.4897994902459],[-3.1229999186788144,51.48979949189168],[-3.122999922633235,51.48979948942301],[-3.1229999217544746,51.4897994902459]],[[-3.1229999160425312,51.489799493537454],[-3.1229999156031574,51.489799493537454],[-3.1229999160425326,51.489799493263156],[-3.1229999173606724,51.48979949271457],[-3.1229999195575715,51.48979949161739],[-3.1229999160425312,51.489799493537454]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999916042529,51.4897994979262],[-3.122999906539917,51.48979949951172]],[[-3.1229999147243985,51.489799493537454],[-3.1229999134062574,51.48979949408605],[-3.122999915163775,51.489799492988865],[-3.1229999147243985,51.489799493537454]],[[-3.1229999107699746,51.48979949189168],[-3.122999909451834,51.489799493537454],[-3.122999912088114,51.48979948969731],[-3.1229999107699746,51.48979949189168]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999912088113,51.48979949408605],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.489799492988865],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.48979949134308],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999895831057,51.489799496829015],[-3.1229998927553995,51.489799496006135],[-3.1229998905584972,51.489799495457525],[-3.1229998874828397,51.489799494634646],[-3.1229998852859393,51.48979949408605],[-3.122999882210276,51.489799493263156],[-3.122999873422678,51.48979949106878],[-3.1229998747408247,51.48979949134308],[-3.1229998694682615,51.48979948997161],[-3.12299986287756,51.48979948832582],[-3.122941914400083,51.48978375795726],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999894952295,51.48979949161739],[-3.1229492103217305,51.48976496097176],[-3.122999906539917,51.48979949951172],[-3.122999894952295,51.48979949161739]],[[-3.1229681462482786,51.48978637585286],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229681462482786,51.48978637585286]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229916108825924,51.48980495642574],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999041792746,51.48979950780087],[-3.122994971697943,51.48982289788397],[-3.122999906539917,51.48979949951172],[-3.1229999041792746,51.48979950780087]],[[-3.1229924259265953,51.48984048330501],[-3.1229999041792746,51.48979950780087],[-3.122999906539917,51.48979949951172],[-3.1229924259265953,51.48984048330501]],[[-3.122960212324923,51.489835554190925],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122960212324923,51.489835554190925]],[[-3.122999906539917,51.48979949951172],[-3.122986771548975,51.4898146012379],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229869165456785,51.48981006739152],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924418256484,51.48980908703235],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229072623680896,51.48973855305286],[-3.122999894952295,51.48979949161739],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229624527361866,51.48982168740776],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229606082235644,51.489815737093764],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986576584587,51.48980044479762],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229598230830873,51.489779594967146],[-3.1229998971491995,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229598230830873,51.489779594967146]],[[-3.122999896270432,51.48979949408605],[-3.122918057886959,51.4897558589742],[-3.1229998967098176,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999896270432,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.1228162207129846,51.489754328833186],[-3.12299986815013,51.489799489697305],[-3.122999878695241,51.48979949244027],[-3.1229998800133814,51.48979949271457],[-3.122999883967803,51.48979949381175],[-3.1229998870434654,51.489799494634646],[-3.1229998892403574,51.489799495183235],[-3.122999892316016,51.48979949600612],[-3.122999894512919,51.489799496554724],[-3.1229998975885747,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122959947401993,51.48980882591958],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122959947401993,51.48980882591958]],[[-3.1229998967098176,51.48979949408605],[-3.1229749728922496,51.48978572796623],[-3.122999890119119,51.48979949024589],[-3.1229998945129163,51.48979949271457],[-3.122999897149196,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.1229998967098176,51.48979949408605]],[[-3.1229998909978773,51.48979949436035],[-3.1229057381014367,51.48976758020198],[-3.1229998914372556,51.48979949408605],[-3.1229998980279565,51.489799496554724],[-3.122999906539917,51.48979949951172],[-3.1229998909978773,51.48979949436035]],[[-3.122959627963948,51.48981879357904],[-3.1229998980279605,51.48979950313784],[-3.122999906539917,51.48979949951172],[-3.122959627963948,51.48981879357904]],[[-3.122999893634158,51.48979949984627],[-3.122937028473216,51.48980121335949],[-3.122999906539917,51.48979949951172],[-3.122999893634158,51.48979949984627]],[[-3.1229448657048597,51.489791250092594],[-3.1229998962704384,51.4897994979262],[-3.122999897149198,51.4897994982005],[-3.1229448657048597,51.489791250092594]],[[-3.122999894512919,51.489799496554724],[-3.1229998936341525,51.48979949628042],[-3.122999895831057,51.489799496829015],[-3.122999896709813,51.48979949710331],[-3.122999894512919,51.489799496554724]],[[-3.122999894073538,51.48979950012057],[-3.122986491228696,51.48980030572855],[-3.122999890558498,51.48979950012057],[-3.122969522815412,51.48980099201517],[-3.122999893634158,51.48979949984627],[-3.1229998953916778,51.48979949984627],[-3.122999894073538,51.48979950012057]],[[-3.122999883967803,51.48979949381175],[-3.122999883089041,51.489799493537454],[-3.1229998852859393,51.48979949408605],[-3.122999883967803,51.48979949381175]],[[-3.122974544053588,51.48979294114054],[-3.12299986287756,51.48979948832582],[-3.12299986815013,51.489799489697305],[-3.122974544053588,51.48979294114054]],[[-3.121452685494926,51.491315592437516],[-3.121410544643387,51.49129850787115],[-3.1213688761885265,51.49128096165535],[-3.12132770253982,51.49126296339125],[-3.1212870434702946,51.491244521582864],[-3.121246914359014,51.49122564336267],[-3.121207303343075,51.491206322970804],[-3.1211682543614465,51.49118658180356],[-3.121129750717854,51.49116641190668],[-3.121091821851361,51.49114582836745],[-3.1210544778680056,51.49112483667252],[-3.121054475671094,51.491124835575285],[-3.1210177148135654,51.491103434627995],[-3.120981570474977,51.49108164390451],[-3.121990752578969,51.490440575977786],[-3.122008824731046,51.49045147118664],[-3.122008828246099,51.490451473381036],[-3.122027205784428,51.490462172193354],[-3.122045876406348,51.49047266692861],[-3.122045878603252,51.49047266802582],[-3.1220458799213953,51.49047266884873],[-3.122064840551154,51.49048295868385],[-3.122084090309944,51.49049304224723],[-3.122084089870549,51.49049304224723],[-3.1221036186525017,51.49050291460132],[-3.122123420306185,51.49051257272864],[-3.122123419866796,51.49051257272864],[-3.1221434921951747,51.49052201553188],[-3.122163817622831,51.490531234507586],[-3.122163818501593,51.49053123478189],[-3.122163821577272,51.49053123615339],[-3.1221844058160206,51.49054023404443],[-3.122205233926676,51.49054900454174],[-3.122226308545368,51.490557548468104],[-3.121452685494926,51.491315592437516]],[[-3.1219555540230166,51.489180792585145],[-3.12195555446238,51.489180792859436],[-3.1219384199298075,51.48919226323679],[-3.1219216061273682,51.48920392068477],[-3.1219216048092258,51.48920392150764],[-3.121921602612314,51.48920392315341],[-3.121905120085229,51.48921575971766],[-3.1218889679547766,51.48922777649551],[-3.1218731510542432,51.489239969921286],[-3.121857683443972,51.48925232902339],[-3.1218576830045843,51.48925232929768],[-3.1218576803682847,51.489252331492025],[-3.1218425576545594,51.489264859562105],[-3.121827790822095,51.48927754782292],[-3.1218133776741213,51.489290397646066],[-3.1218133745984185,51.489290400388995],[-3.121799325680315,51.48930340299722],[-3.121799323043998,51.48930340546587],[-3.121785639674102,51.48931655921353],[-3.114500576057561,51.48641865225391],[-3.1145963856589227,51.48632656543363],[-3.114694739369331,51.48623555148799],[-3.1147956486056376,51.486145598342404],[-3.1148990483262433,51.4860567660568],[-3.1150049086446487,51.485969079035],[-3.1151132168118663,51.48588254796713],[-3.1152238998815958,51.48579723126678],[-3.1153369802587334,51.48571311109946],[-3.115452381484195,51.485630245604284],[-3.115570068403935,51.48554865808742],[-3.1156900401366237,51.48546835046211],[-3.1158122228637786,51.4853893723645],[-3.121973009725091,51.489169508729695],[-3.1219555540230166,51.489180792585145]],[[-3.1197153691860575,51.49155064978761],[-3.119666923051284,51.491514604777755],[-3.119619473582859,51.49147802270406],[-3.1196194731434623,51.49147802270405],[-3.1195730717469456,51.491440943890765],[-3.119573072186339,51.49144094389077],[-3.1195277030434183,51.491403355721054],[-3.119483392954486,51.49136527986628],[-3.119440159492904,51.49132673168881],[-3.1206267683642825,51.49081766618239],[-3.1206555932068585,51.49084336723998],[-3.1206555936462617,51.49084336696569],[-3.120685126834623,51.49086874463458],[-3.120685126834609,51.49086874490888],[-3.120715371444887,51.49089380193154],[-3.1207153714448714,51.49089380220584],[-3.1207153753992287,51.49089380522319],[-3.1207153771567153,51.490893806868996],[-3.1207153775961016,51.490893806869],[-3.1207463178113857,51.49091853090129],[-3.1207463182507853,51.490918530627],[-3.1207779391328647,51.490942908501836],[-3.1207779386934624,51.49094290877611],[-3.120777943087222,51.49094291179346],[-3.1207779452841016,51.49094291343928],[-3.1208102428789224,51.49096694323596],[-3.1197153691860575,51.49155064978761]],[[-3.118142570246891,51.491731124190686],[-3.1180893107628185,51.491677909297195],[-3.1180893098841085,51.49167790847427],[-3.1180375537640677,51.49162412856915],[-3.1179873001258684,51.491569783654356],[-3.1179385753266766,51.49151490198545],[-3.117891386392349,51.49145948959916],[-3.1178457627543312,51.491403582980034],[-3.1178017096804087,51.491347188164646],[-3.1177592359526947,51.49129031694988],[-3.119069435716578,51.49091763445663],[-3.119101285265359,51.490960279012675],[-3.1191012848259594,51.490960279012675],[-3.119101287901348,51.49096028312721],[-3.1191012914160807,51.49096028779037],[-3.1191012918554932,51.490960287516096],[-3.119134335319519,51.491002587037634],[-3.1191343357589174,51.49100258703764],[-3.1191685568850374,51.49104452012803],[-3.1191685573244534,51.49104451985375],[-3.119203938541156,51.49108606539058],[-3.1192039381017658,51.49108606539056],[-3.1192039411772092,51.49108606895652],[-3.1192039455707254,51.49108607389399],[-3.1192039455707534,51.4910860736197],[-3.119240483365523,51.49112722721305],[-3.1192404829261133,51.49112722748733],[-3.1192404846835493,51.49112722913316],[-3.119240490395137,51.49112723544216],[-3.11927817334696,51.49116798474727],[-3.1192781729075683,51.49116798474726],[-3.119278180815968,51.4911679929764],[-3.1192781808159893,51.4911679927021],[-3.119316997064299,51.49120832537415],[-3.119316996624906,51.49120832537415],[-3.11931700321527,51.491208331957466],[-3.11931700453335,51.491208333328984],[-3.119317004972742,51.491208333329],[-3.1193569426568315,51.49124823674889],[-3.118142570246891,51.491731124190686]],[[-3.11501855105639,51.49186298742573],[-3.1149620960635844,51.49177573236063],[-3.1149080690729054,51.49168784298702],[-3.114856522345861,51.49159940352086],[-3.1148074435706494,51.491510392569396],[-3.1147608722672846,51.49142088227847],[-3.114716808422366,51.49133087374816],[-3.1146752678347944,51.49124039934945],[-3.1160627441104203,51.4910002904422],[-3.1160973580910736,51.49107567407704],[-3.11609735765168,51.49107567407701],[-3.1161340813278575,51.491150684506756],[-3.1161340835240834,51.49115068944421],[-3.1161340887952726,51.4911506995935],[-3.1161340892347065,51.49115069931922],[-3.116172904167127,51.491225298139334],[-3.1161729046065183,51.49122529813935],[-3.116213791476621,51.491299447493724],[-3.1162137910371865,51.49129944776799],[-3.1162137971871924,51.49129945791732],[-3.1162137998228743,51.49129946258051],[-3.116256753807262,51.491373155335026],[-3.116256753367818,51.49137315560931],[-3.1162567595179347,51.491373165210035],[-3.1162567621535766,51.49137317014751],[-3.116256762593013,51.49137316987324],[-3.1163017705217793,51.4914463838069],[-3.116301769642987,51.491446383806846],[-3.116348826692445,51.49151911041382],[-3.11501855105639,51.49186298742573]]],[[[-3.1359960800914215,51.49366826085557],[-3.134696363719542,51.49328144950848],[-3.134597229114516,51.493408379820565],[-3.135885933818873,51.49380929558898],[-3.1359960800914215,51.49366826085557]]],[[[-3.135933439502529,51.4893049589914],[-3.135917624376946,51.489164119902625],[-3.135917623056111,51.48916411030239],[-3.1359176212936557,51.489164092747615],[-3.135917620854282,51.48916409274766],[-3.1358978743843555,51.489023476265935],[-3.1358978748237276,51.489023476265885],[-3.13589787306291,51.48902346447133],[-3.135897870421875,51.48902344746523],[-3.135897869982503,51.48902344746528],[-3.1358741913217805,51.488883040422486],[-3.1344437409582686,51.48898493900848],[-3.134464787871743,51.48910976627852],[-3.1344823384034437,51.48923477409727],[-3.134496394286398,51.48935997837532],[-3.135933439502529,51.4893049589914]]],[[[-3.132499718421823,51.487698910843434],[-3.132439527237054,51.48759570777596],[-3.1310910658219915,51.48791058169967],[-3.131142655618859,51.48799904206223],[-3.132499718421823,51.487698910843434]]],[[[-3.130555430681313,51.48111042694562],[-3.1303114096626596,51.481029431845364],[-3.1303114096625704,51.48102943129678],[-3.130311367048747,51.48102941785888],[-3.130311359140986,51.4810294151164],[-3.1300651121749614,51.48095109101875],[-3.1300651117357536,51.48095109156738],[-3.1298167068843306,51.480875460398295],[-3.129197107665537,51.48168675357173],[-3.12896944835394,51.48162048291694],[-3.1289694452787202,51.4816204820942],[-3.128969401786242,51.48162046947877],[-3.128969401346979,51.48162046975308],[-3.12873992474268,51.481556689360005],[-3.128739925181947,51.48155668908568],[-3.1287398961871404,51.48155668140678],[-3.12873987773589,51.48155667647034],[-3.1285086540993876,51.481495406074444],[-3.1285086545386216,51.48149540552583],[-3.1282756996540817,51.481436650053595],[-3.1282757000933463,51.481436649779276],[-3.128275678567098,51.48143664484291],[-3.1282756587980214,51.48143663963215],[-3.1282756583587514,51.48143663990648],[-3.128041145722413,51.48138044295332],[-3.128041146161685,51.481380442679004],[-3.1280411149706695,51.48138043554864],[-3.1280410973982558,51.48138043143492],[-3.1280410973982846,51.48138043170922],[-3.12780505728885,51.48132680012204],[-3.1282854741283215,51.48047951859153],[-3.1280241714713446,51.480423351052366],[-3.1280241714712846,51.48042335050377],[-3.1280241336915187,51.48042334282508],[-3.1280241178767243,51.4804233395342],[-3.127761285236171,51.4803700274538],[-3.1273285135646507,51.48122726070879],[-3.1275674738568195,51.48127573087511],[-3.1278050080862974,51.481326789426475],[-3.1273245782738868,51.4821740694141],[-3.127537083147253,51.48222235353679],[-3.1277481701841947,51.48227293703608],[-3.12722066227404,51.483109231398934],[-3.1274070297580843,51.483156237092935],[-3.127592059670627,51.48320526740165],[-3.127775703266382,51.483256309167096],[-3.1279578612762515,51.48330933524456],[-3.128138541187366,51.483364347286376],[-3.128138541187337,51.483364347012085],[-3.1283176138536737,51.48342130580642],[-3.1284951034555877,51.48348021903977],[-3.1286709010538933,51.48354105024306],[-3.1288449965592102,51.483603796407095],[-3.1290172788329293,51.48366841749775],[-3.1291877549180387,51.48373491599126],[-3.129356327732144,51.48380325377345],[-3.1295229893788425,51.483873428109945],[-3.1303382560745545,51.48313264314459],[-3.1301507819505,51.48305370607472],[-3.130150767012844,51.483053700041104],[-3.130150743288247,51.48305368989358],[-3.1301507432882874,51.483053690167864],[-3.129961130226932,51.4829768233164],[-3.129961127590878,51.482976822219364],[-3.1299610915648985,51.48297680768376],[-3.1299610911256663,51.48297680823238],[-3.129769359760873,51.48290201899385],[-3.1305213957061815,51.48213560733901],[-3.1303059847880887,51.4820548103654],[-3.130305984348825,51.482054810639724],[-3.1300884320735425,51.48197640307291],[-3.130088432512799,51.48197640279859],[-3.130088405713769,51.48197639347412],[-3.1300883877012557,51.48197638689208],[-3.130088387261991,51.481976387166405],[-3.129868683501744,51.48190036350914],[-3.130555430681313,51.48111042694562]]],[[[-3.124566883305163,51.377450850228676],[-3.121432924188351,51.377450850228605],[-3.121445429640383,51.37834964804971],[-3.121445617237832,51.3783496480522],[-3.118338230354304,51.3783835092924],[-3.118338230354583,51.37838350654937],[-3.1183379660517887,51.37838351229919],[-3.118337590856195,51.37838351639877],[-3.118337590855777,51.378383520513296],[-3.1152311623106796,51.37845124250721],[-3.1152936625614394,51.3793492228829],[-3.1183750999919946,51.37928204575988],[-3.1184501213563207,51.38107909168671],[-3.121483133037339,51.38104604094982],[-3.1245168589958525,51.38104604094749],[-3.1245418719110556,51.37924844573091],[-3.1214585698318387,51.37924844573919],[-3.121446069137296,51.378349648058204],[-3.124554377853022,51.378349648049785],[-3.124566883305163,51.377450850228676]]],[[[-3.122999908133694,51.48979949216598],[-3.122999907694315,51.489799493263156],[-3.1229999076943145,51.489799493537454],[-3.122999908133694,51.48979949216598]]],[[[-3.1229999076943145,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999076943145,51.489799493537454]]],[[[-3.116839290108119,51.34244236994253],[-3.1167644049146093,51.340645306678354],[-3.1126090965429376,51.340735895277675],[-3.112609096105171,51.34073589445473],[-3.112609008951894,51.34073589746433],[-3.112608355961136,51.34073591167011],[-3.1126083568354277,51.340735918802075],[-3.108457036809773,51.34087174077086],[-3.108457036372688,51.34087173802777],[-3.1084567766623006,51.34087174951622],[-3.108456182790471,51.34087176891795],[-3.108456183664294,51.340871775501334],[-3.1043085108287762,51.34105283970798],[-3.104532987455573,51.34284500835409],[-3.1086314257775705,51.34266609334691],[-3.1127338058973444,51.34253187246651],[-3.116839290108119,51.34244236994253]]],[[[-3.1166303936596518,51.49344271476967],[-3.1165294932441996,51.49337275024874],[-3.1164305798813787,51.49330170776698],[-3.1153355943280308,51.4938853732],[-3.1154509905723553,51.49396825519023],[-3.1154509901329392,51.49396825519021],[-3.1154509936478885,51.493968257659105],[-3.115451012980056,51.49396827164945],[-3.1154510134195257,51.49396827137518],[-3.115568709777844,51.494049883404664],[-3.1166303936596518,51.49344271476967]]],[[[-3.105355103670705,51.49369858663016],[-3.1052487956276598,51.49350571066617],[-3.1051479174242025,51.49331174454942],[-3.103774573675688,51.49358180454003],[-3.1038832277568744,51.493790734314146],[-3.1038832290752425,51.49379073404006],[-3.1039976863385292,51.49399840644913],[-3.105355103670705,51.49369858663016]]],[[[-3.10511849079626,51.49560852278291],[-3.1049588195365763,51.49541279648975],[-3.1048046779238545,51.49521540118926],[-3.1048046783632874,51.49521540118933],[-3.104656049653335,51.49501631468251],[-3.1045130128454996,51.49481564123519],[-3.104375631999799,51.494613472767064],[-3.1042439347209205,51.49440985181821],[-3.1041179090892066,51.49420475865637],[-3.102769055920801,51.494519303824816],[-3.102904050519799,51.49473900376908],[-3.102904049201278,51.49473900431743],[-3.1030451670079264,51.49495719980194],[-3.103045166568372,51.49495720007614],[-3.103045180621015,51.49495722092505],[-3.103045195551555,51.49495724396848],[-3.1030451959911063,51.49495724369425],[-3.103192365059988,51.49517382551497],[-3.101871697013353,51.495531994903125],[-3.1020351416274408,51.495761317755175],[-3.102035140748429,51.49576131802933],[-3.10203516138953,51.495761345188335],[-3.1020351741247723,51.49576136356846],[-3.1020351750037722,51.495761363294314],[-3.102204973762725,51.495988824839095],[-3.102204972444284,51.49598882511315],[-3.102381154847421,51.496214463181396],[-3.1023811416713505,51.49621444726991],[-3.09980338918575,51.49701606049501],[-3.100008680070667,51.49726774210943],[-3.1025636318136396,51.49643816033024],[-3.1023811785641495,51.496214492260954],[-3.103670018480145,51.4958136613458],[-3.103841072680285,51.49602334852734],[-3.10511849079626,51.49560852278291]]],[[[-3.101871728191938,51.495532040990504],[-3.1017147026419343,51.49530094382131],[-3.1015641707289774,51.49506818209262],[-3.100224273395027,51.495397344543456],[-3.1003841949900126,51.49564463651731],[-3.1003841941110015,51.49564463679143],[-3.1003842112366597,51.4956446617557],[-3.100384227044134,51.49564468644541],[-3.1003842279231457,51.49564468617128],[-3.1005510078269998,51.49589014939911],[-3.099230298380219,51.496248288728346],[-3.099414179770218,51.49650630688449],[-3.099414160887279,51.49650628137116],[-3.098103638473964,51.49687874118078],[-3.0983053366313595,51.49714896552021],[-3.09830529535161,51.49714891257237],[-3.097005358990612,51.49753557962034],[-3.0972255471474193,51.49781761668421],[-3.097225546268346,51.49781761695833],[-3.097225564713006,51.497817639180354],[-3.0972255910612474,51.49781767319885],[-3.097225592379773,51.497817672924846],[-3.0974536355674367,51.49809726811677],[-3.098731169194348,51.49768251208477],[-3.0985144959389017,51.49741686639784],[-3.0983053375096636,51.497148966617566],[-3.099605249677745,51.496762282393846],[-3.0994141990926054,51.49650633239792],[-3.100724696630659,51.496133855452825],[-3.1005510425189162,51.49589019768189],[-3.101871728191938,51.495532040990504]]],[[[-3.0992303330691646,51.496248340577345],[-3.099053678302795,51.49598833248067],[-3.0977231420431086,51.496332012782595],[-3.0979096046775574,51.49660646803166],[-3.0992303330691646,51.496248340577345]]],[[[-2.980213526673043,51.388735553249596],[-2.978313961333622,51.38738684876769],[-2.9754767579690973,51.38897882875258],[-2.9745083651843673,51.38831491917296],[-2.9716974364708664,51.38994822115232],[-2.9697239785309812,51.3886416653298],[-2.966922698003525,51.39032704526599],[-2.9659179471010826,51.389684608151605],[-2.963146124840082,51.39141130239555],[-2.9631461226517324,51.39141130129535],[-2.9631460114769688,51.39141137301059],[-2.963145559342688,51.39141165464969],[-2.963145567655759,51.39141165959847],[-2.960422124385757,51.3931682918305],[-2.9625021164818444,51.39440858838486],[-2.965190638837996,51.39267443035236],[-2.9662132092163263,51.39330579729653],[-2.9689317214190423,51.391612242981545],[-2.969936550639735,51.39225464553275],[-2.9726836234040004,51.39060181572634],[-2.9736704222078907,51.391255068024776],[-2.9764446191488187,51.38964306996215],[-2.977413062319294,51.39030695460549],[-2.980213526673043,51.388735553249596]]],[[[-2.9621236327990546,51.39077989997481],[-2.961101171092082,51.390148489939534],[-2.958342733891123,51.39192764279143],[-2.95626295978024,51.390687260364565],[-2.953519957056795,51.39251911841267],[-2.953520137721494,51.392518993318326],[-2.9524631514146886,51.39191021541305],[-2.9497548040764077,51.39378316191064],[-2.9497547975119818,51.39378315860931],[-2.949754473489413,51.39378339073767],[-2.9497542422551395,51.39378355058768],[-2.949754247067812,51.39378355333781],[-2.9470988894774597,51.395685329627966],[-2.947098885537486,51.39568532797624],[-2.9470987144829386,51.39568545472089],[-2.94709833898966,51.39568572379523],[-2.9470983468664476,51.39568572792159],[-2.9444962224933278,51.39761615115773],[-2.9444962124271794,51.39761614620496],[-2.9444957475433835,51.39761650373401],[-2.9444956886152673,51.39761654725811],[-2.944495689927548,51.39761654808302],[-2.941947072343839,51.39957543513915],[-2.9430694231061256,51.40013669943609],[-2.945602195616372,51.39818995548639],[-2.9467087263477545,51.398763351285446],[-2.9492790270400646,51.396856469196024],[-2.950369401655996,51.39744182040396],[-2.952976010980551,51.39557486363059],[-2.955633647681258,51.39373689781867],[-2.9566907146759047,51.394345640349286],[-2.9593821670198537,51.392548127275255],[-2.9593821705195924,51.39254812947455],[-2.9621236327990546,51.39077989997481]],[[-2.9519024644024925,51.39497748962225],[-2.9519024578377335,51.39497748632104],[-2.9519021487654786,51.39497770777937],[-2.951901909180243,51.39497787338172],[-2.9519019139931713,51.394977876131755],[-2.949279383659595,51.39685620420128],[-2.949279559109824,51.39685607416836],[-2.9481892123477187,51.39627070782518],[-2.950828290773348,51.394380558450955],[-2.9535195847388698,51.39251937599161],[-2.9545766021812048,51.393128141840876],[-2.9519024644024925,51.39497748962225]]],[[[-2.9433897383651297,51.39704272611546],[-2.9422832915324766,51.39646929552312],[-2.939702452356745,51.39845287468851],[-2.9408247486144155,51.39901416031434],[-2.9433897383651297,51.39704272611546]]]]} \ No newline at end of file diff --git a/benchmarks/cardiff.json b/benchmarks/vulkan-gpu-cardiff.json similarity index 100% rename from benchmarks/cardiff.json rename to benchmarks/vulkan-gpu-cardiff.json diff --git a/crates/kernels/vulkan-and-cpu/src/kernel.rs b/crates/kernels/vulkan-and-cpu/src/kernel.rs index 82c8335..b25cdad 100644 --- a/crates/kernels/vulkan-and-cpu/src/kernel.rs +++ b/crates/kernels/vulkan-and-cpu/src/kernel.rs @@ -31,7 +31,7 @@ const TAN_ONE_RADIAN: f32 = 0.017_453_3; /// Diameter of the Earth in meters. So that some points are not visible simply /// by virtue of the earth's spherical shape. -const EARTH_DIAMETER: f32 = 12_742_000.0; +pub const EARTH_DIAMETER: f32 = 12_742_000.0; #[expect( clippy::exhaustive_structs, diff --git a/crates/total-viewsheds/Cargo.toml b/crates/total-viewsheds/Cargo.toml index 599edad..6b9f308 100644 --- a/crates/total-viewsheds/Cargo.toml +++ b/crates/total-viewsheds/Cargo.toml @@ -30,3 +30,6 @@ googletest = "0.14.2" [lints] workspace = true + +[features] +ring_data = [] \ No newline at end of file diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs index 04f82b4..e39f6c5 100644 --- a/crates/total-viewsheds/src/cpu/kernel.rs +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -2,101 +2,14 @@ use crate::cpu::los::{LineOfSight as _, UnrolledLOS}; use crate::cpu::vector::{VectorLos, DEFAULT_VECTOR_LENGTH}; use itertools::izip; -/// `fill_in_elevations` will fill in "blank" elevations from NASA data with the last seen elevation -/// in the line of sight -fn fill_in_elevations(elevs: &[i16], max_los: usize) -> Vec { - elevs - .chunks_exact(2 * max_los) - .flat_map(|line| { - line.iter() - .scan(0, |last_seen, &elevation| match elevation { - i16::MIN => Some(*last_seen), - _ => { - *last_seen = elevation; - Some(elevation) - } - }) - }) - .collect::>() -} - -/// `generate_rotation` generates a rotation "map" for a given elevation list -/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) -#[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - clippy::cast_possible_wrap, - clippy::cast_precision_loss, - reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" -)] -fn generate_rotation(elevs: &[i16], angle: f64, max_los: usize) -> (Vec, Vec) { - let width = (max_los * 3) as isize; - - #[expect(clippy::integer_division, reason = "we don't need precision here")] - { - assert_eq!( - elevs.len() as isize % width, - 0, - "Elevations array must be square {}%{width} != 0", - elevs.len(), - ); - let elevations_div_width = elevs.len() as isize / width; - assert_eq!( - elevations_div_width, - width, - "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", - elevs.len() as isize - ); - }; - - let (sin, cos) = (f64::sin(angle.to_radians()), f64::cos(angle.to_radians())); - - #[expect(clippy::integer_division, reason = "we don't need precision here")] - let (x_center, y_center) = (width / 2, width / 2); - - let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); - - for x in (max_los as isize)..(max_los as isize) * 2 { - let x_sin = (x - x_center) as f64 * sin; - let x_cos = (x - x_center) as f64 * cos; - for y in (max_los as isize)..width { - let y_sin = (y - y_center) as f64 * sin; - let y_cos = (y - y_center) as f64 * cos; - - let x_rot = (x_cos - y_sin).round() as isize + y_center; - let y_rot = (y_cos + x_sin).round() as isize + x_center; - - let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); - - rotation.push(new_idx as i32); - } - } - - debug_assert_eq!( - rotation.len() as isize, - max_los as isize * (2 * max_los as isize), - "the rotation should be 2 * max_los wide, max_los tall" - ); - - // map the indexes to their elevations - let elevations = rotation - .iter() - .map(|&idx| { - if idx < 0i32 { - i16::MIN - } else { - #[expect( - clippy::as_conversions, - reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" - )] - #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] - // safety: idx is clamped so a get will always be in-bounds - *unsafe { elevs.get_unchecked(idx as usize) } - } - }) - .collect::>(); - - (rotation, fill_in_elevations(&elevations, max_los)) +/// The data output by a single angle. +pub struct OutputData { + /// The visibile surface area. + pub surfaces: Vec, + /// The longest lines of sight. + pub longest: Vec, + /// The raw ring data used to reconstruct viewsheds. + pub visibility: Vec>, } #[expect( @@ -149,25 +62,21 @@ const DEFAULT_UNROLL: usize = const { reason = "I am become Death, destroyer of compilers" )] // the real reason is that I need output_sector_data to be constant propagated #[inline(always)] -pub fn kernel( - elevation_map: &[i16], - max_los: usize, - angle: f32, - output_sector_data: bool, -) -> (Vec, Vec, Vec>) { - let mut heatmap = vec![0.0f32; max_los * max_los]; +pub fn kernel(elevation_map: &[i16], max_los: usize, angle: f32, refraction: f32) -> OutputData { + let mut surfaces = vec![0.0f32; max_los * max_los]; let mut longest = vec![0.0f32; max_los * max_los]; let mut sector_data: Vec> = vec![ vec![]; - if output_sector_data { + if cfg!(any(test, feature = "ring_data")) { max_los * max_los } else { 0 } ]; - let (indexes, rotated_elevations) = generate_rotation(elevation_map, f64::from(angle), max_los); + let (indexes, rotated_elevations) = + super::rotation::generate_rotation(elevation_map, angle, max_los); assert_eq!( rotated_elevations.len(), @@ -177,7 +86,7 @@ pub fn kernel( let width = 2 * max_los; - let mut vs = UnrolledLOS::::new(max_los); + let mut vs = UnrolledLOS::::new(max_los, refraction); for (line, line_indexes) in izip!( rotated_elevations.chunks_exact(width), indexes.chunks_exact(width), @@ -204,11 +113,11 @@ pub fn kernel( clippy::indexing_slicing, reason = "if slicing is out of bounds, it should panic" )] - let (pixel, long, sector) = vs.line_of_sight::>( - f32::from(pov_height), - &line[neighbor..neighbor + max_los], - output_sector_data, - ); + let (point_surface, point_longest, point_visibility) = + vs.line_of_sight::>( + f32::from(pov_height) + 1.65, + &line[neighbor..neighbor + max_los], + ); #[expect( clippy::as_conversions, @@ -219,19 +128,49 @@ pub fn kernel( { // safety: result_tvs_id is guaranteed to be within [0..max_los^2) unsafe { - *heatmap.get_unchecked_mut(result_tvs_id as usize) = pixel; + *surfaces.get_unchecked_mut(result_tvs_id as usize) = point_surface; }; // safety: result_tvs_id is guaranteed to be within [0..max_los^2) unsafe { - *longest.get_unchecked_mut(result_tvs_id as usize) = long; + *longest.get_unchecked_mut(result_tvs_id as usize) = point_longest; }; - if output_sector_data { - sector_data[result_tvs_id as usize] = sector; + if cfg!(any(test, feature = "ring_data")) { + // TODO@ryan: + // This rotation of the `result_tvs_id` is just a hack to get the ring data + // into the right format for rendering. Ideally we would just fill up the ring data + // in the order that each point is processed. Though without skipping any points. The + // sector data is just a snapshot of the already rotated TVS grid. The reason for this + // is mainly fidelity. We don't want to have to both rotate the DEM and then rotate the + // sector data. Just the DEM rotation already has all the data we need to reconstruct + // viewsheds. + // + // In short: either keep this hack or better, just fill the sector data as you process + // it, but make sure that any skipped points are also filled with empty bitmaps. + { + let sector = angle.rem_euclid(f32::from(crate::run::compute::SECTOR_STEPS)); + #[expect( + clippy::cast_possible_truncation, + reason = "max_los is always within u32" + )] + let rotated_tvs_id = kernel::rotation::Rotator::rotate_index( + result_tvs_id as u32, + max_los as u32, + sector, + ); + + if rotated_tvs_id != kernel::rotation::NOOP_DEM_ID { + sector_data[rotated_tvs_id] = point_visibility; + } + } } } } } - (heatmap, longest, sector_data) + OutputData { + surfaces, + longest, + visibility: sector_data, + } } diff --git a/crates/total-viewsheds/src/cpu/los.rs b/crates/total-viewsheds/src/cpu/los.rs index b882748..b7ebae1 100644 --- a/crates/total-viewsheds/src/cpu/los.rs +++ b/crates/total-viewsheds/src/cpu/los.rs @@ -6,12 +6,7 @@ pub trait LineOfSight> { /// `line_of_sight` calculates a line of sight for the given `pov_height` /// and outputs a triple of the surface area, longest line of sight in meters /// and a vector of bools of which - fn line_of_sight( - &mut self, - pov_height: f32, - line: &[i16], - output_sector: bool, - ) -> (f32, f32, Vec) + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) where LOS: Angle + PrefixMax + Accumulate; } @@ -43,14 +38,13 @@ pub trait Accumulate> { prefix: &[f32], distances: &[f32], bitmap: &mut Vec, - output_sector: bool, ) -> Output; } /// `PrefixMax` calculates the prefix maximum of the given angles pub trait PrefixMax { /// `prefix_max` calculates the prefix max of the - fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]); + fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]); } /// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters @@ -62,92 +56,17 @@ const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; clippy::cast_precision_loss, reason = "max_los is < 2^24" )] -fn generate_distances(max_los: usize) -> (Vec, Vec) { +fn generate_distances(max_los: usize, refraction: f32) -> (Vec, Vec) { (1..=max_los) .map(|step| { - ( - (step * 100) as f32, - (step * 100) as f32 / EARTH_RADIUS_SQUARED, - ) + let distance = (step * 100) as f32; + let adjustment = (distance * distance * refraction) / EARTH_RADIUS_SQUARED; + + (distance, adjustment) }) .unzip() } -/// `StraightLine` contains the distances and round-earth adjustments needed to compute -/// the longest line of sight. -pub struct StraightLine { - /// `max_los` is the longest possible line of sight in 100ms - max_los: usize, - /// `angles` is a buffer of size `max_los` to store all angle calculations in - angles: Vec, - /// `prefix_max` is a buffer of size `max_los` to store the inclusive prefix max calculation in - prefix_max: Vec, - /// `distances` holds the distances in meters for every step between 100m and - distances: Vec, - /// `adjustments` holds earth curvature adjustments in meters for every step between 100m and - adjustments: Vec, -} - -impl StraightLine { - /// new constructs a new `StraightLine` given the maximum line of sight in `max_los` - #[expect(unused, reason = "this is generally only for testing/benchmarking")] - pub fn new(max_los: usize) -> Self { - let (distances, adjustments) = generate_distances(max_los); - Self { - max_los, - angles: vec![0.0f32; max_los + 1], - prefix_max: vec![0.0f32; max_los], - distances, - adjustments, - } - } -} - -impl LineOfSight<(f32, f32)> for StraightLine { - #[expect( - clippy::indexing_slicing, - reason = "all indexing and slices are guaranteed by construction of a StraightLine" - )] - fn line_of_sight( - &mut self, - pov_height: f32, - line: &[i16], - output_sector: bool, - ) -> (f32, f32, Vec) - where - LOS: PrefixMax + Angle + Accumulate<(f32, f32)>, - { - let mut output: Vec = vec![]; - - self.angles[0] = -2000.0; - - LOS::calculate_angles( - pov_height, - line, - &self.distances, - &self.adjustments, - &mut self.angles[1..], - ); - - LOS::prefix_max( - -2000.0f32, - &self.angles[..self.max_los], - &mut self.prefix_max, - ); - - let (heatmap, longest) = LOS::accumulate( - (0.0, 0.0), - &self.angles[1..], - &self.prefix_max, - &self.distances, - &mut output, - output_sector, - ); - - (heatmap, longest, output) - } -} - /// Unroll holds an unrolled heatmap and unrolled longest line of sight calculation /// Since in Line of Sight-land max/addition are commutative, then Unroll will be materialized /// into (f32, f32) @@ -185,8 +104,8 @@ where { /// `new` initializes a new `UnrolledLOS`, and precalculates all the distances /// and earth curvature adjustments - pub fn new(max_los: usize) -> Self { - let (distances, adjustments) = generate_distances(max_los); + pub fn new(max_los: usize, refraction: f32) -> Self { + let (distances, adjustments) = generate_distances(max_los, refraction); Self { distances, @@ -199,17 +118,11 @@ impl LineOfSight> for UnrolledLOS where [(); UNROLL + 1]:, { - #[inline] #[expect( clippy::indexing_slicing, reason = "all indexing and slices are guaranteed by construction of a UnrolledLOS" )] - fn line_of_sight( - &mut self, - pov_height: f32, - line: &[i16], - output_sector: bool, - ) -> (f32, f32, Vec) + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) where LOS: Angle + PrefixMax + Accumulate>, { @@ -241,18 +154,12 @@ where &mut angles[1..], ); - LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); + LOS::prefix_max(&angles[..UNROLL], &mut prefix_max); - let new_acc = LOS::accumulate( - acc, - &angles[1..], - &prefix_max, - distances, - &mut output, - output_sector, - ); + let new_acc = + LOS::accumulate(acc, &angles[1..], &prefix_max, distances, &mut output); - angles[0] = angles[UNROLL]; + angles[0] = angles[UNROLL].max(prefix_max[UNROLL - 1]); new_acc }, ); @@ -265,16 +172,9 @@ where &mut angles[1..], ); - LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); + LOS::prefix_max(&angles[..UNROLL], &mut prefix_max); - let new_acc = LOS::accumulate( - los, - &angles[1..], - &prefix_max, - rest_distances, - &mut output, - output_sector, - ); + let new_acc = LOS::accumulate(los, &angles[1..], &prefix_max, rest_distances, &mut output); let (heatmap, longest) = new_acc.into(); (heatmap, longest, output) diff --git a/crates/total-viewsheds/src/cpu/mod.rs b/crates/total-viewsheds/src/cpu/mod.rs index e49a6f1..3e8adcf 100644 --- a/crates/total-viewsheds/src/cpu/mod.rs +++ b/crates/total-viewsheds/src/cpu/mod.rs @@ -1,9 +1,11 @@ /// los contains all the traits necessary for implementing a line of sight algorithm mod los; +mod rotation; + /// vector contains vectorized implementations of the line of sight traits mod vector; /// kernel is the exported kernel module -mod kernel; +pub mod kernel; pub use kernel::kernel; diff --git a/crates/total-viewsheds/src/cpu/rotation.rs b/crates/total-viewsheds/src/cpu/rotation.rs new file mode 100644 index 0000000..4ae64c5 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/rotation.rs @@ -0,0 +1,150 @@ +//! Rotate the DEM, but just the so-called "chocolate bar" region. + +use kernel::rotation::ANGLE_SHIFT; + +/// `generate_rotation` generates a rotation "map" for a given elevation list +/// Adapted from [this stack overflow answer](https://stackoverflow.com/a/71901621) +#[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + reason = "so long as max_los^2 < 2^24, the following `as` conversions are entirely safe" +)] +pub fn generate_rotation(elevs: &[i16], angle: f32, max_los: usize) -> (Vec, Vec) { + let width = (max_los * 3) as isize; + #[expect(clippy::integer_division, reason = "we don't need precision here")] + { + assert_eq!( + elevs.len() as isize % width, + 0, + "Elevations array must be square {}%{width} != 0", + elevs.len(), + ); + let elevations_div_width = elevs.len() as isize / width; + assert_eq!( + elevations_div_width, + width, + "Elevations array must be square {}/{width} (={elevations_div_width}) != {width}", + elevs.len() as isize + ); + }; + + let (sin, cos) = ( + f32::sin((angle + ANGLE_SHIFT).to_radians()), + f32::cos((angle + ANGLE_SHIFT).to_radians()), + ); + + let (x_center, y_center) = ((width - 1) as f32 / 2.0, (width - 1) as f32 / 2.0); + + let mut rotation: Vec = Vec::with_capacity(2 * max_los * max_los); + + for x in (max_los as isize)..(max_los as isize) * 2 { + let x_sin = (x as f32 - x_center) * sin; + let x_cos = (x as f32 - x_center) * cos; + for y in (max_los as isize)..width { + let y_sin = (y as f32 - y_center) * sin; + let y_cos = (y as f32 - y_center) * cos; + + let x_rot = (x_cos - y_sin + y_center).round() as isize; + let y_rot = (y_cos + x_sin + x_center).round() as isize; + + let new_idx = x_rot.clamp(0, width - 1) * width + y_rot.clamp(0, width - 1); + + rotation.push(new_idx as i32); + } + } + + debug_assert_eq!( + rotation.len() as isize, + max_los as isize * (2 * max_los as isize), + "the rotation should be 2 * max_los wide, max_los tall" + ); + + // map the indexes to their elevations + let elevations = rotation + .iter() + .map(|&idx| { + if idx < 0i32 { + i16::MIN + } else { + #[expect( + clippy::as_conversions, + reason = "elevations start out as i16s, and i16 -> f32 -> i16 is lossless" + )] + #[expect(clippy::cast_sign_loss, reason = "idx < 2^31, idx >= 0")] + // safety: idx is clamped so a get will always be in-bounds + *unsafe { elevs.get_unchecked(idx as usize) } + } + }) + .collect::>(); + + (rotation, fill_in_elevations(&elevations, max_los)) +} + +/// `fill_in_elevations` will fill in "blank" elevations from NASA data with the last seen elevation +/// in the line of sight +fn fill_in_elevations(elevs: &[i16], max_los: usize) -> Vec { + elevs + .chunks_exact(2 * max_los) + .flat_map(|line| { + line.iter() + .scan(0, |last_seen, &elevation| match elevation { + i16::MIN => Some(*last_seen), + _ => { + *last_seen = elevation; + Some(elevation) + } + }) + }) + .collect::>() +} + +#[cfg(test)] +mod test { + use super::*; + use googletest::prelude::*; + + #[rustfmt::skip] + const DEM: [i16; 36] = [ + 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, + ]; + + #[gtest] + fn rotate_by_0() { + #[rustfmt::skip] + let expected = [ + 14, 15, 16, 17, + 20, 21, 22, 23 + ]; + let (rotations, _) = generate_rotation(&DEM, 0.0, 2); + expect_eq!(&rotations, &expected); + } + + #[gtest] + fn rotate_by_45() { + #[rustfmt::skip] + let expected = [ + 14, 15, 9, 4, + 20, 21, 16, 11 + ]; + let (rotations, _) = generate_rotation(&DEM, 45.0, 2); + expect_eq!(&rotations, &expected); + } + + #[gtest] + fn rotate_by_90() { + #[rustfmt::skip] + let expected = [ + 20, 14, 8, 2, + 21, 15, 9, 3 + ]; + let (rotations, _) = generate_rotation(&DEM, 90.0, 2); + expect_eq!(&rotations, &expected); + } +} diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs index cd50b05..e5520c0 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -86,7 +86,7 @@ impl VectorGreater<4> for VectorLos<4> { impl PrefixMax for VectorLos<4> { #[inline] - fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { let (vector_angles, _) = angles_in.as_chunks::<4>(); let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); @@ -106,7 +106,7 @@ impl PrefixMax for VectorLos<4> { v_prefix_max.copy_to_slice(prefix); } - let mut local_acc = Simd::splat(highest); + let mut local_acc = Simd::splat(-2000.0); // accumulate the prefix maxes for blocks, re-computing all prefix maxes // to include the accumulated value @@ -138,7 +138,7 @@ impl VectorMax<8> for VectorLos<8> { ))] impl PrefixMax for VectorLos<8> { #[inline] - fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { use std::arch::x86_64::{ _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_slli_si256, _mm_max_ps, @@ -180,7 +180,7 @@ impl PrefixMax for VectorLos<8> { }; { - let mut acc: f32x4 = Simd::splat(highest); + let mut acc: f32x4 = Simd::splat(-2000.0f32); let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); for prefix in vector_prefix.iter_mut() { // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions @@ -241,7 +241,7 @@ impl VectorGreater<16> for VectorLos<16> { #[cfg(target_feature = "avx512f")] impl PrefixMax for VectorLos<16> { #[inline] - fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { use std::arch::x86_64::{ __m512, _mm512_alignr_epi32, _mm512_castps_si512, _mm512_castsi512_ps, _mm512_max_ps, }; @@ -347,60 +347,14 @@ where vector_distances.iter(), vector_adjustments.iter() ) { - let float_elevation: Simd = Simd::from(elevation).cast(); - - let adjusted = float_elevation - Simd::splat(pov_height); - - let res = (adjusted / Simd::from_array(distance)) - Simd::from_array(adjustment); - + let elevation_f32: Simd = Simd::from(elevation).cast(); + let height_delta = elevation_f32 - Simd::splat(pov_height); + let res = (height_delta + Simd::from_array(adjustment)) / Simd::from_array(distance); res.copy_to_slice(angle); } } } -impl Accumulate<(f32, f32)> for VectorLos -where - LaneCount: SupportedLaneCount, -{ - #[inline] - fn accumulate( - init: (f32, f32), - angles: &[f32], - prefix: &[f32], - distances: &[f32], - bitmap: &mut Vec, - output_sector: bool, - ) -> (f32, f32) { - debug_assert!(angles.len().is_multiple_of(WIDTH), ""); - debug_assert!(prefix.len().is_multiple_of(WIDTH), ""); - debug_assert!(distances.len().is_multiple_of(WIDTH), ""); - - let (vector_angles, _) = angles.as_chunks::<{ WIDTH }>(); - let (vector_prefix, _) = prefix.as_chunks::<{ WIDTH }>(); - let (vector_dists, _) = distances.as_chunks::<{ WIDTH }>(); - - izip!(vector_angles, vector_prefix, vector_dists,).fold( - init, - |acc, (&angle_arr, &prefix_arr, &distances_arr)| { - let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); - if output_sector { - bitmap.extend(mask.to_array()); - } - - if !mask.any() { - return acc; - } - - let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); - ( - acc.0 + (dist * Simd::::splat(TAN_ONE_RAD)).reduce_sum(), - acc.1.max(dist.reduce_max()), - ) - }, - ) - } -} - /// `GenericExpr` lets a const generic expression be evaluated in its /// `CONDITION` parameter for traits that need to evaluate constant expressions /// as part of their trait bounds @@ -417,13 +371,18 @@ where GenericExpr<{ SIZE.is_multiple_of(WIDTH) }>: IsTrue, { #[inline] + #[expect(clippy::allow_attributes, reason = "conditional attributes")] + #[allow( + unused, + unused_variables, + reason = "conditional compilation causes dead parameters" + )] fn accumulate( mut init: Unroll, angles: &[f32], prefix: &[f32], distances: &[f32], bitmap: &mut Vec, - output_sector: bool, ) -> Unroll { debug_assert!( angles.len().is_multiple_of(WIDTH), @@ -457,7 +416,7 @@ where |(sum_arr, longest_arr, &angle_arr, &prefix_arr, &distances_arr)| { let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); - if output_sector { + if cfg!(any(test, feature = "ring_data")) { bitmap.extend(mask.to_array()); } @@ -469,7 +428,7 @@ where Self::max(Simd::from_array(*longest_arr), dist).copy_to_slice(longest_arr); - let acc = Simd::from(*sum_arr) + dist; + let acc = Simd::from(*sum_arr) + (dist * Simd::splat(TAN_ONE_RAD)); acc.copy_to_slice(sum_arr); }, @@ -482,9 +441,15 @@ where /// `DEFAULT_VECTOR_LENGTH` determines the CPU Kernel's default vector length based off /// the architecture that the binary is built for pub const DEFAULT_VECTOR_LENGTH: usize = const { - if cfg!(target_feature = "avx512f") { + if cfg!(any(test, feature = "ring_data")) { + 4 + } else if cfg!(target_feature = "avx512f") { 16 - } else if cfg!(target_feature = "sse") && cfg!(target_feature = "sse2") { + } else if cfg!(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" + )) { 8 } else { 4 @@ -511,7 +476,8 @@ where .fold(Simd::splat(0.0f32), |acc, &long| { VectorLos::::max(acc, Simd::from_array(long)) }) - .reduce_max(); + .reduce_max() + / 100.0; (heat, long) } @@ -524,16 +490,31 @@ mod test { #[test] fn line_of_sight_four() { - let mut vs = UnrolledLOS::<64>::new(16); - let (visibility, longest, sector) = vs.line_of_sight::>( + let mut vs = UnrolledLOS::<64>::new(16, 0.13); + let (visibility_four, longest_four, sector_four) = vs.line_of_sight::>( 0.0f32, &[ - 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, 1000, 4000, 9000, 12000, 3000, - 30000, 3000, 3000, + 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, ], - true, ); - println!("{:?} {:?} {:?}", visibility, longest, sector); + + #[cfg(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" + ))] + { + let (visibility_eight, longest_eight, sector_eight) = vs.line_of_sight::>( + 0.0f32, + &[ + 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, + ], + ); + + assert_eq!(visibility_four, visibility_eight); + assert_eq!(longest_four, longest_eight); + assert_eq!(sector_four, sector_eight); + } } #[test] @@ -543,14 +524,13 @@ mod test { target_feature = "avx2" ))] fn line_of_sight_eight() { - let mut vs = UnrolledLOS::<64>::new(16); + let mut vs = UnrolledLOS::<64>::new(16, 0.13); let (visibility, longest, sector) = vs.line_of_sight::>( 0.0f32, &[ 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, ], - true, ); println!("{:?} {:?} {:?}", visibility, longest, sector); } diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 68803dc..ac86f46 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,6 +1,7 @@ //! Total Viewshed Calculator #![feature(portable_simd)] #![feature(specialization)] +#![feature(likely_unlikely)] #![expect( incomplete_features, reason = "our usage isn't crazy and unlikely to break" @@ -33,7 +34,12 @@ mod bt { pub mod read; pub mod write; } -mod compute; +/// Handling the running of computations. +mod run { + pub mod compute; + pub mod parallel; + pub mod serial; +} mod config; mod dem; mod dump_usage; @@ -126,7 +132,7 @@ fn compute(config: &config::Compute) -> Result<()> { tracing::debug!("Created DEM: {dem:?}"); tracing::info!("Starting computations"); - let compute_config = compute::ComputeConfig { + let compute_config = run::compute::Config { observer_height: config.observer_height, scale: config.scale.unwrap_or(1.0), backend: config.backend.clone(), @@ -136,7 +142,7 @@ fn compute(config: &config::Compute) -> Result<()> { heatmap: config.heatmap, refraction: config.refraction, }; - let mut compute = crate::compute::Compute::new(compute_config, &mut dem)?; + let mut compute = run::compute::Compute::new(compute_config, &mut dem)?; compute.run()?; Ok(()) } diff --git a/crates/total-viewsheds/src/output/ascii.rs b/crates/total-viewsheds/src/output/ascii.rs index 6177314..af58dbd 100644 --- a/crates/total-viewsheds/src/output/ascii.rs +++ b/crates/total-viewsheds/src/output/ascii.rs @@ -3,8 +3,12 @@ #![cfg(test)] #![expect(clippy::indexing_slicing, reason = "This code is mostly for tests")] -pub fn make_viewshed(elevations: &[i16], viewshed_pov: geo::Coord) -> Vec { - let mut dem = crate::compute::test::make_dem(elevations); +pub fn make_viewshed( + elevations: &[i16], + viewshed_pov: geo::Coord, + backend: crate::config::Backend, +) -> Vec { + let mut dem = crate::run::compute::test::make_dem(elevations); let dem_half_width = f64::from(dem.width - 1) / 2.0f64; let viewshed_pov_metric = geo::Coord { x: viewshed_pov.x - dem_half_width, @@ -14,7 +18,7 @@ pub fn make_viewshed(elevations: &[i16], viewshed_pov: geo::Coord) -> Vec], + reserved_ring_data_size: usize, + width: u32, +) -> Result> { + let total_points = usize::try_from(width * width)?; + let mut ring_data = vec![0; total_points * reserved_ring_data_size]; + let mut start = 0; + + for line_of_sight in bitmap { + let mut is_currently_visible = true; + let mut is_previously_visible = true; + let mut closing = false; + let mut cursor = 1; + + for (index, visibility) in line_of_sight + .iter() + // Skip the first visibility because we assume the PoV is always visibile + .skip(1) + .enumerate() + { + is_currently_visible = *visibility; + let opening = is_currently_visible && !is_previously_visible; + closing = is_previously_visible && !is_currently_visible; + + if opening || closing { + ring_data[start + cursor] = u32::try_from(index + 1)?; + cursor += 1; + } + + is_previously_visible = is_currently_visible; + } + + if is_currently_visible && !closing { + ring_data[start + cursor] = width; + cursor += 1; + } + + ring_data[start] = u32::try_from(cursor)?; + start += reserved_ring_data_size; + } + + Ok(ring_data) +} + +#[expect(clippy::indexing_slicing, reason = "Just tests")] #[cfg(test)] mod test { use super::*; + use googletest::prelude::*; #[test] fn save_and_load() { @@ -185,4 +282,28 @@ mod test { } } } + + #[gtest] + fn convert_bitmap() { + fn run(bitmap: &[Vec]) -> Vec { + let reserved_ring_size = 3; + let result = convert_bitmap_to_ids(bitmap, reserved_ring_size, 4).unwrap(); + let size = bitmap.len() * reserved_ring_size; + result[0..size].to_vec() + } + + expect_eq!(run(&[vec![true, true, true, false]]), vec![2, 3, 0]); + + expect_eq!(run(&[vec![true, false, false, false]]), vec![2, 1, 0]); + + expect_eq!( + run(&[ + vec![true, true, true, false], + vec![true, false, false, false] + ]), + vec![2, 3, 0, 2, 1, 0] + ); + + expect_eq!(run(&[vec![true, true, true, true]]), vec![2, 4, 0]); + } } diff --git a/crates/total-viewsheds/src/output/viewshed.rs b/crates/total-viewsheds/src/output/viewshed.rs index 2e4b1e4..eb7d62b 100644 --- a/crates/total-viewsheds/src/output/viewshed.rs +++ b/crates/total-viewsheds/src/output/viewshed.rs @@ -52,7 +52,7 @@ impl Viewshed<'_> { pov_coord: pov_dem_coord, }; - for angle_integer in 0..crate::compute::SECTOR_STEPS { + for angle_integer in 0..crate::run::compute::SECTOR_STEPS { let angle = f32::from(angle_integer); let mut reconstructor = Reconstructor::new(&viewshed, ring_data.metadata.reserved_ring_size, angle)?; @@ -179,6 +179,7 @@ impl<'viewshed> Reconstructor<'viewshed> { kernel::elevations::Direction::Backward, ] { // We divide by 2 because every ring must have both an opening and a closing. + // dbg!(&self.sector_ring_data[self.cursor..(self.cursor + self.reserved_ring_size)]); let mut no_of_ring_values = self.read_next_value()?.div_euclid(2); if no_of_ring_values == 0 { @@ -348,7 +349,7 @@ mod test { use super::*; - const RESERVED_RING_SIZE: usize = crate::compute::Compute::ring_count_per_band(5000.0, 3); + const RESERVED_RING_SIZE: usize = crate::run::compute::Compute::ring_count_per_band(5000.0, 3); fn builder<'viewshed>(viewshed: &'viewshed Viewshed, angle: f32) -> Reconstructor<'viewshed> { Reconstructor::new(viewshed, RESERVED_RING_SIZE, angle).unwrap() @@ -363,7 +364,7 @@ mod test { } fn make_visible_polygon_for(setup: &VisiblePolygonFor) -> Vec { - let dem = crate::compute::test::make_dem(&kernel::tests::dems::single_peak_dem()); + let dem = crate::run::compute::test::make_dem(&kernel::tests::dems::single_peak_dem()); let viewshed = Viewshed { dem: &dem, pov_coord: crate::dem::Coordinate(setup.pov), @@ -490,37 +491,43 @@ mod test { } } - #[test] - fn viewshed_in_hole() { + fn viewshed_in_hole(backend: &crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 5.0, y: 5.0 }, + backend.clone(), ); - assert_viewshed( - &viewshed, - &[ - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████▀ â–„ ▀███████████", - "████████ ▀█▀ ███████████", - "█████████▄▄▄████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - "████████████████████████", - ], - ); + let expected = &[ + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████▀ â–„ ▀███████████", + "████████ ▀█▀ ███████████", + "█████████▄▄▄████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + "████████████████████████", + ]; + + match backend { + crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { + assert_viewshed(&viewshed, expected) + } + crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { + panic!("We're not testing these.") + } + } } - #[test] - fn viewshed_on_summit() { + fn viewshed_on_summit(backend: crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 6.0, y: 6.0 }, + backend, ); assert_viewshed( @@ -542,29 +549,69 @@ mod test { ); } - #[test] - fn viewshed_near_summit() { + fn viewshed_near_summit(backend: &crate::config::Backend) { let viewshed = crate::output::ascii::make_viewshed( &kernel::tests::dems::bigger_dem(), geo::Coord { x: 5.0, y: 6.0 }, + backend.clone(), ); - assert_viewshed( - &viewshed, - &[ - "████████████████████████", - "████████████████████████", - "█████▀▀ â–„â–„â–„â–„â–„ ▀▀████████", - "███▀ ▄█████████ ▄███████", - "██▀ █████████▀▄█████████", - "██ ████████▀ ███████████", - "██ ████████▀ ███████████", - "██ ▀████████▄▀██████████", - "███ ▀█████████▄▀████████", - "████▄ ▀▀█████▀▀ ▄███████", - "███████▄▄▄▄▄▄▄██████████", - "████████████████████████", - ], - ); + let expected = &[ + "████████████████████████", + "████████████████████████", + "█████▀▀ â–„â–„â–„â–„â–„ ▀▀████████", + "███▀ ▄█████████ ▄███████", + "██▀ █████████▀▄█████████", + "██ ████████▀ ███████████", + "██ ████████▀ ███████████", + "██ ▀████████▄▀██████████", + "███ ▀█████████▄▀████████", + "████▄ ▀▀█████▀▀ ▄███████", + "███████▄▄▄▄▄▄▄██████████", + "████████████████████████", + ]; + + match backend { + crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { + assert_viewshed(&viewshed, expected) + } + crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { + panic!("We're not testing these.") + } + } + } + + mod gpu { + #[test] + fn viewshed_in_hole() { + super::viewshed_in_hole(&crate::config::Backend::VulkanCPU); + } + + #[test] + fn viewshed_on_summit() { + super::viewshed_on_summit(crate::config::Backend::VulkanCPU); + } + + #[test] + fn viewshed_near_summit() { + super::viewshed_near_summit(&crate::config::Backend::VulkanCPU); + } + } + + mod cpu { + #[test] + fn viewshed_in_hole() { + super::viewshed_in_hole(&crate::config::Backend::CPU); + } + + #[test] + fn viewshed_on_summit() { + super::viewshed_on_summit(crate::config::Backend::CPU); + } + + #[test] + fn viewshed_near_summit() { + super::viewshed_near_summit(&crate::config::Backend::CPU); + } } } diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs new file mode 100644 index 0000000..e287a1f --- /dev/null +++ b/crates/total-viewsheds/src/run/compute.rs @@ -0,0 +1,398 @@ +//! The main entrypoint for running computations. + +use color_eyre::Result; + +/// The number of angles we rotate through. The other half are done via "backwards" lines of sight. +pub const SECTOR_STEPS: u16 = 180; + +/// Handles all the computations. +pub struct Compute<'compute> { + /// User configuration. + pub config: Config, + /// Vulkan GPU manager + pub vulkan: Option, + /// Storage interface for conputed ring (viewshed) data. + storage: Option, + /// The Digital Elevation Model that we're computing. + pub dem: &'compute mut crate::dem::DEM, + /// The constants for each kernel computation. + pub constants: kernel::constants::Constants, + /// The amount of reserved memory for ring data. + pub total_reserved_rings: usize, + /// Keeps track of the cumulative surfaces from every angle. + pub total_surfaces: Vec, + /// Keeps track of the ring (viewshed) data. + pub ring_data: Vec>, + /// Keeps track of the longest lines of sight. + pub longest_lines: Vec, +} + +/// Configuration for computing. +pub struct Config { + /// The height of the observer that views viewsheds. + pub observer_height: f32, + /// The size of each elevation point in meters. + pub scale: f32, + /// Where to run the kernel computations + pub backend: crate::config::Backend, + /// What to compute. + pub process: Vec, + /// Output directory + pub output_directory: Option, + /// The number of reserved rings per km. + pub rings_per_km: f32, + /// How to normalise the heatmap data. + pub heatmap: crate::config::HeatmapNormalisation, + /// Refractoin coefficient + pub refraction: f32, +} + +impl<'compute> Compute<'compute> { + /// Instantiate. + pub fn new(config: Config, dem: &'compute mut crate::dem::DEM) -> Result { + let total_bands = dem.computable_points_count * 2; + + let rings_per_band = if Self::is_process_viewsheds(&config.process) { + Self::ring_count_per_band(config.rings_per_km, dem.max_los_as_points * dem.scale_u32()) + } else { + 1 + }; + let total_reserved_rings = if Self::is_process_viewsheds(&config.process) { + usize::try_from(total_bands)? * rings_per_band + } else { + 1 + }; + + let storage = if Self::is_process_viewsheds(&config.process) { + match &config.output_directory { + Some(output_directory) => { + Some(crate::output::ring_data::Storage::new(output_directory)?) + } + None => None, + } + } else { + None + }; + + let constants = kernel::constants::Constants { + total_bands, + max_los_as_points: dem.max_los_as_points, + dem_width: dem.width, + tvs_width: dem.tvs_width, + observer_height: config.observer_height, + reserved_rings_per_band: u32::try_from(rings_per_band)?, + process: Self::bitmask_flags_for_kernel(&config.process), + scale: config.scale, + refraction: config.refraction, + ..Default::default() + }; + + // We only need the "chocolate box" section of rotations to do visibility calculations. + let rotations_size = kernel::chocolate_box::size(dem.width, dem.tvs_width); + + let vulkan = if matches!(config.backend, crate::config::Backend::Vulkan) { + let elevations = dem.elevations.clone(); + dem.elevations = Vec::new(); // Free up some RAM. + Some(crate::vulkan::Vulkan::new( + constants, + elevations, + usize::try_from(rotations_size)?, + total_reserved_rings, + )?) + } else { + None + }; + + Ok(Self { + config, + vulkan, + storage, + dem, + constants, + total_reserved_rings, + total_surfaces: Vec::default(), + ring_data: Vec::default(), + longest_lines: Vec::default(), + }) + } + + #[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + clippy::cast_possible_truncation, + clippy::cast_sign_loss, + reason = "Accuracy isn't needed, we're just calculating a value to help find minimum RAM usage." + )] + /// Calculate the expected number of rings per band of sight. + pub const fn ring_count_per_band(rings_per_km: f32, max_line_of_sight: u32) -> usize { + let meters_per_km = 1000.0; + let band_length_in_km = (max_line_of_sight as f32) / meters_per_km; + (band_length_in_km * rings_per_km) as usize + } + + /// Are we computing everything? + fn is_process_everything(process: &[crate::config::Process]) -> bool { + process.contains(&crate::config::Process::All) + } + + /// Are we computing total surface areas? + pub fn is_process_surfaces(process: &[crate::config::Process]) -> bool { + Self::is_process_everything(process) + || process.contains(&crate::config::Process::TotalSurfaces) + } + + /// Are we computing viewsheds? + pub fn is_process_viewsheds(process: &[crate::config::Process]) -> bool { + Self::is_process_everything(process) || process.contains(&crate::config::Process::Viewsheds) + } + + /// Are we computing total surface areas? + pub fn is_process_longest_lines(process: &[crate::config::Process]) -> bool { + Self::is_process_everything(process) + || process.contains(&crate::config::Process::LongestLines) + } + + /// Do all computations. + pub fn run(&mut self) -> Result<()> { + if Self::is_process_viewsheds(&self.config.process) + && self.config.output_directory.is_some() + { + self.save_ring_metadata()?; + } + + if matches!(self.config.backend, crate::config::Backend::CPU) { + self.run_parallel()?; + } else { + self.run_sequential()?; + } + + Ok(()) + } + + /// The metadata needed to reconstruct viewsheds based on the DEM and reserved rings. + pub fn metadata(&self) -> Result { + Ok(crate::output::ring_data::MetaData { + width: self.dem.width, + scale: self.dem.scale, + max_line_of_sight: self.dem.max_los_as_points * self.dem.scale_u32(), + reserved_ring_size: usize::try_from(self.constants.reserved_rings_per_band)?, + centre: self.dem.centre, + }) + } + + /// Save band deltas to cache. + pub fn save_sector_ring_data(&self, sector: u16, ring_data: &[u32]) -> Result<()> { + let Some(storage) = self.storage.as_ref() else { + color_eyre::eyre::bail!("Tried to save sector ring data without any active storage."); + }; + + storage.save_sector(sector, ring_data)?; + Ok(()) + } + + /// Save the metadata for the ring data (aka viewsheds). + pub fn save_ring_metadata(&self) -> Result<()> { + let Some(storage) = self.storage.as_ref() else { + color_eyre::eyre::bail!("Tried to save ring metadata without any active storage."); + }; + + storage.save_metadata(&self.metadata()?)?; + Ok(()) + } + + /// Render a heatmap and `.bt` file of the total surface areas for each point within the computable area of the + /// DEM. + pub fn render_total_surfaces(&self) -> Result<()> { + let Some(output_dir) = &self.config.output_directory else { + return Ok(()); + }; + + crate::output::png::save( + &self.total_surfaces, + self.dem.tvs_width, + self.dem.tvs_width, + output_dir.join("total_surfaces.png"), + self.config.heatmap, + )?; + + crate::output::bt::save( + self.dem, + &self.total_surfaces, + &output_dir.join("total_surfaces.bt"), + )?; + + Ok(()) + } + + /// Render a heatmap and `.bt` of the longest lines of sight for each point within the computable area of the + /// DEM. + pub fn render_longest_lines(&self) -> Result<()> { + let Some(output_dir) = &self.config.output_directory else { + return Ok(()); + }; + + let distances = self + .longest_lines + .iter() + .map(|los| { + #[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "Distances always fit in u32" + )] + { + los.distance() as f32 + } + }) + .collect::>(); + crate::output::png::save( + &distances, + self.dem.tvs_width, + self.dem.tvs_width, + output_dir.join("longest_lines.png"), + self.config.heatmap, + )?; + + let packed_lines = self + .longest_lines + .iter() + .map(crate::los_pack::LineOfSightPacked::as_f32) + .collect::>(); + crate::output::bt::save( + self.dem, + &packed_lines, + &output_dir.join("longest_lines.bt"), + )?; + + Ok(()) + } +} + +#[cfg(test)] +pub mod test { + use super::*; + use googletest::prelude::*; + + pub fn make_dem(elevations: &[i16]) -> crate::dem::DEM { + let width = elevations.len().isqrt() as u32; + let mut dem = crate::dem::DEM::new( + crate::projection::LatLonCoord((33.33, 33.33).into()), + width, + 1.0, + width / 3, + ) + .unwrap(); + dem.elevations = elevations.into(); + dem + } + + pub fn compute(dem: &mut crate::dem::DEM, backend: crate::config::Backend) -> Compute<'_> { + let config = Config { + observer_height: 0.8, + scale: 1.0, + backend, + process: vec![ + crate::config::Process::TotalSurfaces, + crate::config::Process::Viewsheds, + crate::config::Process::LongestLines, + ], + output_directory: None, + rings_per_km: 5000.0, + heatmap: crate::config::HeatmapNormalisation::UnitScale, + refraction: 0.13, + }; + + let mut compute = Compute::new(config, dem).unwrap(); + compute.run().unwrap(); + compute + } + + fn total_surfaces(backend: crate::config::Backend) { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute = compute(&mut dem, backend); + #[rustfmt::skip] + assert_eq!( + compute.total_surfaces, + [ + 0.0, 0.0, 0.0, 0.0, + 0.0, 568.6271, 2461.8464, 0.0, + 0.0, 4290.639, 5686.299, 0.0, + 0.0, 0.0, 0.0, 0.0 + ] + ); + } + + #[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "Distances always fit in u32" + )] + fn longest_lines(backend: crate::config::Backend) { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute = compute(&mut dem, backend); + + #[rustfmt::skip] + expect_eq!( + compute.longest_lines.iter() + .map(|los| los.distance() as f32) + .collect::>(), + [ + 0.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 4.0, 0.0, + 0.0, 4.0, 4.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ] + ); + + #[rustfmt::skip] + expect_eq!( + compute.longest_lines.iter() + .map(|los| los.angle().unwrap()) + .collect::>(), + [ + 0, 0, 0, 0, + 0, 0, 12, 0, + 0, 180, 0, 0, + 0, 0, 0, 0 + ] + ); + } + + mod gpu { + use googletest::prelude::*; + + #[test] + fn total_surfaces() { + super::total_surfaces(crate::config::Backend::VulkanCPU); + } + + #[gtest] + fn longest_lines() { + super::longest_lines(crate::config::Backend::VulkanCPU); + } + } + + mod cpu { + use googletest::prelude::*; + + #[test] + #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] + fn total_surfaces() { + super::total_surfaces(crate::config::Backend::CPU); + } + + #[gtest] + #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] + fn longest_lines() { + super::longest_lines(crate::config::Backend::CPU); + } + + #[gtest] + #[ignore = "TODO@ryan: Enable once you've added refraction"] + fn refraction_affects_visibility() { + // Set your refraction constant to this so that the effect is so dramatic that it shows + // up in our tiny test DEMS. + // let refraction = -kernel::kernel::EARTH_DIAMETER; + } + } +} diff --git a/crates/total-viewsheds/src/run/parallel.rs b/crates/total-viewsheds/src/run/parallel.rs new file mode 100644 index 0000000..be98b83 --- /dev/null +++ b/crates/total-viewsheds/src/run/parallel.rs @@ -0,0 +1,175 @@ +//! For kernels that run each angle in parallel. + +use color_eyre::{ + eyre::{eyre, ContextCompat as _}, + Result, +}; +use rayon::iter::{IntoParallelIterator as _, ParallelIterator as _}; + +impl super::compute::Compute<'_> { + #[expect( + clippy::panic_in_result_fn, + reason = "It's too complicated and of no benefit to get the errors from the threads" + )] + /// `run_parallel` runs the CPU kernel in parallel + pub fn run_parallel(&mut self) -> Result<()> { + let max_los = usize::try_from(self.dem.max_los_as_points)?; + let tvs_size = max_los * max_los; + let is_process_ring_data = Self::is_process_viewsheds(&self.config.process); + let reserved_ring_data_size = if is_process_ring_data { + usize::try_from(self.constants.reserved_rings_per_band)? + } else { + 0 + }; + + let mut surfaces = vec![0.0f32; tvs_size]; + let mut longest = vec![(0u16, 0.0f32); tvs_size]; + let mut ring_data = vec![vec![0u32; tvs_size * reserved_ring_data_size]; 360]; + + let pool = rayon::ThreadPoolBuilder::new().num_threads(8).build()?; + + { + let accumulating = AccumulatingData { + constants: self.constants, + surfaces: std::sync::Mutex::new(&mut surfaces), + longest: std::sync::Mutex::new(&mut longest), + visibility: std::sync::Mutex::new(&mut ring_data), + }; + + let elevations = &self.dem.elevations; + let refraction = self.config.refraction; + + pool.install(move || { + (0u16..360u16) + .into_par_iter() + .map(|angle| { + let start = std::time::Instant::now(); + tracing::info!("starting angle: {angle}"); + + let output = + crate::cpu::kernel(elevations, max_los, f32::from(angle), refraction); + tracing::info!("finished angle in {:?}", start.elapsed()); + (angle, output) + }) + .for_each(|(angle, output)| { + let result = accumulating.handle_parallel_per_angle_output(angle, output); + #[expect( + clippy::panic, + reason = "No point accumulating errors and returning them" + )] + if let Err(error) = result { + panic!("{error:?}"); + } + }); + }); + }; + + self.total_surfaces = surfaces; + let packed: Result> = longest + .iter() + .map(|&(angle, distance): &(u16, f32)| { + #[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_sign_loss, + reason = "distances always fit in u32" + )] + crate::los_pack::LineOfSightPacked::new(distance as u32, angle) + }) + .collect(); + self.longest_lines = packed?; + self.ring_data = ring_data; + + self.render_total_surfaces()?; + self.render_longest_lines()?; + + if Self::is_process_viewsheds(&self.config.process) + && self.config.output_directory.is_some() + { + for sector in 0..crate::run::compute::SECTOR_STEPS { + self.save_sector_ring_data( + sector, + self.ring_data + .get(usize::from(sector)) + .context("Sector not found in final ring data")?, + )?; + } + } + + Ok(()) + } +} + +/// A struct to accumulate data as it comes from the angle compute threads. +struct AccumulatingData<'accumulating> { + /// Various common kernel constants. + constants: kernel::constants::Constants, + /// Total surfaces. + surfaces: std::sync::Mutex<&'accumulating mut Vec>, + /// Longest lines. + longest: std::sync::Mutex<&'accumulating mut Vec<(u16, f32)>>, + /// Ring data to reconstruct individual viewsheds. + visibility: std::sync::Mutex<&'accumulating mut Vec>>, +} + +impl AccumulatingData<'_> { + /// Handle output from angle threads. + fn handle_parallel_per_angle_output( + &self, + angle: u16, + output: crate::cpu::kernel::OutputData, + ) -> Result<()> { + self.surfaces + .lock() + .map_err(|err| eyre!("{err:?}"))? + .iter_mut() + .zip(output.surfaces) + .for_each(|(to, from)| { + *to += from; + }); + + self.longest + .lock() + .map_err(|err| eyre!("{err:?}"))? + .iter_mut() + .zip(output.longest) + .for_each(|(to, from)| { + if from > to.1 { + *to = (angle, from); + } + }); + + if self.constants.is_ring_data() { + self.convert_bitmap_to_ids(&output.visibility, angle)?; + } + + Ok(()) + } + + /// Convert CPU visibilty bitmap to GPU sector ring data. + fn convert_bitmap_to_ids(&self, bitmap: &[Vec], angle: u16) -> Result<()> { + let max_los = self.constants.max_los_as_points; + let tvs_size = max_los * max_los; + let sector = usize::from(angle.rem_euclid(super::compute::SECTOR_STEPS)); + let reserved_ring_space = usize::try_from(self.constants.reserved_rings_per_band)?; + let reserved_per_tvs = reserved_ring_space * usize::try_from(tvs_size)?; + let angle_ring_data = + crate::output::ring_data::convert_bitmap_to_ids(bitmap, reserved_ring_space, max_los)?; + + let mut visibility = self.visibility.lock().map_err(|err| eyre!("{err:?}"))?; + let item = visibility + .get_mut(sector) + .context("Couldn't find sector slice to store visibilty")?; + + if angle < 180 { + // Forward lines of sight + item.splice(0..reserved_per_tvs, angle_ring_data); + } else { + // Backward lines of sight + item.splice(reserved_per_tvs.., angle_ring_data); + } + drop(visibility); + + Ok(()) + } +} diff --git a/crates/total-viewsheds/src/run/serial.rs b/crates/total-viewsheds/src/run/serial.rs new file mode 100644 index 0000000..a07027c --- /dev/null +++ b/crates/total-viewsheds/src/run/serial.rs @@ -0,0 +1,206 @@ +//! For kernels that run each angle in serial. + +use color_eyre::Result; + +impl super::compute::Compute<'_> { + /// `run_sequential` runs a sequential GPU or CPU kernel + pub fn run_sequential(&mut self) -> Result<()> { + let mut sector_surfaces = if Self::is_process_surfaces(&self.config.process) { + let blank = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; + self.total_surfaces.clone_from(&blank); + blank + } else { + Vec::new() + }; + + let mut longest_lines = if Self::is_process_longest_lines(&self.config.process) { + self.longest_lines = vec![ + crate::los_pack::LineOfSightPacked::default(); + usize::try_from(self.dem.computable_points_count)? + ]; + vec![0.0; usize::try_from(self.dem.computable_points_count)?] + } else { + Vec::new() + }; + + for angle in 0..super::compute::SECTOR_STEPS { + let mut sector_ring_data = vec![0; self.total_reserved_rings]; + let trig = kernel::rotation::Rotator::calculate_trig(f32::from(angle)); + self.constants.sine = trig.0; + self.constants.cosine = trig.1; + self.compute_sector( + angle, + &mut sector_surfaces, + &mut sector_ring_data, + &mut longest_lines, + )?; + + if Self::is_process_viewsheds(&self.config.process) { + match &self.config.output_directory { + Some(_) => { + self.save_sector_ring_data(angle, §or_ring_data)?; + } + None => self.ring_data.push(sector_ring_data.clone()), + } + } + + if Self::is_process_surfaces(&self.config.process) { + self.add_sector_surfaces_to_running_total(§or_surfaces); + if angle == super::compute::SECTOR_STEPS - 1 { + self.render_total_surfaces()?; + } + } + + if Self::is_process_longest_lines(&self.config.process) { + self.increment_longest_lines(&longest_lines, angle)?; + if angle == super::compute::SECTOR_STEPS - 1 { + self.render_longest_lines()?; + } + } + } + + Ok(()) + } + + /// Create a GPU-friendly bitmask of flags to use in the kernel. + pub fn bitmask_flags_for_kernel(processes: &[crate::config::Process]) -> u32 { + use kernel::constants as kernel; + let mut flags = 0u32; + for process in processes { + match process { + crate::config::Process::All => { + flags |= kernel::Flag::TotalSurfaces.bit() | kernel::Flag::RingData.bit(); + } + crate::config::Process::TotalSurfaces => { + flags |= kernel::Flag::TotalSurfaces.bit(); + } + crate::config::Process::Viewsheds => flags |= kernel::Flag::RingData.bit(), + crate::config::Process::LongestLines => { + flags |= kernel::Flag::LongestLines.bit(); + } + } + } + flags + } + + /// Compute a single sector. + pub fn compute_sector( + &mut self, + angle: u16, + cumulative_surfaces: &mut [f32], + ring_data: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + tracing::info!("Running kernel for {angle}°"); + match self.config.backend { + crate::config::Backend::VulkanCPU => { + self.compute_sector_cpu_vulkan(cumulative_surfaces, ring_data, longest_lines)?; + } + crate::config::Backend::Vulkan => { + self.compute_sector_vulkan(cumulative_surfaces, ring_data, longest_lines)?; + } + #[expect(clippy::unimplemented, reason = "CPU kernel is only multithreaded")] + crate::config::Backend::CPU => { + unimplemented!(); + } + + #[expect(clippy::unimplemented, reason = "Coming Soon!")] + crate::config::Backend::Cuda => unimplemented!(), + } + + Ok(()) + } + + /// Do a whole sector calculation on the GPU using Vulkan. + fn compute_sector_vulkan( + &mut self, + cumulative_surfaces: &mut [f32], + rings: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + let Some(gpu) = self.vulkan.as_mut() else { + color_eyre::eyre::bail!("`self.gpu` not instantiated yet."); + }; + + let (surfaces_data, rings_data, longest_lines_data) = gpu.run(self.constants)?; + if Self::is_process_surfaces(&self.config.process) { + cumulative_surfaces.copy_from_slice(surfaces_data.as_slice()); + } + if Self::is_process_viewsheds(&self.config.process) { + rings.copy_from_slice(rings_data.as_slice()); + } + if Self::is_process_longest_lines(&self.config.process) { + longest_lines.copy_from_slice(longest_lines_data.as_slice()); + } + Ok(()) + } + + /// Do a whole sector calculation on the CPU. + fn compute_sector_cpu_vulkan( + &self, + cumulative_surfaces: &mut [f32], + ring_data: &mut [u32], + longest_lines: &mut [f32], + ) -> Result<()> { + let chocolate_box_size = kernel::chocolate_box::size(self.dem.width, self.dem.tvs_width); + let mut rotated_elevations = vec![0.0; usize::try_from(chocolate_box_size)?]; + for chocolate_id in 0..(self.dem.computable_points_count * 2) { + let chocolate = kernel::chocolate_box::Rotator::new_from_cached_trig( + chocolate_id, + self.dem.width, + self.dem.tvs_width, + self.constants.sine, + self.constants.cosine, + ); + // Note that we _anti_ rotate because anti-rotating the DEM grid has the effect of normally + // rotating the line of sight. Which is just more intuitive to work with when debugging. + chocolate + .anti_rotate_value_nearest_neighbour(&self.dem.elevations, &mut rotated_elevations); + } + + let mut buffers = kernel::kernel::Buffers { + constants: &self.constants, + elevations: &rotated_elevations, + cumulative_surfaces, + longest_lines, + ring_data, + }; + + for tvs_id in 0..self.constants.total_bands { + kernel::kernel::Kernel::run(tvs_id, &mut buffers); + } + + Ok(()) + } + + /// Add the accumulated total surface areas for the current sector to the running total. + pub fn add_sector_surfaces_to_running_total(&mut self, cumulative_surfaces: &[f32]) { + for (left, right) in self + .total_surfaces + .iter_mut() + .zip(cumulative_surfaces.iter()) + { + *left += right; + } + } + + /// Check to see if this angle increases the current longest line of sight for the point. + pub fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { + for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { + #[expect( + clippy::as_conversions, + clippy::cast_sign_loss, + clippy::cast_possible_truncation, + reason = "Distances always fit in u32" + )] + let current = right.abs() as u32; + if current > left.distance() { + let angle = if *right >= 0.0 { sector } else { sector + 180 }; + let packed = crate::los_pack::LineOfSightPacked::new(current, angle)?; + *left = packed; + } + } + + Ok(()) + } +} From 855221f212f79628f7065497698ee5c8f3332f22 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sat, 3 Jan 2026 16:50:30 -0800 Subject: [PATCH 07/27] fix: avx512 build issues --- crates/total-viewsheds/src/cpu/vector.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs index e5520c0..9691a26 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -290,7 +290,7 @@ impl PrefixMax for VectorLos<16> { } } - let mut local_acc = f32x16::splat(highest); + let mut local_acc = f32x16::splat(-2000.0f32); // accumulate the prefix maxes for blocks, re-computing all prefix maxes // to include the accumulated value From 736c6f65dccfe33ba3900445028f7a416b125348 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 4 Jan 2026 00:58:13 -0800 Subject: [PATCH 08/27] fix: flakey longest line tests, add thread count command line flag --- crates/total-viewsheds/src/config.rs | 4 ++ crates/total-viewsheds/src/cpu/vector.rs | 44 ++++++---------------- crates/total-viewsheds/src/main.rs | 1 + crates/total-viewsheds/src/run/compute.rs | 30 ++++++++++++++- crates/total-viewsheds/src/run/parallel.rs | 38 +++++++++++-------- 5 files changed, 69 insertions(+), 48 deletions(-) diff --git a/crates/total-viewsheds/src/config.rs b/crates/total-viewsheds/src/config.rs index fcf63ca..9c7cd49 100644 --- a/crates/total-viewsheds/src/config.rs +++ b/crates/total-viewsheds/src/config.rs @@ -104,6 +104,10 @@ pub struct Compute { default_value = "0.13" )] pub refraction: f32, + + /// Thread count used for CPU parallelism + #[arg(long, value_name = "thread count", default_value = "8")] + pub thread_count: usize, } #[derive(clap::Parser, Debug)] diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs index 9691a26..58a602e 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -489,7 +489,12 @@ mod test { use crate::cpu::vector::VectorLos; #[test] - fn line_of_sight_four() { + #[cfg(all( + target_feature = "sse", + target_feature = "avx", + target_feature = "avx2" + ))] + fn line_of_sightsame() { let mut vs = UnrolledLOS::<64>::new(16, 0.13); let (visibility_four, longest_four, sector_four) = vs.line_of_sight::>( 0.0f32, @@ -498,40 +503,15 @@ mod test { ], ); - #[cfg(all( - target_feature = "sse", - target_feature = "avx", - target_feature = "avx2" - ))] - { - let (visibility_eight, longest_eight, sector_eight) = vs.line_of_sight::>( - 0.0f32, - &[ - 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, - ], - ); - - assert_eq!(visibility_four, visibility_eight); - assert_eq!(longest_four, longest_eight); - assert_eq!(sector_four, sector_eight); - } - } - - #[test] - #[cfg(all( - target_feature = "sse", - target_feature = "avx", - target_feature = "avx2" - ))] - fn line_of_sight_eight() { - let mut vs = UnrolledLOS::<64>::new(16, 0.13); - let (visibility, longest, sector) = vs.line_of_sight::>( + let (visibility_eight, longest_eight, sector_eight) = vs.line_of_sight::>( 0.0f32, &[ - 1000, 4000, 9000, 12000, 3000, 30000, 3000, 3000, 1000, 4000, 9000, 12000, 3000, - 30000, 3000, 3000, + 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, ], ); - println!("{:?} {:?} {:?}", visibility, longest, sector); + + assert_eq!(visibility_four, visibility_eight); + assert_eq!(longest_four, longest_eight); + assert_eq!(sector_four, sector_eight); } } diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index ac86f46..7154da0 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -141,6 +141,7 @@ fn compute(config: &config::Compute) -> Result<()> { rings_per_km: config.rings_per_km, heatmap: config.heatmap, refraction: config.refraction, + thread_count: config.thread_count, }; let mut compute = run::compute::Compute::new(compute_config, &mut dem)?; compute.run()?; diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index e287a1f..09d9a5f 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -45,6 +45,8 @@ pub struct Config { pub heatmap: crate::config::HeatmapNormalisation, /// Refractoin coefficient pub refraction: f32, + /// Number of threads for computation + pub thread_count: usize, } impl<'compute> Compute<'compute> { @@ -300,6 +302,7 @@ pub mod test { rings_per_km: 5000.0, heatmap: crate::config::HeatmapNormalisation::UnitScale, refraction: 0.13, + thread_count: 8, }; let mut compute = Compute::new(config, dem).unwrap(); @@ -358,7 +361,7 @@ pub mod test { ); } - mod gpu { + mod vulkan_cpu { use googletest::prelude::*; #[test] @@ -384,6 +387,31 @@ pub mod test { #[gtest] #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] fn longest_lines() { + // + // Tom's angles + // [ + // 0, 0, 0, 0, + // 0, 0, 12, 0, + // 0, 180, 0, 0, + // 0, 0, 0, 0 + // ] + // + // Ryan's angles: + // [ + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 46, 0, 0, + // 0, 150, 195, 0, + // ] + // + // rberger CPU longest distance: + // + // [ + // 0.0, 0.0, 0.0, 0.0, + // 0.0, 1.0, 4.0, 4.0, + // 0.0, 4.0, 4.0, 4.0, + // 0.0, 4.0, 4.0, 4.0, + // ], super::longest_lines(crate::config::Backend::CPU); } diff --git a/crates/total-viewsheds/src/run/parallel.rs b/crates/total-viewsheds/src/run/parallel.rs index be98b83..a4a667e 100644 --- a/crates/total-viewsheds/src/run/parallel.rs +++ b/crates/total-viewsheds/src/run/parallel.rs @@ -1,5 +1,6 @@ //! For kernels that run each angle in parallel. +use crate::los_pack::LineOfSightPacked; use color_eyre::{ eyre::{eyre, ContextCompat as _}, Result, @@ -23,10 +24,12 @@ impl super::compute::Compute<'_> { }; let mut surfaces = vec![0.0f32; tvs_size]; - let mut longest = vec![(0u16, 0.0f32); tvs_size]; + let mut longest = vec![(0u16, 0u32); tvs_size]; let mut ring_data = vec![vec![0u32; tvs_size * reserved_ring_data_size]; 360]; - let pool = rayon::ThreadPoolBuilder::new().num_threads(8).build()?; + let pool = rayon::ThreadPoolBuilder::new() + .num_threads(self.config.thread_count) + .build()?; { let accumulating = AccumulatingData { @@ -65,17 +68,9 @@ impl super::compute::Compute<'_> { }; self.total_surfaces = surfaces; - let packed: Result> = longest + let packed: Result> = longest .iter() - .map(|&(angle, distance): &(u16, f32)| { - #[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - clippy::cast_sign_loss, - reason = "distances always fit in u32" - )] - crate::los_pack::LineOfSightPacked::new(distance as u32, angle) - }) + .map(|&(angle, distance): &(u16, u32)| LineOfSightPacked::new(distance, angle)) .collect(); self.longest_lines = packed?; self.ring_data = ring_data; @@ -107,7 +102,7 @@ struct AccumulatingData<'accumulating> { /// Total surfaces. surfaces: std::sync::Mutex<&'accumulating mut Vec>, /// Longest lines. - longest: std::sync::Mutex<&'accumulating mut Vec<(u16, f32)>>, + longest: std::sync::Mutex<&'accumulating mut Vec<(u16, u32)>>, /// Ring data to reconstruct individual viewsheds. visibility: std::sync::Mutex<&'accumulating mut Vec>>, } @@ -134,8 +129,21 @@ impl AccumulatingData<'_> { .iter_mut() .zip(output.longest) .for_each(|(to, from)| { - if from > to.1 { - *to = (angle, from); + #[expect( + clippy::as_conversions, + clippy::cast_possible_truncation, + clippy::cast_sign_loss, + reason = "distances always fit in u32" + )] + let converted = from as u32; + if converted > to.1 { + *to = (angle, converted); + return; + } + + // let the smallest angle win due to keep consistent in a multithreaded environment + if angle < to.0 && converted != 0 && converted == to.1 { + *to = (angle, converted); } }); From 8476cb0fe42fdd9aa4fba8b88e061de4382070e7 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 4 Jan 2026 18:30:16 -0800 Subject: [PATCH 09/27] feat: add better rasterization of valid TVS Because the TVS is only valid within a certain distance from the center, this adds a better distance calculation which also helps with rasterization --- crates/total-viewsheds/src/cpu/kernel.rs | 10 +++++----- crates/total-viewsheds/src/run/compute.rs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs index e39f6c5..c74e156 100644 --- a/crates/total-viewsheds/src/cpu/kernel.rs +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -23,15 +23,15 @@ pub struct OutputData { reason = "i32 is constructed from (i32, i32) converting back should succeed" )] /// `dem_to_pov` turns the `dem_id` to the `pov_id` so that the result can be stored in a heatmap -const fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { +fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { let dem_x = (dem_id / width as i32) - max_los as i32; let dem_y = (dem_id % width as i32) - max_los as i32; - let radius = max_los as i32 / 2i32; - let circ_x = dem_x - radius; - let circ_y = dem_y - radius; + let radius = (max_los - 1) as f32 / 2.0; + let circ_x = dem_x as f32 - radius; + let circ_y = dem_y as f32 - radius; - let dist = (circ_x.pow(2) + circ_y.pow(2)).isqrt(); + let dist = circ_x.hypot(circ_y); if dist < radius { dem_x * (max_los as i32) + dem_y } else { diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index 09d9a5f..ef26c6d 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -401,7 +401,7 @@ pub mod test { // 0, 0, 0, 0, // 0, 0, 0, 0, // 0, 46, 0, 0, - // 0, 150, 195, 0, + // 0, 0, 0, 0 // ] // // rberger CPU longest distance: From 21ecedec51503dd817ee48dd65f18e24c680bb04 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 4 Jan 2026 21:11:40 -0800 Subject: [PATCH 10/27] feat: add `highest` carry-through back in removing unnecessary max instruction --- crates/total-viewsheds/src/cpu/los.rs | 8 ++++---- crates/total-viewsheds/src/cpu/vector.rs | 13 ++++++------- scripts/apt_init.sh | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/los.rs b/crates/total-viewsheds/src/cpu/los.rs index b7ebae1..889484d 100644 --- a/crates/total-viewsheds/src/cpu/los.rs +++ b/crates/total-viewsheds/src/cpu/los.rs @@ -44,7 +44,7 @@ pub trait Accumulate> { /// `PrefixMax` calculates the prefix maximum of the given angles pub trait PrefixMax { /// `prefix_max` calculates the prefix max of the - fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]); + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]); } /// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters @@ -154,12 +154,12 @@ where &mut angles[1..], ); - LOS::prefix_max(&angles[..UNROLL], &mut prefix_max); + LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); let new_acc = LOS::accumulate(acc, &angles[1..], &prefix_max, distances, &mut output); - angles[0] = angles[UNROLL].max(prefix_max[UNROLL - 1]); + angles[0] = angles[UNROLL]; new_acc }, ); @@ -172,7 +172,7 @@ where &mut angles[1..], ); - LOS::prefix_max(&angles[..UNROLL], &mut prefix_max); + LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); let new_acc = LOS::accumulate(los, &angles[1..], &prefix_max, rest_distances, &mut output); diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs index 58a602e..e92719f 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -86,7 +86,7 @@ impl VectorGreater<4> for VectorLos<4> { impl PrefixMax for VectorLos<4> { #[inline] - fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { let (vector_angles, _) = angles_in.as_chunks::<4>(); let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); @@ -106,7 +106,7 @@ impl PrefixMax for VectorLos<4> { v_prefix_max.copy_to_slice(prefix); } - let mut local_acc = Simd::splat(-2000.0); + let mut local_acc = Simd::splat(highest); // accumulate the prefix maxes for blocks, re-computing all prefix maxes // to include the accumulated value @@ -138,7 +138,7 @@ impl VectorMax<8> for VectorLos<8> { ))] impl PrefixMax for VectorLos<8> { #[inline] - fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { use std::arch::x86_64::{ _mm256_blend_ps, _mm256_castps_si256, _mm256_castsi256_ps, _mm256_slli_si256, _mm_max_ps, @@ -180,7 +180,7 @@ impl PrefixMax for VectorLos<8> { }; { - let mut acc: f32x4 = Simd::splat(-2000.0f32); + let mut acc: f32x4 = Simd::splat(highest); let (vector_prefix, _) = angles_out.as_chunks_mut::<4>(); for prefix in vector_prefix.iter_mut() { // safety: PrefixMax for VectorLos<8> is guarded by a cfg block for all SIMD instructions @@ -241,13 +241,12 @@ impl VectorGreater<16> for VectorLos<16> { #[cfg(target_feature = "avx512f")] impl PrefixMax for VectorLos<16> { #[inline] - fn prefix_max(angles_in: &[f32], angles_out: &mut [f32]) { + fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { use std::arch::x86_64::{ __m512, _mm512_alignr_epi32, _mm512_castps_si512, _mm512_castsi512_ps, _mm512_max_ps, }; use std::simd::f32x16; - #[cfg(target_feature = "avx512f")] #[expect( clippy::cast_sign_loss, clippy::as_conversions, @@ -290,7 +289,7 @@ impl PrefixMax for VectorLos<16> { } } - let mut local_acc = f32x16::splat(-2000.0f32); + let mut local_acc = f32x16::splat(highest); // accumulate the prefix maxes for blocks, re-computing all prefix maxes // to include the accumulated value diff --git a/scripts/apt_init.sh b/scripts/apt_init.sh index ad5ed7f..583a86f 100644 --- a/scripts/apt_init.sh +++ b/scripts/apt_init.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash sudo apt install -y git clang -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source ~/.bashrc git clone https://github.com/AllTheLines/CacheTVS From a984d4c8484c8f47b85ffa9dfdd4c463eb7dd321 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Mon, 5 Jan 2026 14:45:23 -0800 Subject: [PATCH 11/27] fix: 16-wide float comparison Remove the old _CMP_GE which was used for the exclusive prefix sum code as this was causing quite a few bugs _only_ in the AVX 512 kernel --- crates/total-viewsheds/src/cpu/vector.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector.rs index e92719f..398f1c4 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector.rs @@ -228,11 +228,11 @@ impl VectorMax<16> for VectorLos<16> { impl VectorGreater<16> for VectorLos<16> { #[inline] fn gt(lhs: Simd, rhs: Simd) -> Mask { - use std::arch::x86_64::_mm512_cmple_ps_mask; + use std::arch::x86_64::{_mm512_cmp_ps_mask, _CMP_GT_OS}; // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input // thus allowing this to be non IEEE754 compliant unsafe { - let mask = _mm512_cmple_ps_mask(lhs.into(), rhs.into()); + let mask = _mm512_cmp_ps_mask::<_CMP_GT_OS>(lhs.into(), rhs.into()); Mask::::from_bitmask(mask.into()) } } From 6b3394bf37642be945ee4e219cc579f8da30413e Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Mon, 5 Jan 2026 20:53:06 -0800 Subject: [PATCH 12/27] refactor: a more robust line of sight trait, couple unrolling and vectorization --- crates/total-viewsheds/src/cpu/kernel.rs | 58 ++-- crates/total-viewsheds/src/cpu/los.rs | 142 +--------- crates/total-viewsheds/src/cpu/mod.rs | 10 +- .../total-viewsheds/src/cpu/unrolled_los.rs | 267 ++++++++++++++++++ .../cpu/{vector.rs => vector_intrinsics.rs} | 267 ++++-------------- crates/total-viewsheds/src/run/compute.rs | 12 +- crates/total-viewsheds/src/run/parallel.rs | 15 +- 7 files changed, 394 insertions(+), 377 deletions(-) create mode 100644 crates/total-viewsheds/src/cpu/unrolled_los.rs rename crates/total-viewsheds/src/cpu/{vector.rs => vector_intrinsics.rs} (72%) diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs index c74e156..9d25f66 100644 --- a/crates/total-viewsheds/src/cpu/kernel.rs +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -1,5 +1,6 @@ -use crate::cpu::los::{LineOfSight as _, UnrolledLOS}; -use crate::cpu::vector::{VectorLos, DEFAULT_VECTOR_LENGTH}; +use crate::cpu::los::LineOfSight as _; +use crate::cpu::unrolled_los::UnrolledVectorLos; +use crate::cpu::vector_intrinsics::DEFAULT_VECTOR_LENGTH; use itertools::izip; /// The data output by a single angle. @@ -16,6 +17,7 @@ pub struct OutputData { clippy::as_conversions, clippy::cast_possible_truncation, clippy::cast_possible_wrap, + clippy::cast_precision_loss, reason = "so long as max_los < 2^24, the following as conversions are entirely safe" )] #[expect( @@ -44,9 +46,8 @@ fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { /// vectors, and 10-way unrolling for the 16-wide vector as it is optimal for Turins const DEFAULT_UNROLL: usize = const { match DEFAULT_VECTOR_LENGTH { - 4 => 32, - 8 => 64, - 16 => 160, + 4 | 8 => 8, + 16 => 10, #[expect( clippy::unreachable, reason = "no one should be setting any other constants" @@ -57,12 +58,14 @@ const DEFAULT_UNROLL: usize = const { /// `kernel` will calculate the longest line of sight heatmap for a given angle and elevation map /// assuming that the maximum line of sight is `max_los` -#[expect( - clippy::inline_always, - reason = "I am become Death, destroyer of compilers" -)] // the real reason is that I need output_sector_data to be constant propagated -#[inline(always)] -pub fn kernel(elevation_map: &[i16], max_los: usize, angle: f32, refraction: f32) -> OutputData { +pub fn kernel( + elevation_map: &[i16], + max_los: usize, + angle: f32, + refraction: f32, + scale: f32, + observer_height: f32, +) -> OutputData { let mut surfaces = vec![0.0f32; max_los * max_los]; let mut longest = vec![0.0f32; max_los * max_los]; @@ -86,7 +89,8 @@ pub fn kernel(elevation_map: &[i16], max_los: usize, angle: f32, refraction: f32 let width = 2 * max_los; - let mut vs = UnrolledLOS::::new(max_los, refraction); + let mut vs = + UnrolledVectorLos::::new(max_los, refraction, scale); for (line, line_indexes) in izip!( rotated_elevations.chunks_exact(width), indexes.chunks_exact(width), @@ -113,11 +117,10 @@ pub fn kernel(elevation_map: &[i16], max_los: usize, angle: f32, refraction: f32 clippy::indexing_slicing, reason = "if slicing is out of bounds, it should panic" )] - let (point_surface, point_longest, point_visibility) = - vs.line_of_sight::>( - f32::from(pov_height) + 1.65, - &line[neighbor..neighbor + max_los], - ); + let (point_surface, point_longest, point_visibility) = vs.line_of_sight( + f32::from(pov_height) + observer_height, + &line[neighbor..neighbor + max_los], + ); #[expect( clippy::as_conversions, @@ -174,3 +177,24 @@ pub fn kernel(elevation_map: &[i16], max_los: usize, angle: f32, refraction: f32 visibility: sector_data, } } + +#[cfg(test)] +mod test { + use crate::cpu::kernel as cpu_kernel; + + #[test] + fn test_kernel() { + let dem = &kernel::tests::dems::bigger_dem(); + + let forward = cpu_kernel(&dem, 4, 0.0, 0.13, 1.0, 0.8); + let backward = cpu_kernel(&dem, 4, 180.0, 0.13, 1.0, 0.8); + + let res = forward + .surfaces + .iter() + .zip(backward.surfaces.iter()) + .map(|(l, r)| l + r) + .collect::>(); + println!("{:#?}", res); + } +} diff --git a/crates/total-viewsheds/src/cpu/los.rs b/crates/total-viewsheds/src/cpu/los.rs index 889484d..fbda642 100644 --- a/crates/total-viewsheds/src/cpu/los.rs +++ b/crates/total-viewsheds/src/cpu/los.rs @@ -1,14 +1,10 @@ -use itertools::izip; - /// `LineOfSight` abstracts the implementation of line of sight calculations to /// any "carry through" that can be materialized into a (f32, f32). -pub trait LineOfSight> { +pub trait LineOfSight, LOS: Angle + PrefixMax + Accumulate> { /// `line_of_sight` calculates a line of sight for the given `pov_height` /// and outputs a triple of the surface area, longest line of sight in meters /// and a vector of bools of which - fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) - where - LOS: Angle + PrefixMax + Accumulate; + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec); } /// `Angle` abstracts the angle calculation between a pov and all the elevation data within @@ -46,137 +42,3 @@ pub trait PrefixMax { /// `prefix_max` calculates the prefix max of the fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]); } - -/// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters -const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; - -/// `generate_distances` generates the distance from -#[expect( - clippy::as_conversions, - clippy::cast_precision_loss, - reason = "max_los is < 2^24" -)] -fn generate_distances(max_los: usize, refraction: f32) -> (Vec, Vec) { - (1..=max_los) - .map(|step| { - let distance = (step * 100) as f32; - let adjustment = (distance * distance * refraction) / EARTH_RADIUS_SQUARED; - - (distance, adjustment) - }) - .unzip() -} - -/// Unroll holds an unrolled heatmap and unrolled longest line of sight calculation -/// Since in Line of Sight-land max/addition are commutative, then Unroll will be materialized -/// into (f32, f32) -pub struct Unroll { - /// `heatmap` contains the summation of visible surface areas which will be reduced to a single - /// surface area at the end - pub heatmap: [f32; UNROLL], - /// `longest` contains many long lines of sight which will be reduced to a single - /// line of sight at the end - pub longest: [f32; UNROLL], -} - -/// `UnrolledLOS` implements an Unrolled `LineOfSight` calculation -pub struct UnrolledLOS -where - [(); UNROLL + 1]:, -{ - /// `distances` holds `max_los` distances - distances: Vec, - /// `adjustments` holds `max_los` earth curvature adjustments - adjustments: Vec, -} - -impl From> for (f32, f32) { - default fn from(val: Unroll) -> Self { - let heatmap = val.heatmap.iter().sum(); - let longest = val.longest.iter().fold(0.0f32, |acc, &elem| acc.max(elem)); - (heatmap, longest) - } -} - -impl UnrolledLOS -where - [(); UNROLL + 1]:, -{ - /// `new` initializes a new `UnrolledLOS`, and precalculates all the distances - /// and earth curvature adjustments - pub fn new(max_los: usize, refraction: f32) -> Self { - let (distances, adjustments) = generate_distances(max_los, refraction); - - Self { - distances, - adjustments, - } - } -} - -impl LineOfSight> for UnrolledLOS -where - [(); UNROLL + 1]:, -{ - #[expect( - clippy::indexing_slicing, - reason = "all indexing and slices are guaranteed by construction of a UnrolledLOS" - )] - fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) - where - LOS: Angle + PrefixMax + Accumulate>, - { - let mut angles = [0.0f32; UNROLL + 1]; - let mut prefix_max = [0.0f32; UNROLL]; - - prefix_max[UNROLL - 1] = -2000.0; - angles[0] = -2000.0; - - let mut output: Vec = vec![]; - - let (chunked_line, rest_line) = line.as_chunks::<{ UNROLL }>(); - - let (chunked_distances, rest_distances) = self.distances.as_chunks::<{ UNROLL }>(); - - let (chunked_adjustments, rest_adjustments) = self.adjustments.as_chunks::<{ UNROLL }>(); - - let los = izip!(chunked_line, chunked_distances, chunked_adjustments).fold( - Unroll:: { - longest: [0.0; UNROLL], - heatmap: [0.0; UNROLL], - }, - |acc, (unroll_line, distances, adjusts)| { - LOS::calculate_angles( - pov_height, - unroll_line, - distances, - adjusts, - &mut angles[1..], - ); - - LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); - - let new_acc = - LOS::accumulate(acc, &angles[1..], &prefix_max, distances, &mut output); - - angles[0] = angles[UNROLL]; - new_acc - }, - ); - - LOS::calculate_angles( - pov_height, - rest_line, - rest_distances, - rest_adjustments, - &mut angles[1..], - ); - - LOS::prefix_max(prefix_max[UNROLL - 1], &angles[..UNROLL], &mut prefix_max); - - let new_acc = LOS::accumulate(los, &angles[1..], &prefix_max, rest_distances, &mut output); - - let (heatmap, longest) = new_acc.into(); - (heatmap, longest, output) - } -} diff --git a/crates/total-viewsheds/src/cpu/mod.rs b/crates/total-viewsheds/src/cpu/mod.rs index 3e8adcf..fe1fb80 100644 --- a/crates/total-viewsheds/src/cpu/mod.rs +++ b/crates/total-viewsheds/src/cpu/mod.rs @@ -3,9 +3,13 @@ mod los; mod rotation; -/// vector contains vectorized implementations of the line of sight traits -mod vector; - /// kernel is the exported kernel module pub mod kernel; + +/// `unrolled_los` holds a fully implemented los trait for unrolled vectorization +mod unrolled_los; + +/// `vector_intrinsics` holds all the vector-related LOS intrinsics +mod vector_intrinsics; + pub use kernel::kernel; diff --git a/crates/total-viewsheds/src/cpu/unrolled_los.rs b/crates/total-viewsheds/src/cpu/unrolled_los.rs new file mode 100644 index 0000000..1407870 --- /dev/null +++ b/crates/total-viewsheds/src/cpu/unrolled_los.rs @@ -0,0 +1,267 @@ +use crate::cpu::los::{Accumulate, Angle, LineOfSight, PrefixMax}; +use crate::cpu::vector_intrinsics::{VectorGreater, VectorLos, VectorMax as _}; +use itertools::izip; +use std::simd::prelude::SimdFloat as _; +use std::simd::{LaneCount, Simd, SupportedLaneCount}; + +/// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters +const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; + +/// `generate_distances` generates the distance from +#[expect( + clippy::as_conversions, + clippy::cast_precision_loss, + reason = "max_los is < 2^24" +)] +fn generate_distances(max_los: usize, refraction: f32, scale: f32) -> (Vec, Vec) { + (1..=max_los) + .map(|step| { + let distance = (step as f32) * scale; + let adjustment = (distance * distance * refraction) / EARTH_RADIUS_SQUARED; + + (distance, adjustment) + }) + .unzip() +} + +/// Unroll holds an unrolled heatmap and unrolled longest line of sight calculation +/// Since in Line of Sight-land max/addition are commutative, then Unroll will be materialized +/// into (f32, f32) +pub struct UnrollVector +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, +{ + /// `heatmap` contains the summation of visible surface areas which will be reduced to a single + /// surface area at the end + pub heatmap: [f32; UNROLL * VECTOR_WIDTH], + /// `longest` contains many long lines of sight which will be reduced to a single + /// line of sight at the end + pub longest: [f32; UNROLL * VECTOR_WIDTH], +} + +/// `UnrolledLOS` implements an Unrolled `LineOfSight` calculation +pub struct UnrolledVectorLos { + /// `distances` holds `max_los` distances + distances: Vec, + /// `adjustments` holds `max_los` earth curvature adjustments + adjustments: Vec, +} + +impl From> + for (f32, f32) +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, +{ + fn from(val: UnrollVector) -> Self { + let (heatmap, _) = val.heatmap.as_chunks::(); + let (longest, _) = val.longest.as_chunks::(); + + let heat = heatmap + .iter() + .fold(Simd::splat(0.0f32), |acc, &heat| { + acc + Simd::from_array(heat) + }) + .reduce_sum(); + + let long = longest + .iter() + .fold(Simd::splat(0.0f32), |acc, &long| { + VectorLos::::max(acc, Simd::from_array(long)) + }) + .reduce_max(); + + (heat, long) + } +} + +impl UnrolledVectorLos { + /// `new` initializes a new `UnrolledLOS`, and precalculates all the distances + /// and earth curvature adjustments + pub fn new(max_los: usize, refraction: f32, scale: f32) -> Self { + assert_eq!( + max_los % VECTOR_WIDTH, + 0, + "the maximum line of sight must be divisible by {VECTOR_WIDTH} for vectorization" + ); + + let (distances, adjustments) = generate_distances(max_los, refraction, scale); + + Self { + distances, + adjustments, + } + } +} + +impl + LineOfSight, VectorLos> + for UnrolledVectorLos +where + [(); UNROLL * VECTOR_WIDTH + 1]:, + LaneCount: SupportedLaneCount, + VectorLos: PrefixMax + Angle, +{ + #[expect( + clippy::indexing_slicing, + reason = "all indexing and slices are guaranteed by construction of a UnrolledLOS" + )] + #[inline] + fn line_of_sight(&mut self, pov_height: f32, line: &[i16]) -> (f32, f32, Vec) { + let mut angles = [0.0f32; UNROLL * VECTOR_WIDTH + 1]; + let mut prefix_max = [0.0f32; UNROLL * VECTOR_WIDTH]; + + prefix_max[UNROLL * VECTOR_WIDTH - 1] = -2000.0; + angles[0] = -2000.0; + + let mut output: Vec = vec![]; + + let (chunked_line, rest_line) = line.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + + let (chunked_distances, rest_distances) = + self.distances.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + + let (chunked_adjustments, rest_adjustments) = + self.adjustments.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + + let los = izip!(chunked_line, chunked_distances, chunked_adjustments).fold( + UnrollVector:: { + longest: [0.0; UNROLL * VECTOR_WIDTH], + heatmap: [0.0; UNROLL * VECTOR_WIDTH], + }, + |acc, (unroll_line, distances, adjusts)| { + VectorLos::::calculate_angles( + pov_height, + unroll_line, + distances, + adjusts, + &mut angles[1..], + ); + + VectorLos::::prefix_max( + prefix_max[UNROLL * VECTOR_WIDTH - 1], + &angles[..UNROLL * VECTOR_WIDTH], + &mut prefix_max, + ); + + let new_acc = VectorLos::::accumulate( + acc, + &angles[1..], + &prefix_max, + distances, + &mut output, + ); + + angles[0] = angles[UNROLL]; + new_acc + }, + ); + + VectorLos::::calculate_angles( + pov_height, + rest_line, + rest_distances, + rest_adjustments, + &mut angles[1..=rest_line.len()], + ); + + VectorLos::::prefix_max( + prefix_max[UNROLL * VECTOR_WIDTH - 1], + &angles[..rest_line.len()], + &mut prefix_max[..rest_line.len()], + ); + + let new_acc = VectorLos::::accumulate( + los, + &angles[1..=rest_line.len()], + &prefix_max[..rest_line.len()], + rest_distances, + &mut output, + ); + + let (heatmap, longest) = new_acc.into(); + (heatmap, longest, output) + } +} + +/// `TAN_ONE_RAD` is used in normalizing the surface area heatmap +const TAN_ONE_RADIAN: f32 = 0.017_453_3; + +impl Accumulate> + for VectorLos +where + [(); UNROLL * VECTOR_WIDTH]:, + LaneCount: SupportedLaneCount, + Self: VectorGreater, +{ + #[inline] + #[expect(clippy::allow_attributes, reason = "conditional attributes")] + #[allow( + unused, + unused_variables, + reason = "conditional compilation causes dead parameters" + )] + fn accumulate( + mut init: UnrollVector, + angles: &[f32], + prefix: &[f32], + distances: &[f32], + bitmap: &mut Vec, + ) -> UnrollVector { + assert!( + angles.len().is_multiple_of(VECTOR_WIDTH), + "distance unroll should be multiple of width" + ); + assert!( + prefix.len().is_multiple_of(VECTOR_WIDTH), + "distance unroll should be multiple of width" + ); + assert!( + distances.len().is_multiple_of(VECTOR_WIDTH), + "distance unroll should be multiple of width" + ); + assert!( + angles.len() <= UNROLL * VECTOR_WIDTH, + "angles must be less than unroll size" + ); + + let (vector_sum, _) = init.heatmap.as_chunks_mut::<{ VECTOR_WIDTH }>(); + let (vector_longest, _) = init.longest.as_chunks_mut::<{ VECTOR_WIDTH }>(); + + let (vector_angles, _) = angles.as_chunks::<{ VECTOR_WIDTH }>(); + let (vector_prefix, _) = prefix.as_chunks::<{ VECTOR_WIDTH }>(); + let (vector_dists, _) = distances.as_chunks::<{ VECTOR_WIDTH }>(); + + izip!( + vector_sum, + vector_longest, + vector_angles, + vector_prefix, + vector_dists, + ) + .for_each( + |(sum_arr, longest_arr, &angle_arr, &prefix_arr, &distances_arr)| { + let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); + + if cfg!(any(test, feature = "ring_data")) { + bitmap.extend(mask.to_array()); + } + + if !mask.any() { + return; + } + + let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); + + Self::max(Simd::from_array(*longest_arr), dist).copy_to_slice(longest_arr); + + let acc = Simd::from(*sum_arr) + (dist * Simd::splat(TAN_ONE_RADIAN)); + + acc.copy_to_slice(sum_arr); + }, + ); + + init + } +} diff --git a/crates/total-viewsheds/src/cpu/vector.rs b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs similarity index 72% rename from crates/total-viewsheds/src/cpu/vector.rs rename to crates/total-viewsheds/src/cpu/vector_intrinsics.rs index 398f1c4..765fd13 100644 --- a/crates/total-viewsheds/src/cpu/vector.rs +++ b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs @@ -1,18 +1,12 @@ +use crate::cpu::los::{Angle, PrefixMax}; use itertools::izip; use std::iter::zip; -use std::simd::cmp::SimdPartialOrd as _; -use std::simd::num::SimdFloat as _; -use std::simd::prelude::SimdInt as _; +use std::simd::prelude::{SimdFloat as _, SimdInt as _, SimdPartialOrd as _}; use std::simd::{f32x4, f32x8, LaneCount, Mask, Simd, SupportedLaneCount}; -/// `TAN_ONE_RAD` is used in normalizing the -const TAN_ONE_RAD: f32 = 0.017_453_3; - -use crate::cpu::los::{Accumulate, Angle, PrefixMax, Unroll}; - /// `VectorMax` performs an element-wise SIMD max of floats, allowing for architecture /// specific implementations -trait VectorMax +pub trait VectorMax where LaneCount: SupportedLaneCount, { @@ -23,7 +17,7 @@ where /// `VectorGreater` performs a SIMD greater than of floats, allowing for architecture /// specific implementations -trait VectorGreater +pub trait VectorGreater where LaneCount: SupportedLaneCount, { @@ -84,6 +78,57 @@ impl VectorGreater<4> for VectorLos<4> { } } +#[cfg(target_feature = "avx")] +impl VectorMax<8> for VectorLos<8> { + #[inline] + fn max(lhs: f32x8, rhs: f32x8) -> f32x8 { + use std::arch::x86_64::_mm256_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(target_feature = "avx")] +impl VectorGreater<8> for VectorLos<8> { + #[inline] + fn gt(lhs: f32x8, rhs: f32x8) -> Mask { + use std::arch::x86_64::{_mm256_castps_si256, _mm256_cmp_ps, _CMP_GT_OS}; + + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm256_castps_si256(_mm256_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); + Mask::::from_int_unchecked(mask.into()) + } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorMax<16> for VectorLos<16> { + #[inline] + fn max(lhs: Simd, rhs: Simd) -> Simd { + use std::arch::x86_64::_mm512_max_ps; + // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } + } +} + +#[cfg(target_feature = "avx512f")] +impl VectorGreater<16> for VectorLos<16> { + #[inline] + fn gt(lhs: Simd, rhs: Simd) -> Mask { + use std::arch::x86_64::{_mm512_cmp_ps_mask, _CMP_GT_OS}; + // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input + // thus allowing this to be non IEEE754 compliant + unsafe { + let mask = _mm512_cmp_ps_mask::<_CMP_GT_OS>(lhs.into(), rhs.into()); + Mask::::from_bitmask(mask.into()) + } + } +} + impl PrefixMax for VectorLos<4> { #[inline] fn prefix_max(highest: f32, angles_in: &[f32], angles_out: &mut [f32]) { @@ -120,17 +165,6 @@ impl PrefixMax for VectorLos<4> { } } -#[cfg(target_feature = "avx")] -impl VectorMax<8> for VectorLos<8> { - #[inline] - fn max(lhs: f32x8, rhs: f32x8) -> f32x8 { - use std::arch::x86_64::_mm256_max_ps; - // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { _mm256_max_ps(lhs.into(), rhs.into()).into() } - } -} - #[cfg(all( target_feature = "sse", target_feature = "avx", @@ -198,46 +232,6 @@ impl PrefixMax for VectorLos<8> { } } -#[cfg(target_feature = "avx")] -impl VectorGreater<8> for VectorLos<8> { - #[inline] - fn gt(lhs: f32x8, rhs: f32x8) -> Mask { - use std::arch::x86_64::{_mm256_castps_si256, _mm256_cmp_ps, _CMP_GT_OS}; - - // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { - let mask = _mm256_castps_si256(_mm256_cmp_ps::<_CMP_GT_OS>(lhs.into(), rhs.into())); - Mask::::from_int_unchecked(mask.into()) - } - } -} - -#[cfg(target_feature = "avx512f")] -impl VectorMax<16> for VectorLos<16> { - #[inline] - fn max(lhs: Simd, rhs: Simd) -> Simd { - use std::arch::x86_64::_mm512_max_ps; - // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { _mm512_max_ps(lhs.into(), rhs.into()).into() } - } -} - -#[cfg(target_feature = "avx512f")] -impl VectorGreater<16> for VectorLos<16> { - #[inline] - fn gt(lhs: Simd, rhs: Simd) -> Mask { - use std::arch::x86_64::{_mm512_cmp_ps_mask, _CMP_GT_OS}; - // safety: the caller of Viewshed<8> guarantees that -0.0 or NaN are not in the input - // thus allowing this to be non IEEE754 compliant - unsafe { - let mask = _mm512_cmp_ps_mask::<_CMP_GT_OS>(lhs.into(), rhs.into()); - Mask::::from_bitmask(mask.into()) - } - } -} - #[cfg(target_feature = "avx512f")] impl PrefixMax for VectorLos<16> { #[inline] @@ -315,22 +309,22 @@ where adjustments: &[f32], angles_out: &mut [f32], ) { - debug_assert!( + assert!( elevations.len().is_multiple_of(WIDTH), "expected elevations to be a multiple of {WIDTH}", ); - debug_assert!( + assert!( distances.len().is_multiple_of(WIDTH), "expected distances to be a multiple of {WIDTH}", ); - debug_assert!( + assert!( adjustments.len().is_multiple_of(WIDTH), "expected adjustments to be a multiple of {WIDTH}", ); - debug_assert!( + assert!( angles_out.len().is_multiple_of(WIDTH), "expected angles buf to be a multiple of {WIDTH}", ); @@ -354,89 +348,6 @@ where } } -/// `GenericExpr` lets a const generic expression be evaluated in its -/// `CONDITION` parameter for traits that need to evaluate constant expressions -/// as part of their trait bounds -struct GenericExpr; - -/// `IsTrue `is a "marker" trait for trait bounds for when a const generic expr -/// evaluates to true, and is only implemented for `GenericExpr<{true}>` -trait IsTrue {} -impl IsTrue for GenericExpr {} - -impl Accumulate> for VectorLos -where - LaneCount: SupportedLaneCount, - GenericExpr<{ SIZE.is_multiple_of(WIDTH) }>: IsTrue, -{ - #[inline] - #[expect(clippy::allow_attributes, reason = "conditional attributes")] - #[allow( - unused, - unused_variables, - reason = "conditional compilation causes dead parameters" - )] - fn accumulate( - mut init: Unroll, - angles: &[f32], - prefix: &[f32], - distances: &[f32], - bitmap: &mut Vec, - ) -> Unroll { - debug_assert!( - angles.len().is_multiple_of(WIDTH), - "distance unroll should be multiple of width" - ); - debug_assert!( - prefix.len().is_multiple_of(WIDTH), - "distance unroll should be multiple of width" - ); - debug_assert!( - distances.len().is_multiple_of(WIDTH), - "distance unroll should be multiple of width" - ); - debug_assert!(angles.len() <= SIZE, "angles must be less than unroll size"); - - let (vector_sum, _) = init.heatmap.as_chunks_mut::<{ WIDTH }>(); - let (vector_longest, _) = init.longest.as_chunks_mut::<{ WIDTH }>(); - - let (vector_angles, _) = angles.as_chunks::<{ WIDTH }>(); - let (vector_prefix, _) = prefix.as_chunks::<{ WIDTH }>(); - let (vector_dists, _) = distances.as_chunks::<{ WIDTH }>(); - - izip!( - vector_sum, - vector_longest, - vector_angles, - vector_prefix, - vector_dists, - ) - .for_each( - |(sum_arr, longest_arr, &angle_arr, &prefix_arr, &distances_arr)| { - let mask = Self::gt(Simd::from_array(angle_arr), Simd::from_array(prefix_arr)); - - if cfg!(any(test, feature = "ring_data")) { - bitmap.extend(mask.to_array()); - } - - if !mask.any() { - return; - } - - let dist = mask.select(Simd::from_array(distances_arr), Simd::splat(0.0f32)); - - Self::max(Simd::from_array(*longest_arr), dist).copy_to_slice(longest_arr); - - let acc = Simd::from(*sum_arr) + (dist * Simd::splat(TAN_ONE_RAD)); - - acc.copy_to_slice(sum_arr); - }, - ); - - init - } -} - /// `DEFAULT_VECTOR_LENGTH` determines the CPU Kernel's default vector length based off /// the architecture that the binary is built for pub const DEFAULT_VECTOR_LENGTH: usize = const { @@ -454,63 +365,3 @@ pub const DEFAULT_VECTOR_LENGTH: usize = const { 4 } }; - -impl From> for (f32, f32) -where - GenericExpr<{ UNROLL.is_multiple_of(DEFAULT_VECTOR_LENGTH) }>: IsTrue, -{ - fn from(val: Unroll) -> Self { - let (heatmap, _) = val.heatmap.as_chunks::(); - let (longest, _) = val.longest.as_chunks::(); - - let heat = heatmap - .iter() - .fold(Simd::splat(0.0f32), |acc, &heat| { - acc + Simd::from_array(heat) - }) - .reduce_sum(); - - let long = longest - .iter() - .fold(Simd::splat(0.0f32), |acc, &long| { - VectorLos::::max(acc, Simd::from_array(long)) - }) - .reduce_max() - / 100.0; - - (heat, long) - } -} - -#[cfg(test)] -mod test { - use crate::cpu::los::{LineOfSight as _, UnrolledLOS}; - use crate::cpu::vector::VectorLos; - - #[test] - #[cfg(all( - target_feature = "sse", - target_feature = "avx", - target_feature = "avx2" - ))] - fn line_of_sightsame() { - let mut vs = UnrolledLOS::<64>::new(16, 0.13); - let (visibility_four, longest_four, sector_four) = vs.line_of_sight::>( - 0.0f32, - &[ - 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, - ], - ); - - let (visibility_eight, longest_eight, sector_eight) = vs.line_of_sight::>( - 0.0f32, - &[ - 100, 0, 300, 400, 500, 0, 300, 0, 100, 0, 300, 0, 100, 0, 300, 0, - ], - ); - - assert_eq!(visibility_four, visibility_eight); - assert_eq!(longest_four, longest_eight); - assert_eq!(sector_four, sector_eight); - } -} diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index ef26c6d..2ebcc0e 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -379,13 +379,13 @@ pub mod test { use googletest::prelude::*; #[test] - #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] + // #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] fn total_surfaces() { super::total_surfaces(crate::config::Backend::CPU); } #[gtest] - #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] + // #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] fn longest_lines() { // // Tom's angles @@ -398,10 +398,10 @@ pub mod test { // // Ryan's angles: // [ - // 0, 0, 0, 0, - // 0, 0, 0, 0, - // 0, 46, 0, 0, - // 0, 0, 0, 0 + // 0, 0, 0, 0, + // 0, 0, 12, 0, + // 0, 46, 0, 0, + // 0, 0, 0, 0, // ] // // rberger CPU longest distance: diff --git a/crates/total-viewsheds/src/run/parallel.rs b/crates/total-viewsheds/src/run/parallel.rs index a4a667e..ef80456 100644 --- a/crates/total-viewsheds/src/run/parallel.rs +++ b/crates/total-viewsheds/src/run/parallel.rs @@ -41,6 +41,8 @@ impl super::compute::Compute<'_> { let elevations = &self.dem.elevations; let refraction = self.config.refraction; + let scale = self.config.scale; + let observer_height = self.config.observer_height; pool.install(move || { (0u16..360u16) @@ -49,8 +51,15 @@ impl super::compute::Compute<'_> { let start = std::time::Instant::now(); tracing::info!("starting angle: {angle}"); - let output = - crate::cpu::kernel(elevations, max_los, f32::from(angle), refraction); + let output = crate::cpu::kernel( + elevations, + max_los, + f32::from(angle), + refraction, + scale, + observer_height, + ); + tracing::info!("finished angle in {:?}", start.elapsed()); (angle, output) }) @@ -141,7 +150,7 @@ impl AccumulatingData<'_> { return; } - // let the smallest angle win due to keep consistent in a multithreaded environment + // let the smallest angle win due to keep consistent in a multithreaded environment if angle < to.0 && converted != 0 && converted == to.1 { *to = (angle, converted); } From c5a219e8095c4307f2614f05ad022a6c229fd9ff Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Mon, 5 Jan 2026 22:47:44 -0800 Subject: [PATCH 13/27] fix: duplicate total surface tallying The Vulkan kernel tallies total surface area against itself creating a quadratic (sum i=0; (sum j=0; j; j < i); i < n) surface area rather than a linear one --- crates/total-viewsheds/src/run/serial.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/crates/total-viewsheds/src/run/serial.rs b/crates/total-viewsheds/src/run/serial.rs index a07027c..11d5c6d 100644 --- a/crates/total-viewsheds/src/run/serial.rs +++ b/crates/total-viewsheds/src/run/serial.rs @@ -44,13 +44,6 @@ impl super::compute::Compute<'_> { } } - if Self::is_process_surfaces(&self.config.process) { - self.add_sector_surfaces_to_running_total(§or_surfaces); - if angle == super::compute::SECTOR_STEPS - 1 { - self.render_total_surfaces()?; - } - } - if Self::is_process_longest_lines(&self.config.process) { self.increment_longest_lines(&longest_lines, angle)?; if angle == super::compute::SECTOR_STEPS - 1 { @@ -59,6 +52,11 @@ impl super::compute::Compute<'_> { } } + if Self::is_process_surfaces(&self.config.process) { + self.add_sector_surfaces_to_running_total(§or_surfaces); + self.render_total_surfaces()?; + } + Ok(()) } From d36f788c435298a34afc68046c34a42457f36fec Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Thu, 8 Jan 2026 21:00:46 -0800 Subject: [PATCH 14/27] fix: remove asserts, fix refraction --- benchmarks/cpu-cardiff.json | 2 +- crates/total-viewsheds/src/compute.rs | 627 ------------------ .../total-viewsheds/src/cpu/unrolled_los.rs | 12 +- .../src/cpu/vector_intrinsics.rs | 8 +- crates/total-viewsheds/src/run/compute.rs | 81 ++- 5 files changed, 59 insertions(+), 671 deletions(-) delete mode 100644 crates/total-viewsheds/src/compute.rs diff --git a/benchmarks/cpu-cardiff.json b/benchmarks/cpu-cardiff.json index 3f1e0ac..586b472 100644 --- a/benchmarks/cpu-cardiff.json +++ b/benchmarks/cpu-cardiff.json @@ -1 +1 @@ -{"type":"MultiPolygon","coordinates":[[[[-3.3564150078447472,51.46777944512569],[-3.3557575896302696,51.46523921700127],[-3.354339095049023,51.46539037438293],[-3.3549924284124226,51.46791512131131],[-3.3564150078447472,51.46777944512569]]],[[[-3.3478794047054166,51.46859324332865],[-3.3472464824528236,51.46614590439454],[-3.3444093714812357,51.46644799631055],[-3.3450341361851073,51.46886437103278],[-3.3478794047054166,51.46859324332865]]],[[[-3.343611489278949,51.46899990912944],[-3.3429908023844406,51.46659901638458],[-3.340153635219643,51.46690100531558],[-3.3407661701781843,51.46927093353671],[-3.343611489278949,51.46899990912944]]],[[[-3.3094191502981523,51.537805687089346],[-3.3080861954746568,51.53746383819622],[-3.3067278271877596,51.53947352608531],[-3.3080510582485947,51.53982984839291],[-3.3094191502981523,51.537805687089346]]],[[[-3.306753260182827,51.537121974141336],[-3.3054203448639004,51.536780095198694],[-3.304081701681347,51.538760430259195],[-3.302758532205134,51.538404066690994],[-3.301374398893944,51.540355552427904],[-3.302687438379504,51.54072628140756],[-3.3040816522688887,51.53876050357212],[-3.304081427065243,51.53876083636486],[-3.30540461679358,51.53911718883391],[-3.306753260182827,51.537121974141336]]],[[[-3.3029270496532916,51.518692137326475],[-3.2987401161406398,51.51802335271285],[-3.2979272999185443,51.519934165427514],[-3.3020950473511523,51.52064847472703],[-3.3029270496532916,51.518692137326475]]],[[[-3.3027545745805265,51.53609629127967],[-3.3000888837487112,51.53541242671804],[-3.2987891411753116,51.53733488414837],[-3.2961429864696536,51.536622021441055],[-3.2948097779263854,51.5385013268149],[-3.293496868689499,51.538130513382406],[-3.2921217127243216,51.53998073182554],[-3.2908193618476465,51.539595656337625],[-3.2894033429077103,51.54141662442124],[-3.287936674540361,51.54322162271178],[-3.285376574390068,51.54239514865043],[-3.283882536044338,51.54415660447578],[-3.2838825391275233,51.544156605568745],[-3.282339857349679,51.54590089578278],[-3.2807479721938475,51.54762864873868],[-3.283235389849409,51.54853764169902],[-3.284852041545615,51.54678290485175],[-3.2873645639420115,51.54766460731465],[-3.2889559310524294,51.54586504563717],[-3.2902243346625806,51.54629211993515],[-3.291776692134781,51.54446160576062],[-3.293056852302406,51.54487478516136],[-3.2945689619478955,51.54301360667212],[-3.2958604756805006,51.5434127617659],[-3.297331055596334,51.541521284641306],[-3.298633524769229,51.541906293472294],[-3.3000613750221333,51.539984807368896],[-3.3000613807467243,51.53998480900603],[-3.3000615290499935,51.539984600044036],[-3.3000616489463743,51.53998443857789],[-3.300061644542428,51.53998443721306],[-3.301435099926422,51.53804808469291],[-3.3014351091727843,51.53804808714751],[-3.301435330891711,51.538047759028146],[-3.301435381634692,51.53804768763436],[-3.301435379873174,51.53804768708844],[-3.3027545745805265,51.53609629127967]]],[[[-3.3012087228255558,51.52259467514235],[-3.2998262760444055,51.522341491463294],[-3.298892429393649,51.524263480256955],[-3.3002676337010857,51.52453169036686],[-3.3012087228255558,51.52259467514235]]],[[[-3.3004294652297204,51.47112201031613],[-3.2998766769231502,51.4691913540008],[-3.2984622963434247,51.46935727763123],[-3.2990106049186996,51.47127249518871],[-3.3004294652297204,51.47112201031613]]],[[[-3.2978608407310146,51.46744908226382],[-3.2972059497423247,51.46554697472565],[-3.2958018021440587,51.46574359462343],[-3.296451232037963,51.46763000835299],[-3.292222719049197,51.46817377964479],[-3.292804742619947,51.47002104800638],[-3.293335071211205,51.47187426351803],[-3.2961728567318325,51.47157341369543],[-3.2956336156611643,51.46968946029773],[-3.297048021173683,51.469523573529656],[-3.2964512684489526,51.46763011362962],[-3.2964513568175082,51.46763037051622],[-3.2978608407310146,51.46744908226382]]],[[[-3.294397782693397,51.46594058315951],[-3.293701426544175,51.46407644221039],[-3.2909045910081263,51.46450013496852],[-3.2915894253557343,51.4663337328254],[-3.294397782693397,51.46594058315951]]],[[[-3.2913903520667156,51.470187016550064],[-3.290813302441832,51.468355354614346],[-3.290813309025397,51.46835535350774],[-3.29081322379653,51.468355106212876],[-3.2908131913575325,51.468355002848945],[-3.2908131882843374,51.46835500312765],[-3.2901850923915106,51.46652990628446],[-3.28737666138889,51.46692296160652],[-3.2867093778128496,51.465135915242364],[-3.2881078437769533,51.46492413027121],[-3.287384307366591,51.46312868586711],[-3.2845997285593804,51.463582653536776],[-3.283839551595601,51.46182597886363],[-3.2796823863387146,51.46255221134361],[-3.280422789273672,51.46426355267665],[-3.2811153609442996,51.46598280765874],[-3.281759794639487,51.46770922623863],[-3.2831640580792274,51.467512778397705],[-3.2837654977047515,51.469261201058785],[-3.2879942113193557,51.468717744150496],[-3.2885614561982153,51.470518635672924],[-3.2913903520667156,51.470187016550064]]],[[[-3.290641724868549,51.52265350370238],[-3.2892666323859525,51.52238518369917],[-3.288332934870983,51.5241917204545],[-3.2842307612594985,51.52334184145184],[-3.2851414514762767,51.521580126641375],[-3.2837664236473327,51.52131174184869],[-3.282863403849377,51.523058516641775],[-3.2814960752895934,51.52277517806019],[-3.2805523323022636,51.52449701518169],[-3.279193103299817,51.52419880504172],[-3.278209777756868,51.52589531082339],[-3.276859074612637,51.525582321518065],[-3.275837264362685,51.527253210468956],[-3.273153748743557,51.52659784720604],[-3.2721039484204018,51.52822818666899],[-3.2707715612902946,51.52788591584009],[-3.269685969298103,51.529490104750735],[-3.26836333682191,51.52913335253868],[-3.267242864483014,51.53071143609172],[-3.269867850277152,51.53145364295816],[-3.268682579914108,51.53304727308401],[-3.267452535772175,51.53462810225415],[-3.268743563027795,51.53502755278581],[-3.2674581758312655,51.536608575755544],[-3.2687378892559313,51.53702201934543],[-3.27003461816577,51.53542699044943],[-3.27003462388959,51.535426992362325],[-3.270034788142808,51.5354267814982],[-3.2700348683114484,51.535426682651654],[-3.2700348656690044,51.5354266815578],[-3.2712864134935757,51.53381809919632],[-3.2712864187765547,51.53381810083542],[-3.2712865628425334,51.53381790700124],[-3.27128667102292,51.5338177680714],[-3.2712866675000383,51.533817766704374],[-3.272492926282822,51.53219579236547],[-3.273805495858067,51.532566844735065],[-3.27258844212718,51.534203397595334],[-3.2738904874621273,51.53458867988117],[-3.2751183223303935,51.532937565829904],[-3.273805729230693,51.53256653091613],[-3.273805623708755,51.53256667258789],[-3.2749764722343557,51.53091730442837],[-3.2749764801576,51.53091730661247],[-3.2749766687727204,51.53091702768452],[-3.2749767125456444,51.530916966185764],[-3.274976711224483,51.53091696563888],[-3.2761010465440084,51.52925523983424],[-3.276101033857245,51.52925525960005],[-3.2800985148145436,51.53028186096951],[-3.2789447471304456,51.531987304612365],[-3.2815903543248752,51.53270055984533],[-3.2803686704620265,51.53442188842247],[-3.282994087489673,51.535163802497145],[-3.28423605125015,51.53341375724576],[-3.284236059614076,51.53341375942863],[-3.2842362608721523,51.53341346209075],[-3.284236305946635,51.533413398392405],[-3.2842363041855034,51.53341339784623],[-3.285428769124821,51.53165045045736],[-3.286761382206489,51.53199255980521],[-3.2855589397437557,51.533770335723084],[-3.2868818401057145,51.534126897355364],[-3.288094265054948,51.53233428609054],[-3.2867616293762336,51.53199219464798],[-3.2867614001432037,51.531992533447855],[-3.287914041830178,51.53020158694214],[-3.2852301777546495,51.52954649970012],[-3.2863141942584377,51.52777329112125],[-3.2863141995402696,51.527773292485364],[-3.28631431011267,51.527773101422035],[-3.286314417661794,51.52777292572344],[-3.2863144128197064,51.5277729243587],[-3.287348566821567,51.52598817940903],[-3.2887079094173393,51.526286299622846],[-3.2897003720403375,51.52447498391353],[-3.2897003597183736,51.52447498118808],[-3.290641724868549,51.52265350370238]],[[-3.2827638333998603,51.5309658272041],[-3.2814312780708197,51.530623675139694],[-3.2825461799120674,51.52889168235394],[-3.2838880614006567,51.52921926727614],[-3.2827638333998603,51.5309658272041]],[[-3.2761012556613744,51.529254915344666],[-3.2747688085907147,51.528912689970895],[-3.274768595914578,51.528913004588084],[-3.275837242932991,51.527253245606644],[-3.275837068867987,51.52725353000314],[-3.2771788465685696,51.52758118983801],[-3.2761012556613744,51.529254915344666]],[[-3.2736539947335443,51.530560273159296],[-3.272331298474492,51.53020356519835],[-3.273436146011293,51.52857078301548],[-3.274768579283211,51.52891302847326],[-3.2736539947335443,51.530560273159296]]],[[[-3.2873849446155567,51.52006210375729],[-3.286002651189247,51.51980875681036],[-3.285141275572867,51.521580490051676],[-3.286516318268077,51.52184886173719],[-3.2873849446155567,51.52006210375729]]],[[[-3.2826145675335154,51.54372910281568],[-3.2813463007114674,51.54330194745754],[-3.2798273083901224,51.54501934497574],[-3.2810834570195984,51.5454602559179],[-3.2826145675335154,51.54372910281568]]],[[[-3.2823914115448956,51.52104334120297],[-3.281016416047031,51.52077492415474],[-3.280128557365352,51.5224921724352],[-3.281495879094189,51.52277553216627],[-3.2823914115448956,51.52104334120297]]],[[[-3.268039683608621,51.51311436493289],[-3.2652490560358047,51.51266769364229],[-3.265864578634193,51.51111438578955],[-3.2644632970428473,51.51090626126179],[-3.265029562716257,51.509362098092424],[-3.265029566674068,51.50936209863623],[-3.265029613712399,51.50936195868835],[-3.26502967124918,51.50936180227],[-3.265029667290519,51.50936180145192],[-3.2655527294990248,51.50781138483003],[-3.264140758063853,51.507633898136696],[-3.2646155394347343,51.506093768252384],[-3.2646155460303214,51.50609376906732],[-3.2646156108010134,51.50609353666033],[-3.264615637347428,51.5060934510479],[-3.2646156351480475,51.50609345050196],[-3.2650473315029718,51.50454806444734],[-3.262205486010223,51.50425477976668],[-3.261782332001411,51.505769248261196],[-3.260365698146247,51.5056071214686],[-3.2599048366811565,51.50710164609388],[-3.2613167659828926,51.5072791862686],[-3.260809113371418,51.50878351107839],[-3.2622159158879867,51.5089763900221],[-3.26166077481124,51.51048996251477],[-3.25885830498628,51.51007359678549],[-3.2582726470856826,51.511550967415765],[-3.2576458006501805,51.51302153775836],[-3.2604234376056485,51.513498713871975],[-3.2597418790462753,51.51499230193589],[-3.259018537268488,51.51647836596822],[-3.2603932634880013,51.51674704212274],[-3.259620768414392,51.51823986086156],[-3.2623549195661945,51.51880704305082],[-3.2631427829306183,51.517284349883894],[-3.265892375869579,51.5178215945147],[-3.2666520078314543,51.516260491184966],[-3.266652009151219,51.51626049145764],[-3.2666520296742343,51.516260446996625],[-3.2666521541640265,51.5162601906521],[-3.2666521471255705,51.51626018928922],[-3.267367797971803,51.51469136883226],[-3.267367804569546,51.51469136992133],[-3.2673679036286054,51.514691137470976],[-3.267367944668376,51.514691047451485],[-3.267367942468552,51.51469104690561],[-3.268039683608621,51.51311436493289]]],[[[-3.2642427149930686,51.520917443999856],[-3.262883691630286,51.520619043100204],[-3.263722194628723,51.519090295814834],[-3.26235509184237,51.518806731795145],[-3.2615246899904906,51.5203206272608],[-3.260165709633545,51.52002219620839],[-3.2593013766165773,51.521512339271226],[-3.262002321166455,51.522138713854595],[-3.2610787019513134,51.52364823855684],[-3.262420275225551,51.52397606927757],[-3.263352823210152,51.52245187793756],[-3.263352827610457,51.522451879029504],[-3.263352921209923,51.522451717906186],[-3.2633530152710093,51.52245156391401],[-3.263353011310398,51.52245156282157],[-3.2642427149930686,51.520917443999856]]],[[[-3.259769514777304,51.488974463193365],[-3.254010896832118,51.48901241761861],[-3.254014988751654,51.49043995054621],[-3.249695758879344,51.49042116948281],[-3.249660987387492,51.491801577932215],[-3.249587624369057,51.49318143110241],[-3.251026220596371,51.493219076870005],[-3.2509130680160436,51.49461344834484],[-3.253787828929165,51.494720024301],[-3.2539034350985685,51.49329431572883],[-3.2553420533712867,51.49333190881961],[-3.255418561512838,51.49188949748406],[-3.2568579648675513,51.491911393636855],[-3.2568944791430603,51.49045266257969],[-3.259773974707167,51.49046503044318],[-3.259769514777304,51.488974463193365]]],[[[-3.259122917591976,51.481536623888736],[-3.2588689797268686,51.48005450922066],[-3.25171942339774,51.480571327340634],[-3.2519597297409835,51.481975161673596],[-3.250527090704563,51.48206287765827],[-3.250725899077643,51.48345378006317],[-3.2521608159063664,51.48338168974612],[-3.2523225358073407,51.48478992362374],[-3.258069546922069,51.484563966560636],[-3.2579004564059852,51.4830931526187],[-3.257900460359007,51.483093152339855],[-3.2579004379303376,51.483092995467686],[-3.2579004235024063,51.48309287013049],[-3.2579004199886974,51.48309287040882],[-3.257690298126726,51.4816244243719],[-3.259122917591976,51.481536623888736]]],[[[-3.237057524639891,51.44606842829136],[-3.2358170302298457,51.444832155079126],[-3.234605120911692,51.44531625417077],[-3.2333445811576333,51.444107297515195],[-3.2333445837879773,51.444107296141226],[-3.233344473807491,51.4441071944799],[-3.2333443374204625,51.444107063767746],[-3.233344333912246,51.444107065142546],[-3.2320502692437802,51.442912006821885],[-3.2320502929956283,51.4429120276465],[-3.2332343956011087,51.442401822386834],[-3.231892268942627,51.44120776780407],[-3.2307226129502515,51.441730799167495],[-3.2320500198409587,51.44291178459755],[-3.2308658996290345,51.443421977842746],[-3.2321462695220085,51.44460441752563],[-3.2333932515193577,51.44580040262498],[-3.234606966872043,51.44701005148233],[-3.237057524639891,51.44606842829136]]],[[[-3.236551522524576,51.5421385062896],[-3.2353915179329205,51.5416049925706],[-3.2339256280047954,51.542821860935355],[-3.235070534236257,51.543367934034336],[-3.236551522524576,51.5421385062896]]],[[[-3.2321591837107624,51.473382510347435],[-3.2316822703092867,51.47219546539054],[-3.230289436499877,51.472421795817304],[-3.2307602022640647,51.47359362768605],[-3.2321591837107624,51.473382510347435]]],[[[-3.2316724492659,51.43949327863987],[-3.230249519244418,51.438316743722694],[-3.230249752729415,51.4383169300324],[-3.2313894115464543,51.43776871390258],[-3.2299183512663694,51.43659546796938],[-3.2287941884207667,51.43715602023179],[-3.2302494484521818,51.43831668755615],[-3.229109767623016,51.438864894468274],[-3.230517615825066,51.44002898319438],[-3.2316724492659,51.43949327863987]]],[[[-3.228896683412453,51.47264833151399],[-3.228399837810587,51.471496950355004],[-3.2270135446127513,51.471738388763825],[-3.2275038211446807,51.47287462582223],[-3.228896683412453,51.47264833151399]]],[[[-3.227272244034375,51.53787007411242],[-3.22611245601394,51.537336468277765],[-3.224767644411201,51.53845264072544],[-3.222478346923568,51.53736028629928],[-3.2211330568027132,51.53843708363491],[-3.2233914499926897,51.53955421845159],[-3.224767641337769,51.53845264319675],[-3.224767366062082,51.53845287164833],[-3.2259120526172103,51.53899903450883],[-3.227272244034375,51.53787007411242]]],[[[-3.2228546756453778,51.47246282797409],[-3.222353714199906,51.47137731652562],[-3.2209743477651496,51.47163375688011],[-3.2204507679498007,51.47056928510358],[-3.221822734791201,51.470297857664384],[-3.221261584952861,51.46922414088421],[-3.221261586708413,51.46922414033414],[-3.2212615496733585,51.469224073436564],[-3.2212614698532285,51.46922392071967],[-3.22126146546318,51.46922392154624],[-3.220670424934726,51.46815648161363],[-3.2193145205881613,51.46845763695196],[-3.2187025383281256,51.46741172888661],[-3.2200497957558203,51.467095849420666],[-3.21939939505886,51.46604171935906],[-3.2180611946501276,51.46637223267968],[-3.217391066303432,51.465340084939236],[-3.217391206374755,51.46534029000122],[-3.2200486535793087,51.464650196735654],[-3.2193300905681017,51.46359666703104],[-3.219330091006655,51.46359666675639],[-3.2193300685452892,51.463596635504885],[-3.219329943005719,51.463596451279855],[-3.2193299377390763,51.463596452655665],[-3.2185822271075293,51.462551113754934],[-3.2211993252380644,51.461803482699246],[-3.22040107408306,51.46073784969156],[-3.2204010762768043,51.460737848866856],[-3.220401012433826,51.460737767453374],[-3.220400909831458,51.46073763038961],[-3.2204009058818923,51.46073763149008],[-3.219573201533832,51.45968105992753],[-3.2208599890615273,51.45927894183268],[-3.2199913148590085,51.45821738942688],[-3.2199913152974995,51.45821738915222],[-3.2199912950494065,51.45821736530503],[-3.219991136131241,51.45821717123343],[-3.2199911308657994,51.45821717288358],[-3.219093146279869,51.4571654479037],[-3.219093148034404,51.45716544707937],[-3.219093080697715,51.45716537115398],[-3.2190929737419816,51.45716524616167],[-3.2190929702317597,51.45716524726174],[-3.2181655917623173,51.45612325145767],[-3.216914321275693,51.45656686247941],[-3.2178294781497154,51.457595157309555],[-3.2165659623296308,51.45802505398528],[-3.2156632131190173,51.45701066925674],[-3.21566321355752,51.45701066898211],[-3.2156631959560578,51.457010649795144],[-3.215663026970835,51.457010460114375],[-3.2156630217059456,51.457010462038625],[-3.2147321268067413,51.45600608190129],[-3.2147321311934465,51.45600607997777],[-3.214731969284134,51.45600591195966],[-3.214731934083843,51.45600587413404],[-3.2147319332062914,51.45600587440902],[-3.2137731503732603,51.45501177503947],[-3.21377315344386,51.455011773665596],[-3.2137730364265105,51.45501165717945],[-3.2137729660339582,51.45501158399632],[-3.2137729638403596,51.455011584820916],[-3.212786395444219,51.45402787902143],[-3.211573999573296,51.45451173925452],[-3.2105740648204217,51.4535522643543],[-3.2105740670134835,51.45355226325547],[-3.210573972894346,51.45355217637322],[-3.210573871291193,51.453552078798914],[-3.2105738686591043,51.45355207989808],[-3.2095473291897,51.45260364743775],[-3.209547329627685,51.45260364688883],[-3.209547300603446,51.452603621126215],[-3.209547117650055,51.45260345201921],[-3.209547112824433,51.452603453942864],[-3.208494293219822,51.45166636115428],[-3.208494294973823,51.45166636005582],[-3.2084942118670607,51.45166628879885],[-3.2084940764254615,51.451666168206344],[-3.208494072915908,51.45166616958038],[-3.207415264666743,51.45074067476289],[-3.2085706421182314,51.450205197417354],[-3.207450607713831,51.44927872640197],[-3.205170121798626,51.4503746858829],[-3.2040558519366216,51.44948559770243],[-3.2040558536906585,51.449485596604006],[-3.2040557609369253,51.449485525350546],[-3.2040556409219403,51.449485429429075],[-3.204055638290412,51.449485430802376],[-3.202916509962518,51.448608434186504],[-3.2018075413866085,51.449180907697716],[-3.200660320166095,51.44832846624029],[-3.1973817425876554,51.450081809557254],[-3.198480514502624,51.450898294279085],[-3.1995564153866667,51.451726674930086],[-3.2006088685213,51.452566505136424],[-3.201637858015184,51.453417770723505],[-3.2026430615055537,51.45428021413441],[-3.2038133598204492,51.45375746765101],[-3.204808616866591,51.454643406136405],[-3.2057788890468673,51.45553993832451],[-3.2045800816947514,51.45603687122428],[-3.2055118292086275,51.456931031295355],[-3.206724351509681,51.456447238610764],[-3.2076440670044866,51.45736440692341],[-3.208538277839491,51.45829168479487],[-3.209777093440954,51.45783459156204],[-3.21065776734941,51.45878489824614],[-3.2115117589134012,51.459744613860984],[-3.212338953015999,51.4607136167355],[-3.2131388550739457,51.4616913273977],[-3.2139115166214918,51.46267781274151],[-3.215209470380255,51.46228984941032],[-3.215964912628765,51.46329848699344],[-3.2146562922537956,51.46367225365448],[-3.2153733447452937,51.46467485104685],[-3.212735517293599,51.46539370765379],[-3.212735637526196,51.465393883935235],[-3.212038991752149,51.46441974171791],[-3.210730311626556,51.46479346339383],[-3.2100175145045604,51.46384161912675],[-3.2100175162595237,51.46384161830255],[-3.2100174563917188,51.46384154154359],[-3.2100173674620143,51.463841423112925],[-3.2100173639510587,51.46384142421273],[-3.209278110000248,51.4628974889656],[-3.2092781126329006,51.46289748786648],[-3.209278029887232,51.46289738671144],[-3.2092779682618033,51.462897308033305],[-3.20927796606723,51.462897308583514],[-3.2085124823461824,51.46196157107885],[-3.208512482784773,51.461961570804235],[-3.2085124585802838,51.46196154229491],[-3.2085123243444675,51.46196137836266],[-3.2085123199559122,51.46196137973735],[-3.207720689095595,51.461033946930655],[-3.2064569833646135,51.461463734418764],[-3.207236780713284,51.462377333236475],[-3.2059612222293596,51.46279327145663],[-3.2067040383449457,51.46370136143267],[-3.2074213481565783,51.46461734277972],[-3.20811301624139,51.46554104242963],[-3.209421736502705,51.465167354127104],[-3.2100977095779144,51.466112664673446],[-3.2107471132323333,51.46706507755461],[-3.2113700452229197,51.468024748386824],[-3.2140466139260453,51.46736386704277],[-3.2146605376203317,51.46835906648343],[-3.213313212812013,51.46867488587827],[-3.2138908467164753,51.46966229026645],[-3.215246819405955,51.469361201269855],[-3.215804924932722,51.47036937692805],[-3.2171691146741934,51.47008309187945],[-3.217706689671664,51.47111187709325],[-3.2163346814640748,51.471383258528],[-3.216836254891981,51.47240317657143],[-3.2182156637835706,51.4721467887672],[-3.218695550503589,51.473186839647134],[-3.2191463563833125,51.4742320435216],[-3.220539301771849,51.47400584880392],[-3.220081953571993,51.472945550903894],[-3.2228546756453778,51.47246282797409]],[[-3.216062311100604,51.465685105939976],[-3.2153734640879446,51.464675017451604],[-3.2153734918323127,51.464675056380024],[-3.2166923782156,51.46431560811952],[-3.2173910627783835,51.46534007918182],[-3.216062311100604,51.465685105939976]],[[-3.2122544713045635,51.45692016123666],[-3.2113216348751927,51.45595290976801],[-3.212547405226602,51.45548234855523],[-3.2134932148480986,51.456463024246524],[-3.2122544713045635,51.45692016123666]],[[-3.212075935822282,51.466720096300826],[-3.211416705271461,51.465753312575366],[-3.2127356547018295,51.465393908883186],[-3.213404747183625,51.466375114774536],[-3.212075935822282,51.466720096300826]],[[-3.2079366607842132,51.45596324284653],[-3.2069778612345914,51.455043168814775],[-3.2081766217952854,51.45454621295869],[-3.2091491322430623,51.45547942089325],[-3.2079366607842132,51.45596324284653]]],[[[-3.208289824855535,51.554267999635165],[-3.2064530974875938,51.55288224071125],[-3.2046751810124436,51.55378184801485],[-3.203776405901638,51.55307905885766],[-3.201992976938107,51.55394964522297],[-3.200185730685647,51.554800502128],[-3.2010445864150867,51.55552244606611],[-3.202872292126826,51.55466194897319],[-3.20287228727958,51.554661944862076],[-3.2046751339751363,51.55378187163682],[-3.204674818783553,51.553782031220635],[-3.2055736132314925,51.55448481259515],[-3.203750908489967,51.555374587768156],[-3.2019038241447637,51.556244216345945],[-3.201903821501328,51.55624421442766],[-3.2000322583532634,51.55709374086834],[-3.1991937312075724,51.556362560538574],[-3.1973188289681485,51.557182710995036],[-3.198136739866448,51.557922919556106],[-3.2000320424650486,51.55709383893271],[-3.200031873623659,51.557093915571336],[-3.2008704259052405,51.557825094484635],[-3.202762372404276,51.5569663085126],[-3.2027623794552604,51.55696631454226],[-3.2046298930412718,51.55608705974775],[-3.204629893481778,51.55608706002174],[-3.204629915463525,51.556087049309006],[-3.2046302794920734,51.5560868778968],[-3.2046302746445163,51.55608687378578],[-3.206472439787152,51.55518759028931],[-3.2064724441937695,51.555187593852004],[-3.206472773896033,51.55518742712144],[-3.206472814780246,51.55518740706894],[-3.2064728143392403,51.55518740652068],[-3.208289824855535,51.554267999635165]]],[[[-3.2001860749305884,51.554800336777014],[-3.1993272424346597,51.55407838866357],[-3.197516377241741,51.5549003431565],[-3.1983548492934752,51.55563154004406],[-3.2001860749305884,51.554800336777014]]],[[[-3.183467079741784,51.48945455072645],[-3.183447790401246,51.488795807534856],[-3.183447791718993,51.48879580725988],[-3.1834477885733987,51.48879575432226],[-3.1834477862673696,51.488795671760165],[-3.1834477840705193,51.48879567176131],[-3.1834100823925873,51.48813723888074],[-3.1819717960969967,51.48817717801068],[-3.1820085848223956,51.48882002654213],[-3.1820273960518,51.48946312596997],[-3.183467079741784,51.48945455072645]]],[[[-3.1709129055497884,51.4427903097571],[-3.1695922577024183,51.44227533588656],[-3.1688415357162873,51.44304200450717],[-3.170140896337444,51.44354868052232],[-3.1709129055497884,51.4427903097571]]],[[[-3.166434163226909,51.50390229397185],[-3.1651563023081137,51.503487735940155],[-3.1651562786000564,51.50348776365255],[-3.165532446360487,51.50302635245598],[-3.164243219922425,51.50262576584215],[-3.1638784637000485,51.50307316395891],[-3.1626006504795274,51.50265857830181],[-3.1622352120720163,51.50308807400091],[-3.1609692038270185,51.5026596166075],[-3.1606039640011057,51.50307134403018],[-3.1593501445124796,51.50262914415638],[-3.1593501225563108,51.50262916802694],[-3.1597031433584966,51.50223122728314],[-3.1609691274240643,51.50265970166396],[-3.1613228591300127,51.50224397842195],[-3.160045090530802,51.501829364593746],[-3.1603756121475204,51.50142399874256],[-3.1603756134664422,51.50142399929073],[-3.160375655174618,51.50142394606402],[-3.1603756758098585,51.50142392054792],[-3.1603756749306586,51.501423920273915],[-3.1606948511272694,51.50101495642446],[-3.1606948063493077,51.50101501678396],[-3.1619949604918496,51.501401542233225],[-3.1623133275636803,51.50097483168283],[-3.1610025701812865,51.50060253349881],[-3.1610025473532315,51.500602563678754],[-3.1612986900989415,51.500186839251214],[-3.1599777525305304,51.49982886376772],[-3.1599777411172427,51.499828879954784],[-3.160252396199888,51.499424458477044],[-3.1589216798452333,51.49908091393528],[-3.1586568356589413,51.49947087311277],[-3.157335939484869,51.49911286783536],[-3.1575909839392415,51.49873735427682],[-3.15759098174149,51.49873735372887],[-3.1578354719713118,51.498359136520044],[-3.1578354381749567,51.4983591919379],[-3.159175527183585,51.49868820386609],[-3.1594184468182,51.498292631316055],[-3.158069370885063,51.49797827279112],[-3.158069341039362,51.497978321624764],[-3.1582925659052146,51.497594941479946],[-3.156934933144353,51.49729531340078],[-3.156720312194616,51.49766389845939],[-3.155371274263544,51.49734950914312],[-3.15515531892866,51.49770112182214],[-3.156495367144833,51.49803016413308],[-3.15626030584507,51.4983937789542],[-3.154929651277275,51.49805018961202],[-3.1546941956198538,51.49839683207071],[-3.1544490847916755,51.498740849142195],[-3.154194418281986,51.49908210249473],[-3.152894394808478,51.49869549345278],[-3.1526411848050215,51.49901986343172],[-3.1523789158646873,51.499341454575415],[-3.1536565413725697,51.4997561545552],[-3.1533735739190214,51.50008864695595],[-3.153373574798152,51.500088647230015],[-3.1530813939820157,51.50041795479476],[-3.152779949160813,51.50074413342441],[-3.1540210918445823,51.50119999451261],[-3.1536976890493227,51.501536238047734],[-3.1549259277329846,51.50200553969228],[-3.154579867576209,51.502351512823694],[-3.154224206497601,51.50269363772559],[-3.1538590203573116,51.50303184215157],[-3.1526718025824634,51.502523057469546],[-3.152311554898069,51.50284442613934],[-3.1519423648654574,51.503161825183724],[-3.151564454670089,51.50347506712079],[-3.1515644542304044,51.503475066846605],[-3.1511776898118167,51.503784261343284],[-3.1534326576290335,51.50490274816577],[-3.153850270758656,51.504568879816034],[-3.156136278006999,51.50566258437655],[-3.1565747214889033,51.505299137709564],[-3.1577328804543776,51.505833435899135],[-3.158175931623732,51.50545249526303],[-3.157003008424653,51.5049308992794],[-3.1574207528382408,51.50455820477338],[-3.1574207581087856,51.50455819983452],[-3.1574208393657557,51.50455812739658],[-3.157420837167521,51.50455812657433],[-3.1578280941003443,51.50418093302316],[-3.157828094979589,51.50418093329719],[-3.1578281301153166,51.50418089954837],[-3.157828172718472,51.504180860037124],[-3.157828171399501,51.504180859488926],[-3.158224813183415,51.50379928498652],[-3.1594398506319425,51.50428184707368],[-3.1598391659626954,51.5038825890168],[-3.1598391374180834,51.50388261864971],[-3.161067502698944,51.5043518560703],[-3.161468561569186,51.50393480272077],[-3.160227266339638,51.50347902312018],[-3.160603942485332,51.50307136844941],[-3.160603894623484,51.50307142250104],[-3.1618577370675482,51.50351361195768],[-3.16223513699277,51.50308816317217],[-3.163501168986974,51.50351661043687],[-3.1638784399929034,51.50307319331683],[-3.1638783895047604,51.50307325505099],[-3.1651562228428407,51.5034878295036],[-3.164767225165477,51.503945044279874],[-3.166033305088575,51.50437346442657],[-3.166434163226909,51.50390229397185]],[[-3.1606948695653885,51.501014931731895],[-3.15939473610586,51.50062839513907],[-3.159394711080825,51.50062842723945],[-3.1596918073792577,51.50023025658546],[-3.1596917788454313,51.5002302969159],[-3.1610025113561684,51.5006026125151],[-3.1606948695653885,51.501014931731895]],[[-3.1598392120731003,51.50388254100056],[-3.158610869830151,51.50341329342378],[-3.15898599499641,51.50302322952625],[-3.1577447492986788,51.502567423584686],[-3.1580962812269564,51.50218700328195],[-3.1593500751307695,51.50262921933496],[-3.1589859203443864,51.50302331101503],[-3.1602271859765514,51.503479105983025],[-3.1598392120731003,51.50388254100056]],[[-3.159691833718778,51.500230220095865],[-3.1583811194956777,51.49985789257121],[-3.1586568312691337,51.49947087942291],[-3.1586567812265973,51.49947095294946],[-3.159977694146562,51.49982894580064],[-3.159691833718778,51.500230220095865]],[[-3.1590865393601577,51.50102327715002],[-3.157797425517617,51.50062261955718],[-3.158094562736363,51.50024192202896],[-3.1593946728848286,51.500628476350286],[-3.1590865393601577,51.50102327715002]],[[-3.15783548338415,51.498359119236],[-3.1564954119187862,51.49803009472337],[-3.1567202915663155,51.49766393384952],[-3.156720267865674,51.497663974452166],[-3.158069322604832,51.49797835125425],[-3.15783548338415,51.498359119236]],[[-3.1546572436920264,51.503887672263296],[-3.1534844017177326,51.503366040957594],[-3.1538589461269204,51.50303191074507],[-3.153858944370006,51.50303191239131],[-3.155046187710496,51.5035406885797],[-3.1546572436920264,51.503887672263296]]],[[[-3.164138272318896,51.509490101953],[-3.162995061039285,51.50894333675702],[-3.162453632642125,51.50937626059598],[-3.163581378805674,51.50993540052466],[-3.164138272318896,51.509490101953]]],[[[-3.16263379203565,51.506163681464706],[-3.160230930234309,51.50517229530707],[-3.1597954290070724,51.50557566778044],[-3.1593487880495443,51.50597416096656],[-3.1605217608622174,51.50649573587073],[-3.160982798851236,51.50608438887264],[-3.1621702004095957,51.50659309268821],[-3.16263379203565,51.506163681464706]]],[[[-3.161851877126978,51.50839656009473],[-3.1607087205815754,51.507849772240895],[-3.160198223140325,51.50825794777995],[-3.161325914087314,51.50881710977234],[-3.161851877126978,51.50839656009473]]],[[[-3.1595655918420005,51.50730297319586],[-3.158422490028521,51.50675616296039],[-3.157942924068153,51.50713959166229],[-3.159070559800909,51.50769877516786],[-3.1595655918420005,51.50730297319586]]],[[[-3.150292337184226,51.33976419986829],[-3.1461075306345374,51.33948961882233],[-3.1461075315069698,51.33948961196456],[-3.1461069166210627,51.339489578346694],[-3.1461066700522293,51.339489562211476],[-3.146106669615668,51.3394895649546],[-3.141914893005194,51.33926062040458],[-3.1419148916963486,51.33926063247415],[-3.1377182737166263,51.33907743151125],[-3.137718274152454,51.33907742492791],[-3.1377176803037523,51.33907740552707],[-3.137717411406706,51.33907739376585],[-3.137717410969736,51.33907739678325],[-3.133516353859063,51.3389399473242],[-3.1335163542945494,51.338939936626325],[-3.1293111472581687,51.33884825878217],[-3.1293111472577912,51.33884825603913],[-3.129310901138091,51.33884825330937],[-3.1293103970736995,51.33884824236442],[-3.1293103966365186,51.33884824785051],[-3.1251032864192294,51.338802402825316],[-3.1248411205588065,51.35767725600715],[-3.1285238556659016,51.35771738662729],[-3.1276991658816273,51.37748498482242],[-3.124566884157979,51.37745085253017],[-3.1245668841579035,51.377450850335755],[-3.1245666913044916,51.377450850338334],[-3.124566239413714,51.37745084540695],[-3.1245662394138822,51.377450850344374],[-3.1214329250410846,51.3774508503357],[-3.121445430493133,51.378349648156814],[-3.1214456176522707,51.378349648159286],[-3.11833823120702,51.378383509673824],[-3.118300728786913,51.377484981259784],[-3.1151692233216868,51.377553250035014],[-3.1127338864602923,51.342531870934856],[-3.1168392909601916,51.34244237004967],[-3.1167644053286963,51.34064530678546],[-3.1126090973949068,51.340735895659144],[-3.1126090969572027,51.34073589456189],[-3.1126089971032336,51.340735897844674],[-3.1126083568131673,51.34073591177727],[-3.1126083572495062,51.3407359189092],[-3.1084570372237565,51.3408717411523],[-3.1084570367867577,51.34087173813491],[-3.108456763937577,51.34087175017035],[-3.108456183642495,51.34087176902514],[-3.1084561845163186,51.340871775608534],[-3.1043093657096885,51.34105280264639],[-3.104084914883208,51.339260620403756],[-3.099893138272707,51.33948956495358],[-3.0998931378361445,51.339489562210446],[-3.0998928890774704,51.339489578619535],[-3.0998922768193466,51.33948961196363],[-3.099892278129719,51.339489618821474],[-3.0957083326103954,51.33976414356163],[-3.095708331300803,51.33976413642942],[-3.0957077001954483,51.339764184833925],[-3.0957074707041174,51.33976419986709],[-3.0957074715783737,51.33976420261031],[-3.091531642639874,51.3400842802024],[-3.091531642203057,51.34008427855646],[-3.0915315121250555,51.34008429004222],[-3.091530897653805,51.34008433705715],[-3.0915308994008925,51.3400843439152],[-3.087363702960961,51.340449947408274],[-3.087363705581208,51.34044995700969],[-3.0832082264592127,51.34086081299845],[-3.0832082251493915,51.34086080833483],[-3.0832078064253263,51.3408608545497],[-3.0832073710618664,51.34086089746727],[-3.083207372371449,51.34086090240518],[-3.0790638955418412,51.34131697188889],[-3.079063892049457,51.34131696009252],[-3.0749319667236685,51.341818312214905],[-3.07493197021646,51.34181832263987],[-3.0708161268906036,51.34236440846894],[-3.0708161255804387,51.34236440517672],[-3.0708158290273664,51.34236444783578],[-3.0708153927449957,51.342364505793505],[-3.070815394491257,51.34236451073175],[-3.066715297545361,51.34295535838041],[-3.066715293178397,51.34295534795478],[-3.0626306013511515,51.34359102311002],[-3.062630605717965,51.343591032987185],[-3.0585658054613085,51.34427083696298],[-3.0585658010949124,51.34427082735995],[-3.054519600562561,51.34499496609756],[-3.0545195975060153,51.34499495978678],[-3.0545190323336504,51.34499506753151],[-3.0545187716577566,51.344995114284814],[-3.0545187734052353,51.34499511730318],[-3.0504939543186045,51.3457630943665],[-3.050493953444766,51.34576309299444],[-3.05049384829087,51.34576311432493],[-3.0504932349048177,51.34576323134664],[-3.050493238397994,51.34576323820639],[-3.046490294607559,51.34657495270987],[-3.046490292860556,51.3465749496914],[-3.046490036095427,51.34657500493277],[-3.0464894748167866,51.3465751186759],[-3.0464894783103404,51.34657512498716],[-3.0425097245549066,51.3474303076869],[-3.0425097228076483,51.34743030494266],[-3.042509488375145,51.34743035827053],[-3.042508906469705,51.34743048322682],[-3.0425089104003114,51.3474304898128],[-3.0385534474906573,51.348328903023955],[-3.0385534448700793,51.348328898907525],[-3.0385530741370674,51.34832898778851],[-3.0385526319848064,51.348329088138684],[-3.0385526350418988,51.34832909307834],[-3.034622650007806,51.34927046777],[-3.034622646514097,51.349270462281304],[-3.0346221701395217,51.349270582340594],[-3.0346218449679383,51.34927066027141],[-3.0346218475892757,51.34927066383934],[-3.0307184265830998,51.35025474119337],[-3.0307184217784076,51.35025473433198],[-3.0307178003012423,51.35025489897236],[-3.030717725357812,51.35025491784018],[-3.0307177262322442,51.35025491866377],[-3.026842155621331,51.35128137761527],[-3.0268421543111907,51.35128137569408],[-3.0268419916987424,51.35128142082045],[-3.0268413609895,51.35128158790139],[-3.02684136579314,51.35128159503721],[-3.0229949227171016,51.352350094907784],[-3.022994918785884,51.352350089692656],[-3.0229944585268136,51.352350223707845],[-3.0229941253968637,51.35235031613759],[-3.022994128454941,51.35235031998043],[-3.0191778647339262,51.353460567495326],[-3.0191778608024378,51.353460562554396],[-3.0191774180421667,51.35346069739297],[-3.0191770848865462,51.353460794200664],[-3.0191770879443744,51.35346079804361],[-3.0153921601242692,51.35461245817055],[-3.015392156629874,51.35461245377847],[-3.0153917782798936,51.3546125741239],[-3.0153913771456535,51.35461269609417],[-3.0153913806400485,51.354612700486236],[-3.0116388378461028,51.35580545576988],[-3.011638832167492,51.3558054489069],[-3.011638217899219,51.35580565267808],[-3.0116381687945384,51.35580566826662],[-3.011638169669391,51.355805668816046],[-3.007919241218279,51.35703913214235],[-3.007919237286309,51.35703912774964],[-3.007918859308711,51.35703925849476],[-3.007918476521545,51.35703938539489],[-3.0079184804535153,51.35703938978761],[-3.0042343996535403,51.35831314975443],[-3.004234399216843,51.35831314920537],[-3.004234362379997,51.35831316260884],[-3.004233639710435,51.35831341231399],[-3.004233647137886,51.35831342027632],[-3.000585430279879,51.3596271254544],[-3.000585424163592,51.35962711886474],[-3.000584837354267,51.35962733879043],[-3.000584675527585,51.35962739704767],[-3.000584677274989,51.35962739896962],[-2.9969733117141124,51.360980696071884],[-2.9969733108400796,51.36098069524804],[-2.996973241977455,51.36098072205556],[-2.996972679256363,51.360980932937075],[-2.9969726853730623,51.36098093925263],[-2.9933993795500315,51.362373380418944],[-2.9933993769280445,51.36237337794731],[-2.9933991720725364,51.36237346110852],[-2.993398640876962,51.36237366789317],[-2.993398646994135,51.362373673934606],[-2.989864597608597,51.363804790273605],[-2.9898645871219207,51.363804780112496],[-2.9863700223067524,51.36527449069339],[-2.986370021432836,51.36527448986946],[-2.9863699503543875,51.36527452078269],[-2.9863693027782094,51.365274793232196],[-2.9863693106443283,51.36527480037326],[-2.982916736365047,51.36678205288669],[-2.982916732431287,51.366782049590356],[-2.9829164498382674,51.36678217762576],[-2.982916025531482,51.366782362820814],[-2.982916030775649,51.36678236749023],[-2.979505678790635,51.36832705290728],[-2.9795056713607084,51.368327046589215],[-2.9795051188345427,51.368327305950686],[-2.9795050727558907,51.368327327015486],[-2.979505073630605,51.368327327565154],[-2.976138081772143,51.36990893502673],[-2.976138080897427,51.36990893447701],[-2.976138035688603,51.3699089566388],[-2.976137384812371,51.369909262218066],[-2.9761373935541484,51.369909269360896],[-2.9728148651246404,51.37152727953773],[-2.972814856818627,51.37152727321812],[-2.972814285276329,51.37152756159959],[-2.9728141882686874,51.371527608929455],[-2.9728141900180813,51.371527610028906],[-2.9695370392647895,51.37318157858038],[-2.969537038827434,51.37318157830549],[-2.969537023460755,51.37318158651443],[-2.9695363671496438,51.37318191755991],[-2.969536376767542,51.37318192470438],[-2.966305617680027,51.37487134273754],[-2.9663056115591373,51.37487133834051],[-2.9663052194502217,51.374871550674264],[-2.9663049485476396,51.374871692400255],[-2.966304952920107,51.37487169542344],[-2.9631209027371916,51.37659641111476],[-2.9783134562550218,51.38738713270149],[-2.9754767579457635,51.38897882858534],[-2.974508365598562,51.38831491928059],[-2.971697436445727,51.389948221533686],[-2.969723978506743,51.38864166543685],[-2.9669226979792844,51.39032704537304],[-2.9669226975417966,51.39032704509817],[-2.966922682603589,51.3903270544045],[-2.9669221193864757,51.390327393239176],[-2.9669221290103605,51.39032739956093],[-2.9641686432556313,51.39204269455994],[-2.963146122628434,51.3914113011281],[-2.960422606888103,51.39316798072666],[-2.9593826560984366,51.39254781645914],[-2.962123632774798,51.39077990008185],[-2.9611011706294015,51.39014849004597],[-2.9583427334284123,51.39192764289786],[-2.9562629597559744,51.39068726047162],[-2.9535199328581605,51.39251913466853],[-2.953520137259787,51.392518993150446],[-2.9524631509519783,51.39191021551947],[-2.949754804053175,51.3937831617434],[-2.94975479748874,51.393783158442076],[-2.949754485776164,51.39378338181098],[-2.9497542417934355,51.393783550419776],[-2.9497542466061026,51.39378355316991],[-2.9470988894521093,51.39568533000932],[-2.947098885513184,51.39568532808328],[-2.947098713137954,51.39568545619747],[-2.9470983394048957,51.395685723628645],[-2.947098347281687,51.395685727754994],[-2.94449622246797,51.39761615153908],[-2.9444962124028793,51.397616146312004],[-2.9444957475190803,51.39761650384106],[-2.944495688590968,51.39761654736517],[-2.9444956899032504,51.39761654819007],[-2.9419475231673426,51.39957508867769],[-2.940825202519146,51.39901381166755],[-2.9433897383408367,51.39704272622251],[-2.9422832915092547,51.39646929535587],[-2.9397029093427447,51.39845252385646],[-2.9397029067172116,51.39845252248083],[-2.9397028055391563,51.39845260296709],[-2.9397024523335316,51.39845287452126],[-2.9397024602112225,51.39845287837382],[-2.9371780962793,51.4004635096698],[-2.9326271619162627,51.39826750063524],[-2.935214008715748,51.39620726323626],[-2.9340918528878728,51.395645921427494],[-2.9314894963156464,51.3977184705689],[-2.9314894910640086,51.39771846809159],[-2.9314892772161123,51.39771864466638],[-2.931488964403053,51.397718893769195],[-2.931488971404082,51.397718897346564],[-2.9289451253929246,51.39981905055928],[-2.9289451218917693,51.39981904890767],[-2.9289449779746457,51.39981917210484],[-2.9289445986458467,51.39981948527714],[-2.928944607837248,51.399819489406894],[-2.926459514859088,51.40194703692822],[-2.926459508292822,51.40194703417419],[-2.926459259131195,51.40194725539156],[-2.9264590034009403,51.401947474403485],[-2.9264590099660426,51.40194747743182],[-2.9240334251434685,51.404101779922904],[-2.9240334146383566,51.40410177524194],[-2.9240330073411473,51.404102150617064],[-2.924032925452913,51.404102223442095],[-2.9240329276409316,51.40410222454302],[-2.9216671104003957,51.4062830757294],[-2.921667121782916,51.40628308041208],[-2.919362710018965,51.408488983024974],[-2.919362699949492,51.40848897889295],[-2.919362348390303,51.40848932883857],[-2.919362233427363,51.40848943863343],[-2.919362236930057,51.40848944001103],[-2.9171195709953865,51.41072005618024],[-2.9171195674925916,51.41072005480258],[-2.917119454239878,51.41072017200437],[-2.9171191127814944,51.410720511537455],[-2.9171191224138724,51.41072051539461],[-2.9149388311862388,51.41297522736529],[-2.914938815859945,51.41297522157774],[-2.9128206995762818,51.415254281517015],[-2.91282071315218,51.41525428647879],[-2.9107671099606294,51.41755519403188],[-2.9107671020770094,51.41755519127459],[-2.9107668709531835,51.41755546131641],[-2.91076668750722,51.41755566670964],[-2.910766693638647,51.41755566891517],[-2.9087774733056433,51.41987853856433],[-2.9087774614785005,51.419878534702505],[-2.9087771195294696,51.41987895128853],[-2.908777063948368,51.41987901619616],[-2.9087770661380534,51.419879017023064],[-2.9068527861655955,51.42222320706739],[-2.906852783099668,51.42222320596453],[-2.9068527014428547,51.422223310048096],[-2.906852390789773,51.42222368828405],[-2.906852401741185,51.42222369187017],[-2.9049936563491263,51.42458849038528],[-2.904993648900789,51.424588488177015],[-2.904993455501416,51.42458874538532],[-2.904993273632321,51.42458897683081],[-2.9049932802031586,51.42458897903744],[-2.9032005948509196,51.42697373424411],[-2.9032005834585553,51.426973730931124],[-2.9032002958901537,51.42697413169313],[-2.9032002751360877,51.42697415908423],[-2.903200276012331,51.42697415936018],[-2.901473901000057,51.42937857876252],[-2.901473915899291,51.42937858290519],[-2.899815141227388,51.43180087876299],[-2.8998151254498827,51.431800874618446],[-2.8982237318188515,51.43424138070379],[-2.898223727435792,51.43424137959818],[-2.8982236301184434,51.43424153658545],[-2.898223405934409,51.43424188040204],[-2.898223415576866,51.43424188288923],[-2.8967005540837643,51.43669884971019],[-2.896700547070014,51.43669884805085],[-2.896700400573686,51.43669909683234],[-2.8967002399807,51.436699356284315],[-2.8967002474319745,51.4366993582188],[-2.89524602623575,51.43917260649037],[-2.8952460249204366,51.43917260621352],[-2.8952460049942834,51.43917264155948],[-2.895245765523404,51.43917304925231],[-2.895245777359831,51.43917305201831],[-2.8938606876390174,51.44166177192549],[-2.893860676678486,51.441661769435356],[-2.893860475047018,51.441662153609435],[-2.8938604037418143,51.44166228129373],[-2.893860407687931,51.44166228212433],[-2.892544917786271,51.444165645878364],[-2.892544914278897,51.44416564504857],[-2.8925448592897287,51.44416575630611],[-2.892544646116001,51.44416616185049],[-2.8925446575160008,51.44416616434158],[-2.891299142832519,51.446683474709474],[-2.8912991371315466,51.446683473601006],[-2.8912990488127552,51.44668366406461],[-2.8912988851606043,51.446683994546376],[-2.891298894808091,51.446683996485554],[-2.890123740550989,51.44921449689632],[-2.8901237304640364,51.44921449495618],[-2.8901235767738003,51.44921484849715],[-2.8901234995413323,51.44921501511777],[-2.89012350436601,51.44921501595026],[-2.889019050079457,51.45175800723425],[-2.8890190347266445,51.451758004734906],[-2.8879852673664077,51.454313619950014],[-2.887985283159054,51.454313622450364],[-2.8870233464972284,51.45687905362213],[-2.8870233416717954,51.45687905278951],[-2.887023284174217,51.45687921917335],[-2.88702314839183,51.45687958124918],[-2.8870231589208153,51.45687958291617],[-2.886132929484501,51.459455106653635],[-2.8861329141278445,51.4594551044282],[-2.8853145092989867,51.46204046473296],[-2.885314499206556,51.46204046334098],[-2.8853143967990205,51.46204081944765],[-2.885314340547611,51.462040997079306],[-2.8853143458126724,51.46204099791288],[-2.884568341557622,51.46463441805218],[-2.8845683393633723,51.46463441777343],[-2.884568320988532,51.464634488779446],[-2.8845682082833517,51.46463488052322],[-2.884568219254604,51.464634881917036],[-2.8838947108946917,51.46723603455462],[-2.8838947087003217,51.46723603427584],[-2.883894692078588,51.46723610555959],[-2.883894571953226,51.46723657025089],[-2.8838945851208817,51.46723657164924],[-2.883293803526215,51.46984459471129],[-2.883293791673946,51.46984459358987],[-2.8832937064555004,51.469845015561155],[-2.883293679939784,51.46984513071234],[-2.8832936834518343,51.46984513099382],[-2.8827658062228014,51.47245930178612],[-2.8827658031497654,51.472459301505516],[-2.882765786397565,51.47245939692706],[-2.882765697105486,51.47245984001041],[-2.8827657098368373,51.47245984113369],[-2.8823109098225714,51.47507936413153],[-2.882310900601502,51.47507936356401],[-2.882310854108922,51.475079684671925],[-2.882310816065402,51.47507990266101],[-2.88231082221182,51.47507990322222],[-2.8819292403825156,51.47770405429442],[-2.881929225451968,51.47770405344083],[-2.8816208863203316,51.48033297020164],[-2.881620904766025,51.4803329710625],[-2.881386155527451,51.48296376340349],[-2.881386137957876,51.482963762818684],[-2.881224903461902,51.48559725307441],[-2.8812248955552846,51.48559725278382],[-2.881224886154527,51.48559753501692],[-2.8812248702841132,51.48559779446998],[-2.8812248777513934,51.48559779475968],[-2.8811372841000233,51.48823214265691],[-2.8811372823440244,51.488232142379],[-2.8811372820436127,51.48823219915803],[-2.881137267413633,51.4882326391014],[-2.8811372797143298,51.48823263940107],[-2.881123337663144,51.490867553801216],[-2.8811233262376104,51.490867554051945],[-2.8811233354990033,51.49086796277449],[-2.8811233348719685,51.49086808126976],[-2.881123338388522,51.4908680810027],[-2.881183063839331,51.493502714912715],[-2.881183056367858,51.49350271517161],[-2.88118306949998,51.49350297386122],[-2.8811830755507,51.49350324213662],[-2.8811830834615875,51.49350324187864],[-2.8813164966082376,51.496137349436836],[-2.8813165133098,51.49613734892265],[-2.881523534304272,51.498769073249875],[-2.881523514084589,51.49876907403115],[-2.881804174061183,51.50139866631493],[-2.8818041679054414,51.50139866685087],[-2.8818041970863764,51.50139888360558],[-2.881804230172829,51.50139919308072],[-2.8818042389655054,51.50139919255021],[-2.882158353355014,51.504024800909065],[-2.8821583463198923,51.50402480144322],[-2.8821583867623666,51.50402505031361],[-2.882158423990883,51.504025325235595],[-2.882158431905035,51.50402532470324],[-2.882585961976955,51.50664667517805],[-2.88258596153597,51.506646675451435],[-2.882585963247939,51.50664668423244],[-2.8825860471308538,51.50664719871092],[-2.8825860616414323,51.50664719764348],[-2.883086889178617,51.509263488503294],[-2.8830868834613943,51.509263489040194],[-2.883086927683545,51.50926368964152],[-2.8830869892882673,51.509264012066126],[-2.8830869985234506,51.509264011262125],[-2.8836609832011098,51.511874444437375],[-2.8836609660484807,51.51187444604816],[-2.8843082041726236,51.51447926806572],[-2.88430822220687,51.514479266182335],[-2.8850280117014853,51.51707559839721],[-2.885028002902971,51.51707559947655],[-2.8850280954095076,51.517075902213016],[-2.885028155396112,51.51707611793157],[-2.8850281615553524,51.51707611712119],[-2.8858205535539168,51.51966421064575],[-2.885820535955921,51.51966421280454],[-2.886685474303877,51.52224379312432],[-2.886685473423072,51.52224379339685],[-2.8866854820919534,51.52224381755236],[-2.8866856470714675,51.52224430914884],[-2.886685661151469,51.52224430725713],[-2.887622547494278,51.52481355517174],[-2.8876225395723436,51.52481355652734],[-2.8876226493849453,51.52481383515795],[-2.8876227348025925,51.52481406930371],[-2.8876227414039644,51.524814068219776],[-2.8886314756193356,51.52737271463817],[-2.888631472097203,51.52737271545403],[-2.8886315238024123,51.527372837070324],[-2.8886316774692933,51.52737322715153],[-2.888631688472626,51.52737322525343],[-2.8897119745690905,51.529920490103194],[-2.8897119653256387,51.52992049173059],[-2.8897121131829695,51.529920817339146],[-2.889712190530234,51.529920999625226],[-2.8897121958130034,51.52992099853854],[-2.890863714254354,51.53245609993663],[-2.890863699287601,51.53245610264999],[-2.892086601828404,51.53497928319832],[-2.9072198962713003,51.53203500558465],[-2.9084288829210463,51.534379079472174],[-2.905692797058237,51.53494443628795],[-2.9069839469755783,51.53730563563519],[-2.909703917394757,51.536710548430776],[-2.9084291393537263,51.53437954240282],[-2.9111651561604006,51.53381411513946],[-2.9124238168717387,51.536115398114866],[-3.0062168793524298,51.51554408136701],[-3.0055160628697766,51.5142675425744],[-3.005516061550228,51.51426754284739],[-3.0048513605965366,51.51298407293425],[-3.048827612597143,51.50437116925964],[-3.048432082586379,51.503560833530464],[-3.0884833487871393,51.49617638454949],[-3.088310453807556,51.49579934934299],[-3.0994120690830127,51.4938805145477],[-3.0993016153743436,51.49362286414773],[-3.099198411617549,51.49336411983833],[-3.1033989443730143,51.49273542064633],[-3.1033198951555945,51.49252141703337],[-3.106131467241785,51.49213277418237],[-3.1060688393277407,51.4919486335685],[-3.1074798223815745,51.49176963257252],[-3.1074271355353753,51.49160023659628],[-3.107379193859574,51.49143029537361],[-3.110219406338508,51.49113394186421],[-3.110258632602277,51.49127295681025],[-3.110258631723417,51.49127295708445],[-3.110258637430496,51.49127297518863],[-3.1102586400641825,51.49127298478929],[-3.11025864050365,51.491272984515035],[-3.11030175533272,51.49141157936928],[-3.1131236440690917,51.49105345825165],[-3.1131601928576296,51.4911608714107],[-3.1131601937364772,51.49116087113648],[-3.113199732427242,51.49126784812643],[-3.11319973198779,51.49126784840068],[-3.113199737696735,51.491267863213174],[-3.113199740331688,51.49126786979651],[-3.1131997407711443,51.49126786952225],[-3.1132422724575135,51.4913744210379],[-3.113242273336362,51.49137442076368],[-3.1132877681752062,51.491480471093524],[-3.113287775641501,51.49148048727762],[-3.1132877778373733,51.491480492489444],[-3.1133362318956066,51.491586030657885],[-3.1119556452491537,51.49184118436584],[-3.111900261430316,51.49172054441127],[-3.1105127405499595,51.49196060103113],[-3.110454242781037,51.4918242217609],[-3.1103995665365676,51.491687226250605],[-3.108999464542911,51.49189688995807],[-3.1089429831721307,51.49174403291468],[-3.107537225039555,51.4919383935972],[-3.107599362436346,51.49210657041075],[-3.108999476397391,51.49189692040638],[-3.1089994728853,51.491896910257],[-3.109060211317634,51.49204910809237],[-3.1090602135132146,51.49204911275568],[-3.109060223611587,51.492049138540736],[-3.1090602244903947,51.49204913854082],[-3.1091252182683404,51.492200671401186],[-3.1105127524063576,51.49196062818773],[-3.1105127436238917,51.49196060788886],[-3.110575055485183,51.49209634924312],[-3.1119556562282478,51.491841208779235],[-3.1119556549107736,51.491841205761865],[-3.1120143922430867,51.491961203325474],[-3.1120143975134518,51.49196121347494],[-3.1120144041012354,51.491961226916075],[-3.11207649936374,51.49208058729577],[-3.112076500242608,51.49208058702156],[-3.1121419090986047,51.49219922874194],[-3.1121419174438074,51.492199243280425],[-3.112141922714426,51.49219925260699],[-3.112210639916702,51.492317163593015],[-3.1122106403559204,51.49231716441594],[-3.11221065353272,51.49231718690945],[-3.112210653972195,51.49231718663519],[-3.1122826580205705,51.4924343312206],[-3.1109429151061208,51.49276361625601],[-3.1108618985943783,51.492631802473895],[-3.110861898155194,51.49263180165095],[-3.1107845795025098,51.492499124161526],[-3.10942723253446,51.49279900358395],[-3.1093454620150554,51.492650670267494],[-3.109267851264117,51.49250146813214],[-3.1078945562069595,51.492771576672986],[-3.107979923282504,51.492935699955716],[-3.106614368397733,51.493220713457845],[-3.106712503608576,51.49339875174255],[-3.109427248783713,51.49279903348412],[-3.109427246587969,51.49279902909513],[-3.1095131373853557,51.49294642418253],[-3.109513146169259,51.49294643872125],[-3.1095131549530985,51.49294645353426],[-3.109603170455712,51.49309291532147],[-3.11094293091787,51.492763642590084],[-3.111027604028587,51.49289452791913],[-3.111027603589117,51.49289452819337],[-3.111027605346032,51.49289453093651],[-3.1110276207191916,51.49289455452756],[-3.1110276215980797,51.49289455425336],[-3.1111159588008293,51.493024523465536],[-3.11243648106048,51.492666246826865],[-3.112518208289527,51.492780877935616],[-3.1125182078500555,51.49278087820988],[-3.1125182179533053,51.49278089192559],[-3.1125182245423613,51.49278090097797],[-3.1125182249818284,51.49278090070371],[-3.112603144699174,51.49289462411537],[-3.1126031438202975,51.4928946243896],[-3.112691248577561,51.49300742720474],[-3.112691248138083,51.49300742747899],[-3.112691253409525,51.49300743406258],[-3.112691266148789,51.493007450247184],[-3.1126912670276687,51.49300744997296],[-3.112782511596354,51.493119275949745],[-3.114059767820726,51.49270435235268],[-3.1141423164019484,51.49280129548947],[-3.1141423159624906,51.49280129576373],[-3.1141423295812376,51.49280131085106],[-3.114142333095665,51.49280131524006],[-3.114142333535118,51.4928013149658],[-3.1142275968720643,51.49289736294268],[-3.114227597750946,51.492897362668444],[-3.1143155169873746,51.492992448272624],[-3.1143155161084994,51.49299244854686],[-3.1144061171755784,51.49308659920389],[-3.115633877397029,51.49261705202663],[-3.1157137493050207,51.49269686134134],[-3.115713748865562,51.492696861615606],[-3.115713757652367,51.49269687011933],[-3.1157137651211206,51.4926968775258],[-3.1157958568996547,51.49277580423575],[-3.1157958560207955,51.492775804509996],[-3.1158801751453233,51.49285385629134],[-3.1158801755847723,51.49285385601707],[-3.1159666297990656,51.49293094645615],[-3.1159666394648164,51.49293095468562],[-3.1159666473731025,51.49293096181779],[-3.1160552441514158,51.49300709831636],[-3.116055248105617,51.49300710160816],[-3.116055262164928,51.493007113678026],[-3.1160552626043807,51.49300711340375],[-3.1161459747117455,51.4930822734631],[-3.116145974272286,51.49308227373737],[-3.116238811379439,51.49315646338773],[-3.1173657295823736,51.49259699654471],[-3.117288375346041,51.49253518094515],[-3.117212765864216,51.49247253590785],[-3.1171389103604024,51.492409068842626],[-3.117138909481699,51.49240906801968],[-3.1170668637506886,51.4923448269345],[-3.118253525045277,51.491835785527265],[-3.118311162833553,51.49188717782042],[-3.1183111623941238,51.491887178094714],[-3.118370240290738,51.4919379444716],[-3.1183702398513,51.49193794474589],[-3.118430727981825,51.49198806051654],[-3.1184307358904046,51.491988066825655],[-3.118430739844682,51.491988070117365],[-3.11849260789507,51.49203750922027],[-3.117365714644068,51.49259698420067],[-3.1174447798066405,51.492657943476424],[-3.117444786836515,51.49265794868838],[-3.1174447960632032,51.492657955820526],[-3.117525538762672,51.492718032160724],[-3.117525537883825,51.492718032434986],[-3.1176079647124717,51.49277723214533],[-3.117607964273032,51.4927772324196],[-3.1176920501885026,51.49283553684328],[-3.1198152777955714,51.49162115093666],[-3.1198666893277585,51.49165557075774],[-3.1198666897671763,51.49165557048346],[-3.1199190562269274,51.49168942498202],[-3.1199723503728625,51.49172269660115],[-3.118963108137045,51.492363745099524],[-3.1190354259509974,51.492407345051326],[-3.1190354263904254,51.49240734477704],[-3.1191089224572615,51.49245013335443],[-3.119108933002469,51.4924501393893],[-3.119108936956941,51.49245014158381],[-3.119183618745695,51.49249212235065],[-3.119183626215268,51.492492126191046],[-3.119183634124192,51.49249213085434],[-3.119259477907243,51.492533291464305],[-3.119259493285786,51.492533299693676],[-3.119336476653475,51.492573627526184],[-3.1193364762140425,51.492573627800475],[-3.119414606634746,51.492613126967996],[-3.1194146070741646,51.49261312669371],[-3.119493798426128,51.49265175330399],[-3.1194937979867037,51.49265175357827],[-3.1195740731164565,51.49268951860168],[-3.1195740836618926,51.49268952326502],[-3.119574089813368,51.49268952628246],[-3.1196553924767794,51.49272640365703],[-3.1188191970786217,51.49345811438277],[-3.118922140985284,51.493503115766394],[-3.1189221414247217,51.49350311549211],[-3.119026286118087,51.49354697081577],[-3.1190263072092814,51.49354697959398],[-3.1191316632306196,51.4935896932436],[-3.119131662791167,51.49358969351789],[-3.1191316658669903,51.49358969461516],[-3.1191316838824363,51.49358970202176],[-3.119238218272034,51.493631261375405],[-3.11923821783259,51.49363126164968],[-3.1192382292570913,51.493631265764485],[-3.1192382393633356,51.49363126987925],[-3.1192382398027747,51.493631269604975],[-3.1193459196004967,51.493671662040796],[-3.11934591916103,51.493671662589385],[-3.119454755346817,51.493710891396155],[-3.119454755786276,51.493710890847574],[-3.1195646283969616,51.49374891267979],[-3.119564627957526,51.49374891295407],[-3.119564633230419,51.4937489146],[-3.119564650367258,51.49374892063503],[-3.1195646508066974,51.49374892036075],[-3.1196755699425345,51.493785739330214],[-3.119675569503097,51.49378573960448],[-3.119787546143061,51.493821358725846],[-3.119900457246197,51.49385573849417],[-3.119900456806755,51.49385573876845],[-3.1200143344428923,51.49388888987944],[-3.120014339715831,51.49388889125106],[-3.12001435729226,51.49388889646313],[-3.120129144770313,51.49392080163193],[-3.1207033383278056,51.49309654731502],[-3.120611510107354,51.49307102330576],[-3.1205204088294756,51.493044502995645],[-3.120430063499558,51.493016994067254],[-3.1203405009256495,51.492988504751835],[-3.1210053871821546,51.49219125943736],[-3.1210725582413024,51.49221262605249],[-3.1211403028146383,51.4922332534095],[-3.1212086274906294,51.49225314342756],[-3.121208637157402,51.492253146170675],[-3.1212086411119886,51.49225314726792],[-3.121277497114831,51.49227228568187],[-3.1207033194333857,51.49309654182872],[-3.1207958477878717,51.49312106158031],[-3.1207958653641295,51.49312106596938],[-3.120795866242946,51.4931210662437],[-3.1208890472705915,51.493144569391795],[-3.1208890556193336,51.493144571312016],[-3.120889066165096,51.49314457405517],[-3.120982890193744,51.49316705812936],[-3.120982901178938,51.49316706059822],[-3.120982909088281,51.493167062518424],[-3.121077347551055,51.493188520933636],[-3.121077362051536,51.49318852395113],[-3.1210773664456175,51.49318852504839],[-3.1211723907754645,51.49320895149385],[-3.1211724092306565,51.493208955059984],[-3.1211724096700535,51.49320895533428],[-3.121267989981487,51.493228343225056],[-3.121268004042598,51.49322834596821],[-3.121268009754921,51.49322834706549],[-3.121364117480518,51.49324669009098],[-3.121364117480499,51.49324669063958],[-3.1214607433866415,51.49326398770124],[-3.121460762720712,51.49326399099305],[-3.1215578580267795,51.493280232762906],[-3.1216553924071526,51.49329541402785],[-3.1217533170807803,51.493309527105964],[-3.1217533170807643,51.49330952765456],[-3.1218516399505347,51.49332257473932],[-3.1218516588452716,51.49332257693389],[-3.121851660163503,51.4933225772082],[-3.1219503333269403,51.49333455089219],[-3.121950333326952,51.49333455034359],[-3.1220493071236897,51.49334544568821],[-3.1221486096694058,51.493355264612966],[-3.122148609669417,51.49335526406437],[-3.1222481324221754,51.49336399614448],[-3.1222481403316205,51.493363996693134],[-3.122248152195784,51.4933639977904],[-3.1223479043763116,51.49337164384825],[-3.1221848877380753,51.494264679393744],[-3.1223098515573784,51.49427287891078],[-3.122309856391027,51.4942728791851],[-3.1223098774833047,51.494272880556714],[-3.1224350518479094,51.494279716963476],[-3.1224350518479174,51.49427971641488],[-3.1225603993957622,51.494285188613375],[-3.1225603993957667,51.49428518806479],[-3.1226858559599404,51.49428929331135],[-3.1226858810070515,51.49428929386001],[-3.1228114580013355,51.49429203160568],[-3.1228114580013377,51.49429203105709],[-3.1229370675298567,51.49429340020428],[-3.1230627464928706,51.49429340020428],[-3.123188355142544,51.49429203133138],[-3.1231883801896587,51.494292031057036],[-3.123313932136829,51.494289293860014],[-3.1233139571839397,51.49428929331135],[-3.1234394133086965,51.49428518861338],[-3.1235647608565476,51.49427971696347],[-3.1236899365394164,51.49427288028241],[-3.1236899391759505,51.4942728800081],[-3.1236899611470803,51.49427287891079],[-3.123814926284646,51.49426467911944],[-3.1239396175890763,51.49425512115632],[-3.1240640482320874,51.49424420419932],[-3.1241881790942245,51.4942319307183],[-3.1241881790942116,51.494231930169704],[-3.1243118985517095,51.494218311687305],[-3.124435242187101,51.49420334436425],[-3.1244352645975386,51.49420334134671],[-3.1244352672340647,51.49420334107238],[-3.1245581493498236,51.49418703533419],[-3.124558156819962,51.4941870342369],[-3.1245581735179253,51.49418703204231],[-3.1246805813605776,51.494169389536395],[-3.124680583118256,51.49416938926207],[-3.1246806059680723,51.494169385970174],[-3.1248025017373937,51.494150412733106],[-3.1249238726802355,51.49413011041248],[-3.125044657268157,51.49410848861135],[-3.1250446625411654,51.494108487514076],[-3.125044681436134,51.494108484222195],[-3.125164818141076,51.49408555446392],[-3.1251648313235734,51.4940855517207],[-3.1251648431878394,51.49408554952612],[-3.125284320136229,51.49406131455585],[-3.125284330242801,51.49406131236129],[-3.1252843438647098,51.49406130961806],[-3.1254031500619255,51.49403577108381],[-3.1249224655928134,51.49318852065933],[-3.125016904055604,51.49316706251844],[-3.125110765873291,51.493144569391795],[-3.125203946900937,51.4931210662437],[-3.1252039477797493,51.49312106596939],[-3.1252039653560053,51.49312106158031],[-3.1252964937105054,51.49309654210301],[-3.125388303915336,51.49307102303146],[-3.1259854567304397,51.49388889618882],[-3.1260993334877694,51.49385574507787],[-3.1260993392000818,51.493855743157646],[-3.126099356776507,51.49385573821984],[-3.126212266121987,51.49382135872587],[-3.126212269197832,51.49382135762859],[-3.126212289410666,51.493821351593525],[-3.126324221670371,51.49378574646252],[-3.126324222109767,51.4937857461882],[-3.1263242432013625,51.493785739604505],[-3.126435162776594,51.49374892036073],[-3.126435179913441,51.49374891432571],[-3.1264351851863306,51.49374891267977],[-3.12654505823644,51.49371089084757],[-3.1265450657063187,51.49371088810435],[-3.126545079327898,51.49371088344091],[-3.1266538948616365,51.493671662040754],[-3.126653894422203,51.49367166176648],[-3.126761574659333,51.493631269330635],[-3.1267615887202225,51.493631263844264],[-3.12676159531126,51.493631261375384],[-3.1268681297008336,51.49358970174744],[-3.1268681367312694,51.49358969900426],[-3.126868151231515,51.49358969324355],[-3.1269735054951786,51.493546979593994],[-3.1269735085709742,51.493546978222405],[-3.1269735270258003,51.493546970815785],[-3.12707767215857,51.49350311549209],[-3.1278933044479356,51.49424382113968],[-3.1280168131919472,51.494189830028105],[-3.1280168197829465,51.49418982701058],[-3.128016838677188,51.49418981878088],[-3.128016838237734,51.4941898185066],[-3.1281387949430757,51.49413450056139],[-3.128138795382529,51.49413450083567],[-3.1282592092716164,51.49407785167248],[-3.1282592220140875,51.49407784536309],[-3.1282592338778312,51.49407783987663],[-3.128378020581722,51.49401989900271],[-3.1283780210211702,51.49401989927699],[-3.1283780368393774,51.49401989132167],[-3.128378045187882,51.49401988720684],[-3.1284952183240233,51.493960648866214],[-3.1284952178845664,51.49396064859194],[-3.128610694404188,51.49390015448644],[-3.128610701873814,51.493900150371644],[-3.1286107176918994,51.49390014214199],[-3.128610717252445,51.49390014186772],[-3.1287244848497986,51.49383839858601],[-3.128724485289264,51.49383839886029],[-3.1288365527496347,51.49377540064665],[-3.1288365523101787,51.49377540037238],[-3.1289467957247066,51.4937112169092],[-3.1289467966036155,51.49371121745775],[-3.129055252440312,51.49364582845033],[-3.129055260349163,51.493645823512594],[-3.1290552730912364,51.49364581583163],[-3.129161862260607,51.493579268742266],[-3.1291618745631973,51.49357926078704],[-3.1291618837901534,51.493579255026326],[-3.1292665957471857,51.49351155644376],[-3.129266596186645,51.49351155671803],[-3.129266613322272,51.49351154519667],[-3.1292666155191546,51.49351154382507],[-3.129369418629338,51.49344271487681],[-3.1293694247805703,51.493442710762025],[-3.129369439719269,51.493442700612256],[-3.1293694392798153,51.49344270033799],[-3.1294703019093157,51.49337276215157],[-3.1294703023487624,51.493372762425835],[-3.1294703150905017,51.49337275337336],[-3.1294703216810427,51.49337274870995],[-3.129569213075517,51.4933017224129],[-3.129569224499038,51.49330171390906],[-3.129569233286409,51.493301707599755],[-3.1296661218134765,51.4932296154168],[-3.129666122252928,51.49322961569107],[-3.129666136312577,51.49322960499271],[-3.129666142024311,51.49322960060365],[-3.1297610017643613,51.49315646283913],[-3.130887947555882,51.49371591852678],[-3.1309962343425384,51.49362938058882],[-3.130996234782,51.49362938086309],[-3.1309962536742333,51.49362936550121],[-3.1309962567496608,51.493629362758035],[-3.1311020874663704,51.493541675038365],[-3.1311020988894436,51.49354166516291],[-3.131102107237122,51.49354165830492],[-3.1312054695882092,51.49345283068568],[-3.1312054774964024,51.493452823553426],[-3.1312054906768307,51.49345281230635],[-3.131205490237365,51.49345281203209],[-3.131306351278747,51.49336287387177],[-3.1313063547934687,51.49336287057996],[-3.131306372367186,51.49336285494383],[-3.1313063719277254,51.49336285466956],[-3.1314047035487658,51.49327182984038],[-3.1314047039882325,51.49327183011464],[-3.1315004943350093,51.4931797295956],[-3.1315005035609853,51.49317972054316],[-3.131500513665633,51.49317971066777],[-3.1315937139806684,51.49308658055043],[-3.130365951562937,51.49261703611644],[-3.1304435798833716,51.49253636834108],[-3.1304435803228285,51.49253636861534],[-3.130518957155387,51.49245485088742],[-3.1305189668205404,51.49245484018925],[-3.1305189712137835,51.49245483525162],[-3.130592056587214,51.4923725084482],[-3.1305920557083637,51.49237250817397],[-3.1306628131680574,51.492289416189095],[-3.1306628180004927,51.49228941015425],[-3.130662827665497,51.49228939890748],[-3.130731251069826,51.49220554723166],[-3.1307312515092804,51.49220554750593],[-3.1307973333997383,51.492120946841275],[-3.130797344821527,51.49212093120562],[-3.1307973465788126,51.492120929285434],[-3.130861040837998,51.4920356380641],[-3.1308610500632534,51.492035625445844],[-3.1308610526989984,51.492035621605524],[-3.1309223523086405,51.4919496494322],[-3.1309223606551204,51.49194963708831],[-3.130922364608773,51.491949631602104],[-3.130981250250847,51.491863005911476],[-3.1323115441465217,51.49220687083295],[-3.132242835798191,51.49230795036172],[-3.132171310407174,51.49240826834781],[-3.1321713042571573,51.49240827657718],[-3.1320969815760096,51.492507804212785],[-3.1333966517524385,51.49289464743204],[-3.13348158948021,51.49278090042928],[-3.1334815921157793,51.492780896588904],[-3.1334816057332904,51.49278087848413],[-3.1334816052938286,51.492780878209864],[-3.133563332522797,51.49266624682682],[-3.134883854782457,51.4930245234655],[-3.134972191985415,51.4928945550762],[-3.1349721972562508,51.492894547121054],[-3.1349722099941744,51.49289452819331],[-3.135056883104676,51.49276364204139],[-3.1350568896930575,51.49276363161745],[-3.135056898916799,51.4927636170788],[-3.1351378996165797,51.49263182853358],[-3.1351379026910404,51.49263182332164],[-3.1351379163067614,51.49263180110222],[-3.1351379158672796,51.49263180082798],[-3.1352152340809263,51.492499124710065],[-3.1338579040454047,51.49219922929052],[-3.133923326956362,51.492080562882165],[-3.1339233260774892,51.492080562607946],[-3.133985407724632,51.491961227739075],[-3.133985408603503,51.491961228013295],[-3.1340441573549715,51.491841208504894],[-3.1340441617465755,51.491841198629814],[-3.1340441683343814,51.491841185462974],[-3.1340995407345376,51.491720568824675],[-3.134099546004451,51.491720557029446],[-3.134099551713501,51.49172054413697],[-3.1341515433959333,51.491599342717286],[-3.1341515477870963,51.491599331196426],[-3.134151553056986,51.49159931940117],[-3.1342001473586385,51.49147757023616],[-3.1342001482374306,51.49147757023608],[-3.1342453416714267,51.49135528485071],[-3.1342453460622073,51.49135527195836],[-3.1342453500141274,51.49135526126041],[-3.134287107915645,51.49123252716249],[-3.135698057811158,51.49141157936927],[-3.135741173519399,51.491272985886425],[-3.135741178787002,51.49127296750798],[-3.1357411818599323,51.49127295735868],[-3.1357804072447637,51.491133941864156],[-3.1357804081235487,51.49113394186406],[-3.135815755511245,51.490994464587395],[-3.1358157546324636,51.490994464587494],[-3.1358471906994296,51.49085465226077],[-3.1358471898206486,51.490854652260865],[-3.1358747071439153,51.49071454548391],[-3.135874708022693,51.49071454548381],[-3.135898313217341,51.49057410448563],[-3.13589831189918,51.49057410448577],[-3.13591797912071,51.49043348397476],[-3.1359179804388684,51.49043348397463],[-3.1359337198095125,51.49029261428032],[-3.1344966146247266,51.49023789395936],[-3.1345071019372113,51.490112593211165],[-3.134507102815976,51.49011259321107],[-3.134514087289861,51.4899871729356],[-3.134514087724199,51.48998715291192],[-3.1345140881621294,51.48998714715165],[-3.1345175636967726,51.48986169430209],[-3.1345175650149146,51.48986169430197],[-3.134517533394093,51.489736198455226],[-3.134517532950775,51.489736182820366],[-3.1345175329481485,51.489736172397095],[-3.1345139937836253,51.48961072187665],[-3.134513993342796,51.48961071611647],[-3.1345139928983747,51.48961069609288],[-3.1345069453368857,51.48948527745798],[-3.134506944458132,51.48948527745807],[-3.134496392059133,51.48935995269875],[-3.1330593433857725,51.48941495776675],[-3.1330685751124907,51.48952463799273],[-3.1330747378378696,51.489634372241696],[-3.1330778315391057,51.48974415722256],[-3.1330778557475796,51.48985396056863],[-3.133074809997376,51.489963762256295],[-3.133068695570199,51.49007349727696],[-3.1330595120074904,51.49018317879639],[-3.1330472689302593,51.490292700386036],[-3.1316119178335335,51.490222295683175],[-3.1315987921831714,51.49031607970089],[-3.131583053415029,51.4904096680592],[-3.1315646936125128,51.49050310464511],[-3.1315437268064485,51.49059631621917],[-3.1315437263673185,51.49059631759069],[-3.131520159566913,51.490689275349915],[-3.1314939958303873,51.49078196832066],[-3.1314652412893316,51.490874372088385],[-3.131433910859178,51.49096643947113],[-3.1314000172609173,51.4910581350817],[-3.1313635525745913,51.491149479216375],[-3.1313245523602347,51.49124038244964],[-3.131283003866868,51.491330874952496],[-3.131238940900339,51.491420881288356],[-3.1311923599335065,51.49151040968353],[-3.1311432978500724,51.491599391009814],[-3.12978602125193,51.49129944842372],[-3.1297860203733476,51.49129944979526],[-3.1298269081219887,51.49122529879505],[-3.129826910318346,51.491225294680476],[-3.129826916468168,51.49122528343396],[-3.1298657234938845,51.49115070052351],[-3.129902454637519,51.49107567528134],[-3.1299370686180943,51.491000291097905],[-3.1299370708143046,51.491000286160435],[-3.12993707564599,51.49100027546259],[-3.129969576866036,51.4909245257564],[-3.1299695781837533,51.49092452273906],[-3.1299695830152947,51.490924511218324],[-3.1299999613821097,51.490848419032616],[-3.1300282138310482,51.4907719917752],[-3.13002821602694,51.49077198491766],[-3.1300282191014452,51.490771976962876],[-3.1300543245602994,51.490695269221554],[-3.130054326317091,51.49069526428412],[-3.1300543298305064,51.49069525331205],[-3.130078286553421,51.49061827386581],[-3.130078287870945,51.49061826975129],[-3.130078291384224,51.490618257956335],[-3.1301000932335334,51.490541028202],[-3.1301197358274506,51.49046355774141],[-3.1301197362664084,51.49046355499842],[-3.1301197397794485,51.490463541831986],[-3.1301372134681418,51.49038586906829],[-3.1301525103596166,51.49030803295304],[-3.13016563134257,51.49023002690391],[-3.1301656317814803,51.49023002388662],[-3.130165633976335,51.49023001072025],[-3.130176569843183,51.49015188877493],[-3.1301765711593514,51.49015187615721],[-3.130176571598346,51.49015187368852],[-3.1301853219221694,51.490073644350815],[-3.130185321921869,51.49007364243074],[-3.1301853236771553,51.490073628167224],[-3.1301918858365756,51.489995315301584],[-3.1301918867131806,51.4899953015867],[-3.1301918867129666,51.48999530021521],[-3.1301962585260927,51.48991692796025],[-3.1301984386872053,51.489838503722254],[-3.130198439565966,51.48983850372219],[-3.1301984272115067,51.48976005246234],[-3.1301962219221533,51.489681629862844],[-3.130191825470196,51.489603258141464],[-3.1301918254699803,51.489603256769975],[-3.130191824589067,51.48960324305521],[-3.1301852378658994,51.48952493098916],[-3.130185236106149,51.489524916725834],[-3.130185236105846,51.48952491480576],[-3.130176461762752,51.48944668653259],[-3.130165497173493,51.48936853464596],[-3.1301523515872374,51.48929053018751],[-3.130137030730403,51.489212695648476],[-3.130119533294911,51.489135025267856],[-3.1301195306569625,51.489135014296146],[-3.130119529338031,51.4891350090846],[-3.1300998632494768,51.489057541262454],[-3.1300998623707295,51.489057541262504],[-3.1300780333551432,51.488980298215424],[-3.1300540528531244,51.48890332081171],[-3.1300540502157084,51.48890331313157],[-3.130054048017755,51.488903306],[-3.1300279199951997,51.488826601369816],[-3.130027916478675,51.48882659122105],[-3.1300279142809337,51.488826585460956],[-3.129999640067691,51.488750162654576],[-3.1299692398929424,51.48867407405991],[-3.1299692363767764,51.48867406610552],[-3.1299692337395126,51.48867405924827],[-3.129936711129474,51.48859831336663],[-3.1299367045367403,51.48859829882931],[-3.1299367040972457,51.488598298006444],[-3.1299020691706585,51.48852291787643],[-3.12990206345714,51.48852290635631],[-3.1299020621385805,51.488522903339124],[-3.1298653254533817,51.48844791227344],[-3.1298653188609804,51.488447899656194],[-3.129865317542471,51.488447896913314],[-3.129826490535067,51.48837331822454],[-3.1298264896560464,51.48837331630451],[-3.129826482624222,51.48837330313869],[-3.129785575851699,51.488299157945015],[-3.1297855749727663,51.48829915657359],[-3.1297855679410045,51.488299143682056],[-3.129742586246594,51.488225440484214],[-3.1283940872409453,51.48854028336653],[-3.1284284712586334,51.488599246482885],[-3.1284612077765583,51.48865858654871],[-3.128492267784225,51.48871824953033],[-3.128521661823,51.48877825517792],[-3.128549373626333,51.48883857112649],[-3.1285753970353736,51.48889918448559],[-3.1285997188588865,51.48896006371289],[-3.1285997201774007,51.48896006700436],[-3.128622336453451,51.4890212022264],[-3.1286432419012606,51.48908257863238],[-3.1272324247195105,51.48926183428929],[-3.1272167506133397,51.48921581146684],[-3.127216747536935,51.48921580296378],[-3.127216747097463,51.48921580186659],[-3.1271997887494476,51.489169957106114],[-3.1271997878705005,51.48916995491177],[-3.1271997852336026,51.48916994778016],[-3.1271815474817046,51.48912429397287],[-3.1271815439659156,51.4891242851955],[-3.127162029011096,51.489078827826646],[-3.127141250480402,51.48903359926209],[-3.127119206619395,51.48898859538682],[-3.1270959031445034,51.48894382936612],[-3.1270713615918737,51.48889934179439],[-3.1270713589552384,51.488899337131436],[-3.127071356758045,51.48889933329136],[-3.127045570099734,51.48885511072755],[-3.125697034384042,51.4891699225669],[-3.1256790258091063,51.489140638536206],[-3.1256790231726095,51.48914063414753],[-3.1256790222937942,51.48914063305036],[-3.125660198276786,51.489111549545996],[-3.1256601973979588,51.48911154817453],[-3.1256601943220743,51.48911154351155],[-3.125640560137314,51.48908266985909],[-3.1256405592584993,51.48908266876192],[-3.1256405561826193,51.48908266409895],[-3.12562011798306,51.48905400852675],[-3.1255988775275863,51.489025574325915],[-3.125598875330562,51.48902557158299],[-3.125598873133536,51.48902556856578],[-3.1255768453631148,51.488997375484885],[-3.125554023687848,51.48896941584335],[-3.125530433154723,51.48894172036137],[-3.1255304292001362,51.48894171597271],[-3.12553042832133,51.488941714875544],[-3.1255060623402917,51.48891427477531],[-3.125480933215505,51.48888710486811],[-3.1254550484176207,51.48886021283359],[-3.1254284206899414,51.48883361183723],[-3.1278568323998837,51.48786767327978],[-3.1278020749790416,51.487815039943456],[-3.127745876647353,51.487763032035595],[-3.1277458770866913,51.48776303176129],[-3.1276882229069654,51.487711633919815],[-3.127688218073587,51.48771162980556],[-3.1276882110431745,51.48771162349702],[-3.1276291396852867,51.48766087137683],[-3.127629140124609,51.48766087110253],[-3.1275686480755036,51.48761076113579],[-3.127568648514832,51.48761076086148],[-3.127506763897869,51.48756131636015],[-3.1275067586251604,51.4875613122459],[-3.127506752034271,51.48756130703452],[-3.127443507805719,51.48751255460191],[-3.1274435082450487,51.4875125543276],[-3.1274434950633823,51.487512544727714],[-3.1274434946239773,51.48751254417913],[-3.1273788855125844,51.48746447915022],[-3.1262841822225864,51.488048249834165],[-3.1262347346683987,51.48801274050173],[-3.126234729395789,51.48801273693602],[-3.1262347245625555,51.48801273337029],[-3.1261842819668098,51.48797776139079],[-3.1261842815274705,51.487977761665086],[-3.126132879920042,51.48794335144864],[-3.1261328720111687,51.487943346237216],[-3.126132869814265,51.48794334486579],[-3.1260805135892835,51.48790949997691],[-3.127107325768672,51.487279481960236],[-3.1270362380550365,51.487235105707995],[-3.1250181290305443,51.48851732033478],[-3.124981984829857,51.48849553083441],[-3.124981979117936,51.48849552754296],[-3.12498197736042,51.488495526445796],[-3.124945229959997,51.48847413439989],[-3.124907881556625,51.48845314145363],[-3.124907881995983,51.48845314117934],[-3.124869953240197,51.488432558303685],[-3.1248314546768245,51.48841239208105],[-3.124831452919321,51.48841239125819],[-3.1248314467680602,51.48841238796672],[-3.1247923990474336,51.48839264854518],[-3.124792392896182,51.488392645528016],[-3.1247923906992985,51.488392644430874],[-3.1247527973360043,51.48837333318132],[-3.124712661405275,51.48835445257183],[-3.124712656132788,51.48835445010325],[-3.124712653057176,51.488354448731826],[-3.124672002678429,51.48833601137907],[-3.124671996966581,51.488336008910494],[-3.1246719952090922,51.48833600808763],[-3.12463082730616,51.48831801289398],[-3.123815380043358,51.489058759168344],[-3.1237945527421647,51.48904998895471],[-3.123773478525395,51.48904144530791],[-3.123752169255987,51.489033132616484],[-3.1237306258125286,51.48902505170318],[-3.1237088684060366,51.48901720969946],[-3.1236868913244096,51.48900960468518],[-3.123664704673036,51.489002240226],[-3.123642311087913,51.48899511714467],[-3.1236197259468734,51.48898824037833],[-3.1235969571583673,51.48898161239553],[-3.1235969545221223,51.48898161157264],[-3.123596952325259,51.48898161102406],[-3.1235740016464764,51.48897523182465],[-3.123550871713373,51.4889691025057],[-3.1235275730705916,51.48896322608433],[-3.123527572191844,51.48896322581003],[-3.1235275686768644,51.48896322498715],[-3.1235041092328015,51.48895760310901],[-3.1234804968958305,51.48895223796833],[-3.123456743089314,51.48894713230795],[-3.123913562790006,51.48809476275861],[-3.1239610792906256,51.48810497663393],[-3.124008293541571,51.488115704524304],[-3.1240552116953606,51.48812694780155],[-3.1241018069520132,51.488138700157435],[-3.124101809148839,51.48813870070602],[-3.1241480665711894,51.48815095857521],[-3.1241939808880836,51.488163720312414],[-3.1242395274961723,51.48817697906083],[-3.1242846976092595,51.48819073235236],[-3.1243294705781413,51.4882049738788],[-3.124329476729307,51.48820497579881],[-3.1243294798048935,51.48820497689596],[-3.124373842888955,51.48821970254349],[-3.124417803997851,51.48823491478113],[-3.1244178061946957,51.488234915604],[-3.1244613279830067,51.48825060208932],[-3.1245043972704707,51.48826675733709],[-3.1245470250422693,51.48828338601062],[-3.124589163847078,51.488300469458935],[-3.1246308360935995,51.4883180164597],[-3.1262616596874806,51.486836510186855],[-3.1261783342500493,51.48680142417736],[-3.1261783171148614,51.48680141704611],[-3.1260940406732614,51.48676725126744],[-3.1260940349615587,51.48676724907322],[-3.1260940235381156,51.48676724441049],[-3.1260087873021636,51.486733995294955],[-3.125922635204887,51.48670167984584],[-3.125922634765556,51.48670168012014],[-3.1258356085428027,51.486670313695],[-3.1258355958013917,51.486670309306554],[-3.125835590529073,51.48667030738662],[-3.1257476844656207,51.48663988861218],[-3.125747684026295,51.48663988888649],[-3.1256589596285322,51.48661043860593],[-3.1256589600678772,51.48661043833161],[-3.125569388773536,51.48658194749195],[-3.1254790698730925,51.48655444763326],[-3.125479059767914,51.48655444461622],[-3.125479051420152,51.486554442147735],[-3.1253879800761553,51.486527931074015],[-3.1253879791974426,51.48652793079973],[-3.125387961183883,51.48652792558846],[-3.125296162874297,51.48650241070349],[-3.125203646381404,51.486477894748376],[-3.1252036318827483,51.48647789118279],[-3.1252036270498507,51.4864778898114],[-3.125110456074979,51.4864543897897],[-3.125110448166631,51.48645438786976],[-3.125110439379572,51.48645438567554],[-3.125016606009177,51.486431899940065],[-3.1249221809736065,51.486410445220166],[-3.1254027046578785,51.48556317623824],[-3.125283919245662,51.48553764241422],[-3.1251644381151116,51.48551340700309],[-3.1251644337216864,51.48551340618028],[-3.1251644135119143,51.485513402066196],[-3.1250442946471675,51.48549047603668],[-3.12492350684557,51.48546885390142],[-3.1245388162537977,51.48633498583803],[-3.124635430509284,51.48635228085355],[-3.124731550172997,51.48637062607857],[-3.12482714713257,51.48639001685165],[-3.124827150647379,51.48639001767449],[-3.1249221612027798,51.48641044055745],[-3.1244416241002653,51.48725770854453],[-3.1243703654554347,51.487242391031224],[-3.1242986596167355,51.487227846173056],[-3.1242265856653115,51.48721409015185],[-3.1241541106459643,51.487201116384185],[-3.12408131363953,51.48718893940629],[-3.124081311003398,51.487188939132],[-3.124081298701409,51.487188936937756],[-3.124008172674635,51.487177554829],[-3.1240081612513713,51.487177553183315],[-3.124008157736524,51.487177552634755],[-3.123934724653635,51.487166968960224],[-3.12393472289621,51.48716696868594],[-3.1239347092761784,51.48716696676597],[-3.1238609897832634,51.48715718454219],[-3.1238609805567967,51.48715718344507],[-3.1238609766025953,51.48715718289652],[-3.1237869944211494,51.487148205414364],[-3.1237127596525847,51.48714003377048],[-3.123712755259037,51.487140033221905],[-3.1237127442751604,51.48714003212478],[-3.123638292503453,51.48713267098152],[-3.1234255056886235,51.48802161421942],[-3.1234751497835926,51.488026523114264],[-3.1235246317704815,51.48803196988438],[-3.123573964392532,51.488037956175646],[-3.123286941122465,51.48891872834508],[-3.1232622796258145,51.488915735553554],[-3.123237528502026,51.48891301101902],[-3.1232127101586316,51.48891055721003],[-3.123187832064512,51.48890837440088],[-3.1231628867499235,51.48890646231716],[-3.1231379014554554,51.48890482287894],[-3.12311286431764,51.4889034555376],[-3.123087797743971,51.48890236111596],[-3.1230627096426877,51.4889015404369],[-3.123037596937738,51.48890099295183],[-3.123012472809813,51.48890071893498],[-3.1229873403340602,51.48890071893497],[-3.1229622214785904,51.48890099267751],[-3.122937108773641,51.48890154016261],[-3.1229120153999017,51.48890236111596],[-3.1228869492656064,51.48890345526331],[-3.1228619169608742,51.48890482260465],[-3.122861916082131,51.48890482260465],[-3.1228619121277896,51.48890482287894],[-3.122836922000238,51.48890646259146],[-3.12281198635182,51.488908373852276],[-3.1227870981521573,51.48891055748433],[-3.1227622846418503,51.48891301101902],[-3.122737538790518,51.488915735004966],[-3.1227375374724025,51.488915735279264],[-3.122737533957432,51.488915735553554],[-3.122712868067063,51.48891872861937],[-3.122688289167186,51.48892199021649],[-3.1226638051660838,51.488925518973566],[-3.1226394288051327,51.48892931324488],[-3.1226151574477035,51.48893337330478],[-3.1226151561295867,51.48893337357907],[-3.122615152614607,51.488933374127654],[-3.1225910029564528,51.48893769695903],[-3.1225669684066077,51.48894228420768],[-3.1225430748876604,51.488947130936474],[-3.1225193162480394,51.48895223796833],[-3.1225193114149294,51.48895223906548],[-3.12249570435045,51.48895760310903],[-3.119470877911328,51.48390617672314],[-3.1196361365138756,51.48386862706254],[-3.119802408235552,51.48383288618357],[-3.119802419658111,51.48383288371521],[-3.119969710666836,51.48379895079084],[-3.1201378979684904,51.48376685077476],[-3.120306933255545,51.483736592165215],[-3.120476850374789,51.48370816947339],[-3.1206474657072514,51.4836816131387],[-3.120818864501486,51.483656910267804],[-3.120990896967759,51.48363408252413],[-3.1211635099682633,51.483613136487214],[-3.1213367188997925,51.48359407023466],[-3.1215104438264203,51.48357689254032],[-3.1216846100844657,51.483561611629995],[-3.1218591496004517,51.483548232986976],[-3.122034093148274,51.48353675414123],[-3.1222092606281806,51.48352718715877],[-3.1223847249891175,51.48351952737597],[-3.1225603592894977,51.48351378109982],[-3.1227361288450695,51.483509949152406],[-3.122911963386766,51.48350803290455],[-3.1230878497570997,51.48350803290455],[-3.1232637067040896,51.48350994942666],[-3.123263707143408,51.483509949152364],[-3.1234394406747783,51.483513780551284],[-3.123439444189333,51.48351378055128],[-3.123615089472706,51.48351952737597],[-3.1237905525156844,51.48352718715877],[-3.1237905529549987,51.48352718688447],[-3.12396575558053,51.48353675606101],[-3.124103712441757,51.48264207743811],[-3.1243036050861175,51.48265519363132],[-3.150292337184226,51.33976419986829]],[[-3.1302039527295134,51.49277580780182],[-3.1301196546935817,51.492853840106825],[-3.128932964331192,51.49234481349322],[-3.129003202929599,51.49227979729404],[-3.129003214792017,51.49227978604727],[-3.1290032161100525,51.49227978467574],[-3.1290716269306063,51.492214012567615],[-3.1302860475833474,51.49269687752583],[-3.1302039527295134,51.49277580780182]],[[-3.1297430593606044,51.49137315571642],[-3.1296980426461563,51.49144638473686],[-3.1296980391318363,51.491446390497295],[-3.1296509759320874,51.4915191258821],[-3.1296509763715328,51.49151912615637],[-3.1296019022617356,51.491591314687575],[-3.1295508080088954,51.49166297117522],[-3.128240585123001,51.491290306359055],[-3.1282814540280643,51.49123299221192],[-3.128281454467488,51.49123299248619],[-3.1283207220693936,51.49117523074517],[-3.1283207242659654,51.49117522745351],[-3.1283207299770877,51.49117521895006],[-3.1283583699218283,51.49111704939091],[-3.128358374754235,51.49111704171039],[-3.128358376950797,51.49111703814444],[-3.1283943918793065,51.49105845555698],[-3.1284287563171223,51.490999501362616],[-3.129786013344949,51.491299462687586],[-3.1297430593606044,51.49137315571642]],[[-3.1275792632894572,51.49326714208804],[-3.1275792597743446,51.49326714400826],[-3.1274816195226918,51.49331650657774],[-3.127382590409688,51.493364809510766],[-3.127282265589514,51.4934120075416],[-3.127282265150073,51.49341200726733],[-3.1271806134288465,51.49345811520576],[-3.1270776919314893,51.49350310671392],[-3.126262082123826,51.492762396946716],[-3.1263444039701174,51.4927264107892],[-3.1263444105610168,51.49272640777176],[-3.1263444206670794,51.492726403382726],[-3.126425723769846,51.492689525459554],[-3.126425724209284,51.492689525733844],[-3.1265059988996815,51.492651760984764],[-3.1265060046117537,51.49265175824162],[-3.1265060155965414,51.49265175302966],[-3.1265852060697363,51.49261312696801],[-3.126585219690804,51.492613120110185],[-3.1265852218877654,51.49261311901294],[-3.126663321551245,51.49257363575555],[-3.1266633285814587,51.49257363218947],[-3.1266633364904566,51.49257362807479],[-3.1267403198580985,51.49253329969367],[-3.127675493147369,51.49321673085828],[-3.1275792632894572,51.49326714208804]],[[-3.1273134002095504,51.49218170834695],[-3.127246149108821,51.49222833871361],[-3.1261845463327287,51.49162114353035],[-3.1261331268917525,51.49165556856328],[-3.1261331242554826,51.49165557020913],[-3.1260807569169553,51.49168942498202],[-3.1271077637213662,51.492319381780135],[-3.1270366918253956,51.49236375305457],[-3.1269643907079057,51.492407342582545],[-3.126890875747512,51.492450141309526],[-3.126890876186934,51.492450141583795],[-3.1268161943981787,51.49249212235064],[-3.1267403352366125,51.49253329119],[-3.1258051863985603,51.491849854683956],[-3.1257474260622957,51.49188011258735],[-3.1256888412970842,51.49190972945044],[-3.1256294470430683,51.4919386995114],[-3.1255692406648636,51.491967023317684],[-3.1255082507238,51.49199468687832],[-3.1254464987512782,51.49202168113986],[-3.124630941373139,51.49128095956799],[-3.1246721018402472,51.4912629673386],[-3.1247127613491674,51.49124452525593],[-3.124752906278339,51.4912256396295],[-3.1247925010370285,51.491206327192465],[-3.1248315583669837,51.49118658218496],[-3.124831561882051,51.49118658026484],[-3.1248315658365096,51.49118657834469],[-3.1248700650862493,51.491166410367946],[-3.12490798692261,51.49114583066897],[-3.124907989998292,51.49114582902315],[-3.1249079943921148,51.4911458265544],[-3.1249453427692866,51.49112483239073],[-3.1249820900059757,51.49110343912396],[-3.1249820917634925,51.491103438026755],[-3.124982097475452,51.4911034347351],[-3.125018248844145,51.49108163989704],[-3.1250537858907506,51.49105945418614],[-3.125088690161339,51.491036889398],[-3.125088695873257,51.49103688555775],[-3.125088696752011,51.49103688500914],[-3.1251229717616695,51.4910139386756],[-3.1251565929053333,51.49099062698115],[-3.12515659773848,51.49099062341521],[-3.1251565990566093,51.49099062259229],[-3.1251895636982474,51.4909669482805],[-3.125221867444335,51.49094291382067],[-3.1252218687624547,51.49094291272347],[-3.1252218740349647,51.49094290888322],[-3.125253494917027,51.490918530734085],[-3.1252844351323295,51.4908938072504],[-3.1253146801819907,51.490868749953414],[-3.1253442195215566,51.49084336734707],[-3.1253730505153423,51.490817661352025],[-3.1253730500759467,51.49081766107775],[-3.1254011525135996,51.490791650621375],[-3.125401152074202,51.49079165034709],[-3.1254285233201906,51.490765337350055],[-3.125428522880789,51.490765337075764],[-3.1254551541485074,51.49073873004195],[-3.1254551537091104,51.49073872976766],[-3.125481032257773,51.490711841864055],[-3.125506159845641,51.49068467034815],[-3.125530523292729,51.49065722948413],[-3.125530524171442,51.490657228386915],[-3.125530528125701,51.49065722399809],[-3.1255541160096243,51.49062952750149],[-3.125554117767066,51.490629525581376],[-3.1255541208425672,51.490629521741155],[-3.1255769353611385,51.49060156686942],[-3.1255989655314544,51.490573367063796],[-3.1256201990526726,51.49054493768556],[-3.1256202021281405,51.490544933571044],[-3.125620203006847,51.490544932199555],[-3.125640639001483,51.49051627571784],[-3.1256602743952455,51.49048739542469],[-3.125660277470685,51.49048739076159],[-3.1256602783493737,51.49048738939008],[-3.12567909952365,51.490458305035546],[-3.1256791004023623,51.49045830393834],[-3.125679103038415,51.49045829954954],[-3.1256971086765755,51.4904290146999],[-3.1257142992191542,51.49039952633826],[-3.125730655775853,51.490369866832374],[-3.127096056042496,51.49065502682051],[-3.1270715193000496,51.49069952075069],[-3.127045742529804,51.49074373987316],[-3.1270187301218324,51.49078767650664],[-3.126990488223651,51.49083132050114],[-3.1269610383594872,51.49087463811655],[-3.1269303774512567,51.49091763483801],[-3.1268985208729734,51.49096028817178],[-3.126865477408896,51.49100258714472],[-3.1268312606762136,51.49104451447475],[-3.126795868915081,51.49108607180666],[-3.1267593245300893,51.491127233629115],[-3.126721638502765,51.49116798595158],[-3.126682813467332,51.49120832767569],[-3.126642866996065,51.49124823987334],[-3.1266018061168865,51.49128771513716],[-3.126559652796138,51.49132673207022],[-3.126516416698375,51.49136528271644],[-3.126472114518031,51.49140335171356],[-3.126426749768834,51.4914409365916],[-3.1263803299187702,51.49147802994313],[-3.1263328892377604,51.49151460515916],[-3.126284433876163,51.49155065730099],[-3.127379332457407,51.492134356042556],[-3.1273134002095504,51.49218170834695]],[[-3.1245412385142397,51.37924844612064],[-3.121458570684597,51.379248446120585],[-3.121446069990046,51.37834964816529],[-3.124553739208867,51.37834964816534],[-3.1245412385142397,51.37924844612064]],[[-3.122999932275662,51.489799497758995],[-3.1229999173367453,51.48979949885617],[-3.1229999318362824,51.48979949748468],[-3.1231897394964014,51.48978389754197],[-3.122999932275662,51.489799497758995]],[[-3.1229999221699236,51.48979949913048],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999195336435,51.489799498856186],[-3.1231294640897245,51.489793134009226],[-3.1229999221699236,51.48979949913048]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231051175887825,51.4897825135484],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999168973626,51.4897994963875],[-3.1231030445610655,51.48976739734576],[-3.122999906539917,51.48979949951172]],[[-3.122999926124343,51.48979949913048],[-3.122999923927443,51.48979949913048],[-3.123075520113984,51.4897966126843],[-3.122999926124343,51.48979949913048]],[[-3.122999923927443,51.48979949337025],[-3.1229999230486856,51.48979949364454],[-3.123071210197049,51.489771142064924],[-3.122999923927443,51.48979949337025]],[[-3.1229999327150413,51.48979949913048],[-3.122999926124343,51.48979949913048],[-3.1230687536654047,51.48979762319668],[-3.1229999327150413,51.48979949913048]],[[-3.1229999318362816,51.4897994972104],[-3.122999922169924,51.48979949803329],[-3.1230685533002234,51.48979232845195],[-3.1229999318362816,51.4897994972104]],[[-3.1229999226093037,51.48979949309596],[-3.122999906539917,51.48979949951172],[-3.1230548252958794,51.48977504503829],[-3.1229999226093037,51.48979949309596]],[[-3.1229999182155064,51.48979949419314],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230545941789387,51.4897723434924],[-3.1229999182155064,51.48979949419314]],[[-3.122999916897365,51.48979949967907],[-3.1229999177761245,51.489799499679066],[-3.123048076890138,51.489800286900056],[-3.122999916897365,51.48979949967907]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230435380876873,51.48979194582034],[-3.122999906539917,51.48979949951172]],[[-3.122999915139847,51.489799496387505],[-3.1229999226093037,51.48979949309596],[-3.1230360580791365,51.48978398903074],[-3.122999915139847,51.489799496387505]],[[-3.1229999190942643,51.48979949940477],[-3.1229999199730245,51.48979949940477],[-3.1230340220050645,51.489799685098525],[-3.1229999190942643,51.48979949940477]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230277546904315,51.48980025837981],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123022690392499,51.489790085821845],[-3.122999906539917,51.48979949951172]],[[-3.122999916897363,51.48979949501602],[-3.1230223037378058,51.4897891537625],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999151398466,51.48979949583891],[-3.1229999182155064,51.48979949419314],[-3.1230223274641284,51.48978875959846],[-3.122999916897363,51.48979949501602]],[[-3.1229999173367426,51.48979950077625],[-3.122999906539917,51.48979949951172],[-3.123013557886394,51.489801233231994],[-3.1229999173367426,51.48979950077625]],[[-3.122999925245585,51.489799493095944],[-3.1229999393057426,51.48979948761002],[-3.1230059530981906,51.489797276231684],[-3.122999925245585,51.489799493095944]],[[-3.1229999212911683,51.489799494467434],[-3.1229999217305435,51.48979949419314],[-3.1229999226093104,51.48979949391884],[-3.122999923927443,51.48979949337025],[-3.122999925245585,51.489799493095944],[-3.1229999212911683,51.489799494467434]],[[-3.1229999177761245,51.48979949940477],[-3.1229999221699236,51.48979949913048],[-3.122999923927443,51.48979949913048],[-3.1229999177761245,51.48979949940477]],[[-3.122999906539917,51.48979949951172],[-3.1229999151398458,51.4897994966618],[-3.122999915579226,51.489799496661796],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999915139847,51.489799496387505],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1228741878926822,51.48980155464088],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122996702833367,51.4897994470141],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122910149318569,51.48983383744875],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122854301413137,51.48984681819898],[-3.122999896246503,51.48979950269632],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122854301413137,51.48984681819898]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999905473488,51.48979950626218],[-3.1229999050341077,51.48979950708507],[-3.122999906539917,51.48979949951172],[-3.122999905473488,51.48979950626218]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998927314693,51.48979950105054],[-3.122999906539917,51.48979949951172],[-3.1229998949283706,51.48979950050195],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229870975469147,51.48980792606605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229870975469147,51.48980792606605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999894928372,51.48979950159914],[-3.122999906539917,51.48979949951172],[-3.1229998830651153,51.48979950351921],[-3.122887229531027,51.489816387510245],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999032765874,51.48979951641115],[-3.122990102019089,51.48984599155937],[-3.1229999050341077,51.48979950708507],[-3.1229999032765874,51.48979951641115]],[[-3.1229849586211156,51.48988140241038],[-3.1229999032765874,51.48979951641115],[-3.122999905034107,51.48979950845656],[-3.1229849586211156,51.48988140241038]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229966153966195,51.489801518775366],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229966153966195,51.489801518775366]],[[-3.1229941570653326,51.48980639521798],[-3.12299989976155,51.48979950818225],[-3.122999901958453,51.489799505713584],[-3.1229941570653326,51.48980639521798]],[[-3.122925924371761,51.48984332811772],[-3.122999899322174,51.48979950379351],[-3.122999906539917,51.48979949951172],[-3.122925924371761,51.48984332811772]],[[-3.122999882625732,51.489799501324846],[-3.1229226554469256,51.48980499436059],[-3.1229998971252715,51.489799500227655],[-3.122999882625732,51.489799501324846]],[[-3.1229998953677476,51.48979950105055],[-3.1228735274699115,51.489814122081704],[-3.122999878231932,51.48979950269633],[-3.122999897125266,51.48979950077625],[-3.1229998953677476,51.48979950105055]],[[-3.1229998786713167,51.48979950242203],[-3.1228313201793285,51.489815228540614],[-3.1229998826257304,51.489799501599144],[-3.1229998949283706,51.48979950050195],[-3.1229998786713167,51.48979950242203]],[[-3.1229998905345715,51.48979950269632],[-3.1229792097994995,51.48980332693594],[-3.122999893170848,51.48979950214773],[-3.1229998905345715,51.48979950269632]],[[-3.1229388663728854,51.489803168652834],[-3.1229998821863525,51.48979950077624],[-3.1229998905345715,51.48979950050195],[-3.1229388663728854,51.489803168652834]],[[-3.1214526863497736,51.4913155928189],[-3.121410545058852,51.49129850797826],[-3.121368876603988,51.491280962036726],[-3.1213277113036324,51.4912629673386],[-3.1212870443251384,51.491244521964255],[-3.1212469152138667,51.49122564346977],[-3.121207304197914,51.49120632335221],[-3.1211682547768915,51.49118658218496],[-3.1211297559665323,51.491166414756805],[-3.1210918266606473,51.491145830943275],[-3.121054471253353,51.491124832939335],[-3.121017721819745,51.49110343857535],[-3.1209815713298164,51.491081644285906],[-3.121990752994424,51.49044057635918],[-3.122008828661535,51.49045147376243],[-3.1220272031242207,51.49046217038035],[-3.122045876821795,51.4904726670357],[-3.122045878139935,51.490472667858604],[-3.1220458807762386,51.4904726692301],[-3.1220648414059866,51.49048295906524],[-3.1220840907253886,51.49049304262862],[-3.1221036190679565,51.49050291498269],[-3.122123420721641,51.490512573110024],[-3.1221234211610143,51.490512573384336],[-3.1221234246760785,51.49051257503014],[-3.1221434930500194,51.490522015913285],[-3.1221638184776634,51.490531234888984],[-3.1221844022770253,51.490540232780006],[-3.122205234781516,51.490549004923125],[-3.122205238735972,51.49054900656893],[-3.122226309400214,51.490557548849495],[-3.1214526863497736,51.4913155928189]],[[-3.121973013216208,51.489169506093845],[-3.1219555575141262,51.489180790497876],[-3.1219384199058817,51.48919226306957],[-3.121921602588391,51.489203922986185],[-3.1219216030277663,51.4892039232605],[-3.121905116985617,51.489215762019086],[-3.1218889679308552,51.4892277763283],[-3.121873151030311,51.489239969754074],[-3.1218576834200435,51.48925232913047],[-3.121857682980652,51.489252329404756],[-3.121857680344356,51.48925233159911],[-3.121842560706323,51.489264856926255],[-3.1218277877224727,51.48927755039864],[-3.1218133776501857,51.48929039775315],[-3.1218133745744923,51.48929040049608],[-3.121799323020075,51.48930340529866],[-3.1217856396501773,51.489316559046316],[-3.1145005764730107,51.486418652086726],[-3.1145963856349836,51.486326565540715],[-3.11469473758775,51.48623555296643],[-3.1147956358386795,51.486145609694766],[-3.1147956367175107,51.48614560887193],[-3.114899054014645,51.48605676122694],[-3.1150049086207514,51.485969078867804],[-3.1151131974542565,51.48588256315923],[-3.1151132005300757,51.48588256069076],[-3.1152238998576984,51.48579723109956],[-3.1153369802347934,51.48571311120655],[-3.1154523700361842,51.48563025311664],[-3.1155700916675966,51.48554864201249],[-3.11569003352195,51.48546835468322],[-3.1158122478846577,51.48538935601532],[-3.1159366003038005,51.48531173294568],[-3.121990778224486,51.48915841644037],[-3.121973013216208,51.489169506093845]],[[-3.1197153696015,51.49155065016901],[-3.119666915997426,51.491514599124415],[-3.1196669142399345,51.4915145977529],[-3.1196194739982905,51.491478023085456],[-3.1195730726017765,51.49144094427218],[-3.1195276973077424,51.49140335061633],[-3.119483393369924,51.491365280247685],[-3.1194401603477404,51.49132673207022],[-3.1206267687797054,51.49081766683808],[-3.12065559406169,51.49084336762137],[-3.1206851272500518,51.490868745290264],[-3.1207153722997143,51.490893802312954],[-3.1207153718603133,51.490893802587244],[-3.120746318666213,51.49091853128268],[-3.120746319105622,51.490918531008404],[-3.1207779456995333,51.49094291382067],[-3.12077794613895,51.490942913546384],[-3.120810243294383,51.49096694334305],[-3.1197153696015,51.49155065016901]],[[-3.1181425711017154,51.491731124572105],[-3.118089310738937,51.491677908855685],[-3.1180375568156125,51.49162413141932],[-3.117987304056082,51.491569787601755],[-3.1179385766208636,51.49151490264118],[-3.1178913920798537,51.49145949601531],[-3.117845758337119,51.49140357705241],[-3.1178017052631697,51.491347182511305],[-3.117759236368087,51.49129031760558],[-3.119069436571373,51.49091763511234],[-3.119101285680758,51.49096027966838],[-3.119101290952863,51.49096028652596],[-3.1191012922709027,51.490960288171784],[-3.119134329144795,51.49100257891563],[-3.1191685573004917,51.49104452023514],[-3.1192039389565895,51.49108606577197],[-3.1192039393959345,51.49108606632058],[-3.1192039459861856,51.491086074001096],[-3.11924049081057,51.491127235823555],[-3.1192781737623707,51.49116798540296],[-3.119278176837874,51.491167988420315],[-3.1192781812314,51.49116799335779],[-3.1193169974797086,51.491208326029856],[-3.1193170040700746,51.49120833261317],[-3.1193170053881563,51.491208333984694],[-3.1193569435116393,51.4912482374046],[-3.1181425711017154,51.491731124572105]],[[-3.1150185519111897,51.491862987807174],[-3.1149620964789895,51.49177573274204],[-3.114908068170595,51.49168784062538],[-3.1148565205650574,51.491599399513376],[-3.114856515733259,51.49159939073555],[-3.1148074444254483,51.49151039295083],[-3.114760869168761,51.491420875802206],[-3.114760868290307,51.49142087388208],[-3.1147168114732353,51.491330879067114],[-3.1146752686895853,51.491240399730884],[-3.1160627449652147,51.491000290823635],[-3.116097365534438,51.49107568981946],[-3.1160973664132654,51.491075689545205],[-3.116134082182663,51.49115068488819],[-3.1161340817432293,51.491150685162445],[-3.116134085257301,51.491150692294376],[-3.116134089210683,51.49115069997491],[-3.1161340896501195,51.491150699700626],[-3.1161728975544496,51.49122528370831],[-3.116172897115019,51.49122528398257],[-3.1161729006292265,51.4912252902916],[-3.116172905021889,51.49122529879505],[-3.1161729054613243,51.49122529852078],[-3.1162137923314277,51.49129944787515],[-3.116213791891989,51.49129944814943],[-3.1162137923312563,51.491299448972335],[-3.1162138002382354,51.49129946323621],[-3.1162138006776767,51.49129946296194],[-3.116256754662063,51.49137315571646],[-3.1162567542226283,51.49137315599073],[-3.1162567603727074,51.49137316586575],[-3.116256763008383,51.491373170528945],[-3.1162567634478173,51.491373170254676],[-3.116301770937193,51.4914463841883],[-3.1163017704977576,51.49144638446256],[-3.116301776208583,51.49144639351468],[-3.116301779722938,51.49144639900081],[-3.116301780162379,51.49144639872654],[-3.1163488275472577,51.49151911079526],[-3.1150185519111897,51.491862987807174]],[[-2.9519024639407685,51.39497748945436],[-2.9519024578144775,51.3949774861538],[-2.9519021610521303,51.39497769885246],[-2.951901908718521,51.394977873213826],[-2.951901913969912,51.394977875964514],[-2.949279563023611,51.39685607647567],[-2.94818921232238,51.39627070820654],[-2.950828303060043,51.394380549524136],[-2.9535195842771667,51.39251937582372],[-2.9545766017194866,51.393128141672996],[-2.9519024639407685,51.39497748945436]]],[[[-3.13880752128784,51.489194867782636],[-3.1387881807803097,51.48902273122295],[-3.138788179458878,51.48902272162276],[-3.1387881768145913,51.489022698307906],[-3.1387640315878107,51.4888508342137],[-3.1387640298264485,51.48885082296778],[-3.1387640263031575,51.48885079883016],[-3.138764025424416,51.48885079883028],[-3.1387350746478533,51.48867919101522],[-3.137304636601676,51.488781124496],[-3.1373309541387524,51.48893715211723],[-3.1373529023627023,51.489093411769424],[-3.137370482553123,51.48924992238132],[-3.13880752128784,51.489194867782636]]],[[[-3.1359960800675166,51.49366826096264],[-3.1346963636956353,51.49328144961557],[-3.1345972290906086,51.49340837992765],[-3.135885933794968,51.49380929569607],[-3.1359960800675166,51.49366826096264]]],[[[-3.135933440357459,51.48930495937269],[-3.1359176256711705,51.48916412000957],[-3.13591762302989,51.48916410218059],[-3.135917622148584,51.48916409312889],[-3.1358978717160966,51.48902344757218],[-3.135897870837353,51.48902344757227],[-3.1358741926159968,51.48888304052943],[-3.1344437418131115,51.48898493911548],[-3.1344647878456433,51.48910975760813],[-3.134482337937618,51.48923476405544],[-3.1344963951413174,51.48935997875662],[-3.135933440357459,51.48930495937269]]],[[[-3.132499718837331,51.48769891122479],[-3.1324395280919792,51.48759570843157],[-3.131091066237496,51.487910582081014],[-3.1311426564737266,51.487999042443555],[-3.132499718837331,51.48769891122479]]],[[[-3.13055543153605,51.48111042732694],[-3.130311410078095,51.48102943222671],[-3.1303114105173004,51.481029431678095],[-3.1303113679034746,51.48102941824021],[-3.1303113599957144,51.48102941549773],[-3.1300651125903927,51.480951091400115],[-3.1300651121511804,51.48095109194873],[-3.129816707739055,51.48087546077963],[-3.1291971085202723,51.481686753953056],[-3.1289694492086664,51.48162048329828],[-3.1289694307573304,51.48162047808758],[-3.1289694022016707,51.481620469860125],[-3.128969401762412,51.48162047013444],[-3.12873992515811,51.48155668974135],[-3.1287399255973725,51.481556689467034],[-3.128739890891448,51.481556680142646],[-3.1287398785906144,51.48155667685168],[-3.1285086549541146,51.48149540645578],[-3.1285086553933423,51.481495405907175],[-3.1282757005087682,51.48143665016064],[-3.1282756789824893,51.48143664494997],[-3.1282756592134375,51.48143664001353],[-3.128041146577101,51.48138044306037],[-3.1280411193399,51.481380437027006],[-3.1280410982529743,51.48138043181627],[-3.1278050577042644,51.48132680050341],[-3.128285474983022,51.48047951897287],[-3.128024171886754,51.48042335143374],[-3.1280241723259814,51.48042335088512],[-3.128024119170739,51.480423340189816],[-3.1280241182921307,51.48042333991556],[-3.1277612860908683,51.48037002783514],[-3.1273285144193546,51.48122726109013],[-3.127567478225996,51.48127573207922],[-3.1278050085017135,51.48132678980784],[-3.127324579128614,51.48217406979545],[-3.1275370756549803,51.482222352272686],[-3.1277481705996255,51.482272937417434],[-3.127220663128776,51.48310923178029],[-3.1274070270982155,51.483156236651524],[-3.1275920508601645,51.483205265314695],[-3.1277756887446113,51.483256305434615],[-3.127957851587019,51.483309332334805],[-3.128138537648783,51.48336434629643],[-3.1283176094364147,51.48342130454221],[-3.128495109582373,51.48348022106665],[-3.1286709071807284,51.48354105254423],[-3.128844996974688,51.48360379706276],[-3.1290172704615196,51.48366841458799],[-3.1291877641203767,51.48373491966371],[-3.1293563105736752,51.48380324674975],[-3.1295229902336175,51.483873428491265],[-3.1303382569293277,51.48313264352594],[-3.1301507828052677,51.48305370645605],[-3.130150776654469,51.48305370398776],[-3.1301507441430063,51.48305369027489],[-3.130150743703742,51.48305369054923],[-3.1299611310817013,51.48297682369771],[-3.12996112844565,51.4829768226007],[-3.1299610924196575,51.48297680806509],[-3.1299610919803813,51.48297680833942],[-3.1297693601763186,51.4829020193752],[-3.130521396121633,51.48213560772036],[-3.1303060238646934,51.482054825007786],[-3.130306007609425,51.48205481897427],[-3.130305985203528,51.48205481074675],[-3.1303059847642687,51.48205481102108],[-3.130088432488932,51.48197640317998],[-3.1300884329281957,51.48197640290565],[-3.130088396903299,51.481976390564476],[-3.130088388116696,51.481976387273434],[-3.1298686839171803,51.481900363890496],[-3.13055543153605,51.48111042732694]]],[[[-3.1238510916923468,51.48624372859342],[-3.1237515652427232,51.48623499621703],[-3.1237515503049518,51.48623499511994],[-3.12375154459345,51.48623499457139],[-3.1236517888589606,51.486227348326494],[-3.123488828002822,51.48712038677801],[-3.123563646131822,51.48712612170987],[-3.123638307880868,51.48713267207863],[-3.1238510916923468,51.48624372859342]]],[[[-3.1238277933200846,51.484431434658646],[-3.123677585530219,51.48442323085909],[-3.1235646501423164,51.48531927623283],[-3.123689826099368,51.485326112956734],[-3.1238277933200846,51.484431434658646]]],[[[-3.1238147661941706,51.48533431115741],[-3.1236898001784703,51.48532611158541],[-3.1235518323900817,51.48622078985815],[-3.123651806872144,51.48622734942358],[-3.1238147661941706,51.48533431115741]]],[[[-3.1166303945145053,51.493442715151104],[-3.1165294919022033,51.49337274898428],[-3.116430580296807,51.49330170814838],[-3.1153355947434553,51.49388537358142],[-3.1154510138349014,51.49396827203089],[-3.1154510142743654,51.49396827175662],[-3.1155687101932714,51.49404988378607],[-3.1166303945145053,51.493442715151104]]],[[[-3.1053551040859464,51.4936985872859],[-3.105248796482305,51.49350571132198],[-3.105147917839533,51.49331174493087],[-3.1037745745303167,51.493581805195845],[-3.10388322861162,51.493790734695665],[-3.1038832299299903,51.493790734421594],[-3.1039976871932753,51.493998406830656],[-3.1053551040859464,51.4936985872859]]],[[[-3.105118491211616,51.49560852316435],[-3.1049588076539503,51.49541278123443],[-3.104804678778631,51.49521540157078],[-3.104656050508114,51.495016315064035],[-3.104513013700169,51.494815641891],[-3.1043756306585495,51.494613470405284],[-3.1042439333795744,51.49440984973071],[-3.1041179099438465,51.49420475931218],[-3.102769056775546,51.49451930420634],[-3.102904050935014,51.494739004424815],[-3.1029040496166065,51.494739004698886],[-3.1030451678625677,51.49495720045774],[-3.1030451669835823,51.494957200731896],[-3.1030451832321777,51.49495722432414],[-3.103045195966887,51.494957244349926],[-3.1030451964064354,51.4949572440757],[-3.1031923654751967,51.49517382617072],[-3.1018716974286753,51.49553199528459],[-3.102035142482198,51.495761318136715],[-3.1020351416031926,51.49576131841086],[-3.1020351618048503,51.4957613455698],[-3.1020351749795383,51.49576136394999],[-3.1020351758585445,51.495761363675854],[-3.102204974617502,51.495988825220635],[-3.1022049728594947,51.49598882576891],[-3.1023811477964647,51.496214454235464],[-3.1023811425261303,51.496214447651425],[-3.099803390040655,51.49701606060227],[-3.1000086804861327,51.49726774221658],[-3.1025636322289927,51.496438160711705],[-3.102381178979478,51.49621449264242],[-3.1036700188953743,51.495813662001545],[-3.1038410735350745,51.49602334890884],[-3.105118491211616,51.49560852316435]]],[[[-3.101871728607254,51.495532041371966],[-3.101714703057258,51.49530094420277],[-3.101564171583725,51.49506818247417],[-3.1002242742497694,51.495397344925],[-3.100384195844759,51.49564463689886],[-3.1003841949657547,51.49564463717299],[-3.1003842120912752,51.49564466241154],[-3.100384227898888,51.49564468682694],[-3.100384228777898,51.49564468655283],[-3.1005510086817596,51.49589014978066],[-3.0992302987953844,51.496248289384106],[-3.099053678718109,51.49598833286212],[-3.097723142897699,51.496332013438455],[-3.097909605532155,51.49660646868752],[-3.0992303339239164,51.4962483409589],[-3.0992303005517265,51.496248292127426],[-3.099414182381057,51.496506310557955],[-3.099414161302453,51.49650628202692],[-3.098103639328718,51.496878741562334],[-3.098305337486121,51.49714896590177],[-3.098305296206378,51.49714891295392],[-3.0970053598453684,51.4975355800019],[-3.097225547562875,51.49781761679139],[-3.0972255471232675,51.497817617065586],[-3.0972255629328886,51.49781763626979],[-3.0972255919160117,51.49781767358043],[-3.097225592795072,51.49781767330633],[-3.0974536359829017,51.49809726822395],[-3.0987311700492697,51.49768251219202],[-3.098514494158713,51.4974168634873],[-3.098305338364429,51.49714896699915],[-3.099605250532503,51.4967622827754],[-3.099414199068475,51.4965063327793],[-3.10072469748542,51.49613385583437],[-3.1005510433736796,51.49589019806343],[-3.101871728607254,51.495532041371966]]],[[[-2.896103355077633,51.53968535382555],[-2.8947477665315304,51.537205227382444],[-2.893379561305473,51.53748775424684],[-2.894743201627878,51.53998274765533],[-2.896103355077633,51.53968535382555]]]]} \ No newline at end of file +{"type":"MultiPolygon","coordinates":[[[[-3.3094191503227353,51.537805687256515],[-3.3080861950594076,51.537463838364076],[-3.306727827211244,51.53947352597819],[-3.308051058273181,51.53982984856007],[-3.3094191503227353,51.537805687256515]]],[[[-3.306753259767571,51.537121974309194],[-3.3054203448873842,51.53678009509157],[-3.304081701264982,51.538760430152735],[-3.3027585322286264,51.53840406658388],[-3.301374398918508,51.54035555259508],[-3.302687438404083,51.540726281574734],[-3.3040816466048053,51.53876051115403],[-3.3040814266499603,51.53876083653272],[-3.3054046163772046,51.53911718872748],[-3.306753259767571,51.537121974309194]]],[[[-3.3029270496767653,51.518692137219354],[-3.2987401157244753,51.51802335260638],[-3.2979272999420255,51.519934165320386],[-3.302095047375707,51.52064847489421],[-3.3029270496767653,51.518692137219354]]],[[[-3.3027545746040157,51.53609629117254],[-3.301421719201514,51.53575436647194],[-3.3001122499938713,51.53769129298249],[-3.296142986493151,51.53662202133393],[-3.2948097779509293,51.53850132698207],[-3.293496868714028,51.538130513549575],[-3.2921217127488474,51.539980731992706],[-3.290819361872167,51.5395956565048],[-3.2894033481877227,51.54141661827218],[-3.2879366745638854,51.54322162260466],[-3.2853765744136023,51.54239514854331],[-3.283882536067869,51.54415660436867],[-3.2838825395909574,51.54415660546101],[-3.282339851678222,51.545900902540744],[-3.28074797221739,51.547628648631566],[-3.283235389872956,51.548537641591906],[-3.284852041569154,51.54678290474464],[-3.2873645639655407,51.54766460720754],[-3.2889559306360443,51.54586504553069],[-3.2902243346871054,51.54629212010233],[-3.2917766921582965,51.544461605653495],[-3.2930568523259134,51.54487478505424],[-3.294568961971407,51.543013606565005],[-3.295860475704014,51.54341276165879],[-3.29733105561984,51.541521284534184],[-3.298633524792727,51.54190629336518],[-3.3000613750456163,51.53998480726176],[-3.300061380770213,51.53998480889891],[-3.3000615246982865,51.539984605978],[-3.300061648970923,51.539984438745066],[-3.300061644566992,51.539984437380234],[-3.3014350999499125,51.5380480845858],[-3.30143510919627,51.538048087040394],[-3.3014353309152016,51.538047758921024],[-3.3014353816581825,51.53804768752723],[-3.3014353798966694,51.53804768698133],[-3.3027545746040157,51.53609629117254]]],[[[-3.301208722409343,51.5225946750359],[-3.2998262756281984,51.52234149135683],[-3.29889242941714,51.52426348014983],[-3.3002676332859204,51.5245316905347],[-3.301208722409343,51.5225946750359]]],[[[-3.3004294656913147,51.47112200993406],[-3.299876677384729,51.469191353618704],[-3.2984622968050146,51.46935727724915],[-3.299010605380308,51.47127249480664],[-3.3004294656913147,51.47112200993406]]],[[[-3.29786084119259,51.46744908188175],[-3.297205950202842,51.46554697406928],[-3.295801802604603,51.465743593967076],[-3.2964512325005937,51.46763000824523],[-3.292222719510826,51.46817377926274],[-3.2928047852994196,51.47002118087201],[-3.294219203863755,51.46985532906596],[-3.2947539688803182,51.47172384694776],[-3.2961728571934694,51.47157341331338],[-3.295633616122785,51.469689459915664],[-3.297048021635288,51.46952357314759],[-3.2964512702446824,51.46763011763434],[-3.2964513572780603,51.467630369859855],[-3.29786084119259,51.46744908188175]]],[[[-3.2943977831549955,51.46594058277743],[-3.2937014270047307,51.46407644155403],[-3.290904591469731,51.464500134586466],[-3.291589425816347,51.46633373216906],[-3.2943977831549955,51.46594058277743]]],[[[-3.291390352528371,51.470187016168005],[-3.2908133024632997,51.46835535395864],[-3.2908133094860372,51.46835535285139],[-3.2908132233687626,51.468355102814826],[-3.2908131918191854,51.4683550024669],[-3.290813188746984,51.4683550030199],[-3.290185092852138,51.46652990562812],[-3.2873766614104056,51.466922960950804],[-3.2867093778353538,51.465135914860944],[-3.2881078442375964,51.46492412961486],[-3.287384307828217,51.463128685485074],[-3.284599728582866,51.46358265342966],[-3.28383955205724,51.461825978481606],[-3.281068123361807,51.46231014994493],[-3.2818150958397605,51.46403655493796],[-3.280422760944378,51.46426348046717],[-3.2811153937417465,51.465982887602465],[-3.282513907975336,51.46577116965338],[-3.283164064246226,51.46751277691071],[-3.2845683147468008,51.467316312248684],[-3.2851750825832897,51.469080064954014],[-3.289403762704736,51.468536557200395],[-3.289975909501156,51.47035283412505],[-3.291390352528371,51.470187016168005]]],[[[-3.29064172489306,51.52265350386954],[-3.2892666324094573,51.52238518359205],[-3.2883329348954895,51.52419172062168],[-3.284230761283992,51.52334184161902],[-3.285141451499796,51.52158012653426],[-3.2837664232321413,51.52131174201648],[-3.28286321781917,51.5230588761151],[-3.282863219579885,51.52305887666129],[-3.2819115821666003,51.52479521054492],[-3.279193103324289,51.524198805208904],[-3.2782097777804067,51.525895310716265],[-3.2768590741964596,51.52558232141153],[-3.2758372643862335,51.52725321036185],[-3.274495497165674,51.526925536548774],[-3.2734363639178623,51.52857044469752],[-3.2707715613138504,51.52788591573298],[-3.2696859693225377,51.52949010491792],[-3.2683633368454683,51.52913335243156],[-3.2672428645065748,51.53071143598461],[-3.2698678503007117,51.53145364285105],[-3.2686824380524055,51.53304746378794],[-3.269984412591749,51.53343278812932],[-3.2687437216405684,51.535027357183914],[-3.267458175855701,51.53660857592273],[-3.268737889279492,51.537022019238314],[-3.2700346181893254,51.535426990342316],[-3.27003462391315,51.53542699225521],[-3.270034788166378,51.535426781391095],[-3.2700348683350082,51.535426682544546],[-3.2700348656925597,51.53542668145069],[-3.271286413517139,51.533818099089196],[-3.271286418800108,51.5338181007283],[-3.2712865584876716,51.533817912934154],[-3.2712866710473656,51.53381776823857],[-3.271286667084688,51.533817766872104],[-3.2724929263063762,51.53219579225835],[-3.2738054958825256,51.53256684490226],[-3.2725884421507354,51.53420339748822],[-3.2738904874865877,51.53458868004833],[-3.2751183223548668,51.532937565997074],[-3.273805729254254,51.532566530809014],[-3.2738056281111776,51.532566666714956],[-3.274976472697673,51.53091730432068],[-3.274976480181149,51.53091730650535],[-3.274976664858383,51.53091703361699],[-3.2749767125700986,51.53091696635294],[-3.2749767108091796,51.53091696580663],[-3.2761010334410265,51.5292552594935],[-3.2800985143983157,51.53028186086298],[-3.2789447471539908,51.53198730450525],[-3.281590354348405,51.53270055973821],[-3.28036867048651,51.53442188858964],[-3.2829940875132038,51.53516380239003],[-3.284236051273684,51.533413757138646],[-3.284236059637604,51.53341375932152],[-3.2842362608956757,51.533413461983635],[-3.284236305970159,51.5334133982853],[-3.284236304209027,51.53341339773911],[-3.2854287691503012,51.531650450898844],[-3.2867613826717603,51.531992560246074],[-3.2855589393284546,51.533770335890864],[-3.2868818401292423,51.53412689724825],[-3.2880942650784646,51.53233428598342],[-3.2867616294007402,51.531992194815146],[-3.2867613909804447,51.53199254706832],[-3.287914041853699,51.53020158683503],[-3.2852301782179234,51.52954649959239],[-3.286314194281958,51.527773291014135],[-3.286314199563788,51.52777329237825],[-3.286314310136183,51.52777310131491],[-3.2863144176853214,51.52777292561633],[-3.286314412843219,51.52777292425158],[-3.287348566845087,51.52598817930192],[-3.288707909001126,51.52628629951636],[-3.2897003720648517,51.52447498408071],[-3.28970035974289,51.524474981355254],[-3.29064172489306,51.52265350386954]],[[-3.2827638334243563,51.530965827371276],[-3.2814312780953006,51.53062367530687],[-3.2825461799365505,51.528891682521106],[-3.283888061424182,51.52921926716902],[-3.2827638334243563,51.530965827371276]],[[-3.2761012552451505,51.52925491523813],[-3.2747688086151756,51.52891269013807],[-3.2747685828092923,51.5289130236986],[-3.2758372394569806,51.52725325099],[-3.27583706889154,51.52725352989602],[-3.2771788465921095,51.527581189730896],[-3.2761012552451505,51.52925491523813]],[[-3.2736539943173266,51.53056027305275],[-3.2723312984980417,51.530203565091234],[-3.2734361556596867,51.5285707678098],[-3.2734361460348524,51.52857078290837],[-3.2747685797474206,51.52891302863987],[-3.2736539943173266,51.53056027305275]]],[[[-3.2873849446390686,51.520062103650176],[-3.286002651213735,51.51980875697753],[-3.2851412755963887,51.52158048994455],[-3.286516318291593,51.52184886163007],[-3.2873849446390686,51.520062103650176]]],[[[-3.2823914115684207,51.521043341095854],[-3.2810164160715094,51.52077492432191],[-3.2801285573888856,51.522492172328086],[-3.2814958791177147,51.522775532059164],[-3.2823914115684207,51.521043341095854]]],[[[-3.2680396831925735,51.51311436482631],[-3.265249056060226,51.51266769380948],[-3.2658645786577507,51.511114385682426],[-3.2644632983860014,51.51090626142737],[-3.263853765822226,51.51244433380263],[-3.261063233325782,51.51199756506659],[-3.260423443347411,51.51349871485534],[-3.2618122805111174,51.51373727782669],[-3.261123879626819,51.51524596029654],[-3.260393272749762,51.51674704392488],[-3.265892375893139,51.51782159440757],[-3.2666520078550154,51.516260491077844],[-3.266652009174778,51.51626049135053],[-3.266652034062208,51.51626043673523],[-3.2666521537488142,51.516260190819814],[-3.2666521471500007,51.51626018945641],[-3.267367797556608,51.51469136899998],[-3.26736780459397,51.51469137008851],[-3.267367911506347,51.514691118702096],[-3.267367944252315,51.51469104734492],[-3.2673679424921094,51.51469104679849],[-3.2680396831925735,51.51311436482631]]],[[[-3.2650473310878594,51.50454806461506],[-3.2636264040000524,51.50440143074512],[-3.2631989785724564,51.50593135810521],[-3.2617823346630095,51.505769248425246],[-3.2613167668855607,51.507279186160446],[-3.2641406601681333,51.5076342152336],[-3.2646155394582945,51.50609376814527],[-3.2646155456143466,51.50609376896073],[-3.264615605606256,51.50609355466305],[-3.2646156373718394,51.50609345121508],[-3.2646156347329236,51.50609345066967],[-3.2650473310878594,51.50454806461506]]],[[[-3.2642427150166373,51.520917443892735],[-3.2615246935339397,51.52032062797242],[-3.2606518416315335,51.52182553464595],[-3.263352827634872,51.52245187919668],[-3.2642427150166373,51.520917443892735]]],[[[-3.25977397473073,51.49046503033606],[-3.2597695143614946,51.48897446308675],[-3.2554505521288806,51.48900295568605],[-3.255454734024047,51.490446175263514],[-3.249695758463545,51.49042116937618],[-3.2496609834579524,51.49180173692147],[-3.251100372499474,51.491823703741105],[-3.2510262280907285,51.493219077029025],[-3.255342053394861,51.4933319087125],[-3.2554185610970126,51.491889497377436],[-3.256857964451723,51.49191139353024],[-3.2568944791674337,51.490452662746875],[-3.25977397473073,51.49046503033606]]],[[[-3.259122917614719,51.48153662350733],[-3.2588689797496144,51.48005450883925],[-3.2545792652579495,51.48036465218287],[-3.254825000570702,51.481799677356996],[-3.251959734596905,51.48197516156117],[-3.252160820762438,51.48338168963368],[-3.253595733065658,51.4833095817601],[-3.2537592937148005,51.48473346058398],[-3.2580695469448218,51.48456396617922],[-3.257900455990234,51.4830931525121],[-3.2579004608218853,51.48309315223224],[-3.257900436151322,51.48309298000202],[-3.2579004235259696,51.48309287002338],[-3.2579004204515742,51.483092870301206],[-3.2576902981494813,51.48162442399049],[-3.259122917614719,51.48153662350733]]],[[[-3.2370575251010716,51.44606842763524],[-3.235817030691038,51.444832154423],[-3.2346051209346167,51.44531625378936],[-3.2333445816188453,51.44410729685909],[-3.233344584249853,51.44410729575941],[-3.233344478228426,51.44410719766023],[-3.2333443378816793,51.44410706311163],[-3.233344334374127,51.44410706476072],[-3.232050026441311,51.44291178146702],[-3.2308659000909272,51.44342197746092],[-3.2321462660248956,51.4446044135816],[-3.233393253740388,51.445800403613],[-3.2346069668943076,51.44701005082663],[-3.2370575251010716,51.44606842763524]]],[[[-3.236551522548902,51.54213850645678],[-3.2353915179572375,51.54160499273779],[-3.2339256280284436,51.54282186082824],[-3.235070534260578,51.54336793420153],[-3.236551522548902,51.54213850645678]]],[[[-3.232159184172945,51.473382509965624],[-3.2316822707714614,51.472195465008745],[-3.230289436961422,51.4724217951612],[-3.2307602027262665,51.47359362730424],[-3.232159184172945,51.473382509965624]]],[[[-3.2316724497277467,51.43949327825806],[-3.230249519706913,51.43831674361517],[-3.2302497531912717,51.43831692965058],[-3.2313894120082867,51.437768713520754],[-3.2299183517281986,51.43659546758759],[-3.2287941888832434,51.437156020124284],[-3.230249449352911,51.438316687173945],[-3.229109767645987,51.43886489408686],[-3.2305176162869276,51.44002898281259],[-3.2316724497277467,51.43949327825806]]],[[[-3.2288966838746616,51.47264833113217],[-3.2283998382727814,51.4714969499732],[-3.227013545074338,51.47173838810773],[-3.2275038216069003,51.47287462544043],[-3.2288966838746616,51.47264833113217]]],[[[-3.2247676444348734,51.53845264061834],[-3.2224783465080047,51.53736028646684],[-3.22113305682639,51.53843708352781],[-3.2233914500163614,51.53955421834448],[-3.2247676444348734,51.53845264061834]]],[[[-3.222854675668419,51.47246282759268],[-3.2223537146621535,51.47137731614384],[-3.2209743482274087,51.471633756498335],[-3.2204507684120505,51.47056928472181],[-3.2218227352534448,51.4702978572826],[-3.2212615854145104,51.46922414022814],[-3.2212615871700576,51.469224139678076],[-3.2212615527801085,51.46922407744133],[-3.221261470315464,51.469223920337896],[-3.2212614659254077,51.46922392116446],[-3.220670425396369,51.468156480957575],[-3.2193145210504084,51.4684576365702],[-3.2187025383506174,51.467411728230914],[-3.2200497962174612,51.4670958487646],[-3.219399395521085,51.4660417189773],[-3.2180611946732083,51.466372232298276],[-3.2173910738134768,51.465340094975126],[-3.217391206397278,51.46534028934551],[-3.2200486540415056,51.4646501963539],[-3.2193300905911664,51.463596666649636],[-3.2193300914688447,51.46359666637462],[-3.2193300685666175,51.46359663430059],[-3.2193299434673417,51.46359645062379],[-3.219329938200689,51.4635964519996],[-3.2185822275697196,51.46255111337318],[-3.2211993257002156,51.46180348231748],[-3.220401074545805,51.46073784958409],[-3.2204010767395497,51.46073784875937],[-3.2204010106940517,51.46073776405616],[-3.2204009102936184,51.46073763000784],[-3.220400906344048,51.46073763110831],[-3.2195732015574703,51.45968105982043],[-3.220859989523671,51.459278941450904],[-3.2199913153217143,51.458217389319415],[-3.2199913157602102,51.45821738904475],[-3.2199912928712595,51.458217362182474],[-3.2199911365933724,51.45821717085166],[-3.2199911313285248,51.45821717277611],[-3.2190931463029275,51.45716544752231],[-3.2190931484965284,51.457165446697616],[-3.2190930807207927,51.45716537077257],[-3.2190929742041154,51.4571652457799],[-3.2190929706944695,51.45716524715427],[-3.218165592224435,51.456123251075915],[-3.216914321737841,51.45656686209767],[-3.2178294786124226,51.457595157202086],[-3.2165659627917944,51.45802505360353],[-3.2156632135811702,51.457010668875],[-3.2156632140196777,51.45701066860035],[-3.2156631990592617,51.457010652702884],[-3.21566302743244,51.45701045945832],[-3.215663022167555,51.457010461382566],[-3.2147321272683524,51.45600608124525],[-3.2147321316556083,51.45600607959602],[-3.2147319728262755,51.45600591486708],[-3.214731934545449,51.45600587347801],[-3.214731933668439,51.456005874027284],[-3.2137731508348693,51.45501177438343],[-3.213773153905464,51.45501177300956],[-3.2137730373271616,51.45501165652308],[-3.2137729664955623,51.45501158334028],[-3.2137729647410156,51.45501158416453],[-3.2127863959058396,51.454027878365395],[-3.2115739995958883,51.45451173859882],[-3.2105740652820556,51.45355226369828],[-3.2105740674756498,51.45355226287375],[-3.210573986990637,51.453552188599026],[-3.2105738717528265,51.4535520781429],[-3.2105738686817156,51.45355207924237],[-3.2095473296508286,51.45260364650744],[-3.209547330089328,51.45260364623282],[-3.209547305023036,51.45260362403315],[-3.2095471181116992,51.452603451363196],[-3.209547113286091,51.45260345328685],[-3.2084942932424547,51.45166636049859],[-3.2084942954354663,51.4516663593998],[-3.2084942022149994,51.45166627937266],[-3.208494076887619,51.45166616782461],[-3.2084940738170857,51.45166616919835],[-3.207415265128915,51.45074067438116],[-3.208570642579866,51.45020519676134],[-3.2074506081759795,51.44927872602025],[-3.2051701222608044,51.45037468550119],[-3.2040558523988056,51.44948559732072],[-3.204055854152838,51.4494855962223],[-3.204055766673815,51.44948552880538],[-3.20405564138412,51.449485429047364],[-3.2040556387525916,51.44948543042068],[-3.2029165104246995,51.44860843380479],[-3.2018075418488006,51.44918090731601],[-3.200660320628291,51.4483284658586],[-3.197381743049896,51.45008180917558],[-3.1984807004529907,51.45089843175007],[-3.1995897504946837,51.4503259950865],[-3.2006812878258133,51.45116639889873],[-3.2017492488630404,51.45201858720873],[-3.2027933636224457,51.45288234825854],[-3.2038132692603156,51.453757386688366],[-3.2048086270034353,51.45464341452549],[-3.2057788895090984,51.4555399379428],[-3.2045800821569927,51.45603687084257],[-3.205511829670372,51.45693103063935],[-3.2067243519714075,51.45644723795475],[-3.207644067466212,51.457364406267395],[-3.208538278301718,51.45829168441316],[-3.211015889584593,51.457377483448994],[-3.211908992828916,51.45834117369042],[-3.210657606319705,51.45878471585124],[-3.21151175937616,51.45974461375354],[-3.212338945556208,51.46071360703366],[-3.2131388555361733,51.46169132701596],[-3.2139115170837216,51.462677812359765],[-3.2152094708424697,51.462289849028565],[-3.2159649126518493,51.46329848661203],[-3.2146562927160245,51.46367225327274],[-3.215373345206979,51.46467485039081],[-3.212735517755867,51.46539370727204],[-3.2127356335840966,51.46539387697372],[-3.2120389922144073,51.46441974133618],[-3.210730312088302,51.4647934627378],[-3.2100175145277117,51.46384161874535],[-3.2100175167218024,51.46384161792083],[-3.2100174542129487,51.463841537872256],[-3.2100173679242876,51.4638414227312],[-3.21001736441281,51.46384142355671],[-3.2092781104625048,51.46289748858387],[-3.209278113095173,51.46289748748475],[-3.2092780329899298,51.46289738934505],[-3.20927796872408,51.46289730765157],[-3.209277966529497,51.462897308201796],[-3.2085124823693305,51.461961570697454],[-3.2085124832470426,51.46196157042251],[-3.2085124612437537,51.461961544928855],[-3.2085123248072485,51.461961378255225],[-3.2085123204186883,51.46196137962994],[-3.2077206895583705,51.46103394682324],[-3.2064569838268913,51.461463734037046],[-3.2072367811760767,51.46237733312905],[-3.2059612226921597,51.46279327134923],[-3.2067040388077457,51.46370136132526],[-3.2074213486188863,51.464617342398],[-3.2081130167031864,51.46554104177361],[-3.209421736964484,51.465167353471074],[-3.210097712681912,51.46611266785561],[-3.210747237446728,51.46706525839104],[-3.2120760662260506,51.46672029605771],[-3.2127083397029077,51.467694314704474],[-3.2140466139486192,51.46736386638708],[-3.214660538082621,51.468359066101684],[-3.213313213274309,51.468674885496526],[-3.213890847178231,51.469662289610405],[-3.215246819429063,51.46936120088846],[-3.21580492539501,51.470369376546294],[-3.217169115135903,51.470083091223415],[-3.2177067095371283,51.47111191454889],[-3.218215590124532,51.47214662798159],[-3.218695548758304,51.47318683378122],[-3.2191463568456102,51.474232043139835],[-3.220539302233551,51.47400584814786],[-3.2200819540336925,51.47294555024783],[-3.222854675668419,51.47246282759268]],[[-3.216062311562849,51.46568510555824],[-3.215373471156099,51.46467502639076],[-3.2153734922945465,51.464675055998285],[-3.216692378677819,51.46431560773776],[-3.2173910628014717,51.465340078800416],[-3.216062311562849,51.46568510555824]],[[-3.212254471766751,51.45692016085491],[-3.211321634897796,51.4559529091123],[-3.212547405688784,51.45548234817348],[-3.2134932148711957,51.456463023865126],[-3.212254471766751,51.45692016085491]],[[-3.212075936284566,51.4667200959191],[-3.2120759446536695,51.46672010880472],[-3.2114167052945928,51.465753312193975],[-3.2127356551640878,51.465393908501454],[-3.2134047476453524,51.4663751141185],[-3.212075936284566,51.4667200959191]],[[-3.207936660807366,51.45596324246514],[-3.2069778616968074,51.45504316843305],[-3.2081766222574863,51.45454621257696],[-3.209149132704735,51.455479420237225],[-3.207936660807366,51.45596324246514]]],[[[-3.208289825319247,51.554267999527745],[-3.2073714476828976,51.553575123700384],[-3.205573920546337,51.55448466278194],[-3.2037508966445603,51.555374593977966],[-3.2037508900497405,51.55537459699974],[-3.2019038241684927,51.55624421623884],[-3.201903821525066,51.556244214320564],[-3.200032259257517,51.55709374103494],[-3.1991937316713392,51.5563625604312],[-3.1973188294319215,51.55718271088766],[-3.198136740330676,51.55792291972302],[-3.2000320596373513,51.55709383140843],[-3.2000318740878853,51.557093915738236],[-3.200870426369013,51.55782509437725],[-3.202762372428021,51.5569663084055],[-3.2027623794789872,51.55696631443516],[-3.204629893505496,51.55608705991464],[-3.2046299036170733,51.55608705497033],[-3.204630279955811,51.5560868777894],[-3.2046302751082583,51.556086873678375],[-3.206472440250878,51.55518759018189],[-3.206472444657491,51.555187593744584],[-3.2064727589734883,51.55518743470518],[-3.2064728152444806,51.555187407235834],[-3.206472814802967,51.55518740641326],[-3.208289825319247,51.554267999527745]]],[[[-3.183467080204539,51.48945455034483],[-3.1834477899852542,51.48879580715368],[-3.183447791742372,51.48879580687848],[-3.183447788596776,51.48879575394086],[-3.1834477862907478,51.48879567137878],[-3.183447784093897,51.48879567137991],[-3.1834100824159663,51.488137238499355],[-3.1819717961207408,51.488177177903594],[-3.1820085843855246,51.48882000997746],[-3.182027396075544,51.48946312586288],[-3.183467080204539,51.48945455034483]]],[[[-3.1709129060121772,51.44279030937552],[-3.169592258164813,51.442275335505],[-3.1688415361787046,51.4430420041256],[-3.1701408967998552,51.44354868014074],[-3.1709129060121772,51.44279030937552]]],[[[-3.166434163250966,51.50390229413905],[-3.1651563023321563,51.50348773610735],[-3.165156273355781,51.503487770130455],[-3.165532446384281,51.50302635234888],[-3.1642432199462114,51.50262576573504],[-3.163878464163355,51.50307316385167],[-3.1626006505033195,51.50265857819471],[-3.162235211656309,51.50308807389396],[-3.160969203851051,51.502659616774714],[-3.160603964464413,51.50307134392295],[-3.159350144536286,51.5026291440493],[-3.1593501225801073,51.502629167919835],[-3.1597031433823073,51.50223122717605],[-3.1609691274478724,51.502659701556865],[-3.1613228591538127,51.50224397831486],[-3.160045090554605,51.50182936448665],[-3.1603756121715394,51.50142399890976],[-3.1603756134904657,51.50142399945793],[-3.160375655198651,51.501423946231235],[-3.160375675833887,51.50142392071513],[-3.160375674954682,51.501423920441106],[-3.160694846761396,51.50101496262758],[-3.160694806373109,51.50101501667688],[-3.1619949605156528,51.501401542126125],[-3.1623133275877082,51.50097483185002],[-3.161002570205086,51.50060253339171],[-3.1610025517670723,51.500602557810026],[-3.1612986901227367,51.50018683914412],[-3.1599777525543384,51.49982886366062],[-3.159977745091897,51.499828874360524],[-3.160252396223698,51.49942445836995],[-3.1589216798690414,51.49908091382819],[-3.1586568356827476,51.49947087300566],[-3.1573359395086773,51.49911286772826],[-3.157590983963257,51.49873735444401],[-3.157590981326046,51.498737353896196],[-3.157835480334659,51.498359122969966],[-3.157835438198772,51.498359191830794],[-3.1591755267681343,51.49868820403342],[-3.1594184468420106,51.49829263120897],[-3.158069370469418,51.497978272684165],[-3.1580693489628917,51.4979783078005],[-3.158292565489775,51.497594941647286],[-3.156934933168367,51.497295313567996],[-3.156720312218422,51.4976638983523],[-3.1553712738479014,51.497349509036155],[-3.15515531851302,51.49770112171517],[-3.156495367168646,51.49803016402598],[-3.1562603054296194,51.49839377912155],[-3.1549296513012797,51.49805018977922],[-3.15469419959484,51.498396826202324],[-3.1544490843762025,51.49874084930951],[-3.1541944183059836,51.49908210266194],[-3.1528943943930137,51.49869549362009],[-3.1526411848288434,51.49901986332461],[-3.1523789158885167,51.49934145446833],[-3.1536565413963866,51.499756154448114],[-3.153373573942841,51.50008864684886],[-3.153373574821977,51.500088647122936],[-3.1530813878576,51.50041796154666],[-3.152779949184805,51.50074413359161],[-3.1540210914290983,51.50119999467993],[-3.1536976886336503,51.501536237940755],[-3.1549259273173056,51.50200553958531],[-3.1545798750667866,51.5023515058572],[-3.1542242065214134,51.5026936376185],[-3.153859020381127,51.503031842044486],[-3.152671802606281,51.50252305736245],[-3.152311554921884,51.50284442603223],[-3.1519423736747485,51.503161817668484],[-3.1515644520578725,51.503475068660116],[-3.1511776898356447,51.503784261236184],[-3.1534326576530174,51.50490274833296],[-3.153850270782477,51.50456887970895],[-3.1561362780308104,51.50566258426946],[-3.156574721512718,51.50529913760247],[-3.157732880478176,51.505833435792034],[-3.1581759316477593,51.50545249543023],[-3.1570030084484584,51.50493089917231],[-3.157420752422525,51.504558204666424],[-3.157420752862251,51.504558204940594],[-3.1574207660386127,51.504558192593414],[-3.1574208393895637,51.504558127289485],[-3.1574208376308626,51.504558126467124],[-3.15782809368464,51.50418093291619],[-3.1578280950036057,51.504180933464404],[-3.157828137605511,51.504180892307375],[-3.157828172742291,51.50418085993004],[-3.1578281718628296,51.504180859381705],[-3.158224813646941,51.50379928515358],[-3.1594398506557373,51.504281846966585],[-3.159839158960008,51.50388259604361],[-3.1598391374418915,51.50388261854263],[-3.16106750272274,51.50435185596321],[-3.1614685615932165,51.50393480288796],[-3.1602272663634405,51.503479023013085],[-3.160603948656817,51.50307136175725],[-3.1606038946475215,51.50307142266825],[-3.1618577370913536,51.503513611850586],[-3.1622351370165704,51.50308816306509],[-3.1635011690107766,51.50351661032978],[-3.16387844528514,51.5030731868991],[-3.1638783895288025,51.503073255218204],[-3.165156222866622,51.503487829396505],[-3.1647672251892716,51.50394504417277],[-3.166033305112367,51.504373464319485],[-3.166434163250966,51.50390229413905]],[[-3.160694869589416,51.50101493189911],[-3.1593947361296593,51.50062839503197],[-3.1593947159341558,51.50062842109636],[-3.159691811793236,51.50023025071678],[-3.159691778869444,51.50023029708311],[-3.161002511379973,51.50060261240801],[-3.160694869589416,51.50101493189911]],[[-3.159839212097122,51.50388254116775],[-3.15861086941466,51.50341329359112],[-3.1589859950204313,51.50302322969345],[-3.157744749322487,51.5025674234776],[-3.158096281250765,51.50218700317485],[-3.159350075154566,51.502629219227856],[-3.1589859203684076,51.50302331118223],[-3.160227185561064,51.50347910615037],[-3.159839212097122,51.50388254116775]],[[-3.1596918337425755,51.50023021998876],[-3.158381119519478,51.49985789246412],[-3.1586568312929497,51.4994708793158],[-3.1586567812503934,51.49947095284235],[-3.159977693731109,51.499828945967984],[-3.1596918337425755,51.50023021998876]],[[-3.1590865393839604,51.501023277042925],[-3.1577974255414327,51.50062261945008],[-3.1580945627603856,51.50024192219617],[-3.159394672469146,51.500628476243335],[-3.1590865393839604,51.501023277042925]],[[-3.157835482968498,51.49835911912904],[-3.156495411942599,51.498030094616276],[-3.1567202915901227,51.49766393374244],[-3.1567202678894732,51.49766397434508],[-3.1580693221891796,51.49797835114729],[-3.157835482968498,51.49835911912904]],[[-3.1546572437160356,51.50388767243048],[-3.153484401741737,51.503366041124806],[-3.153858954057053,51.50303190350421],[-3.1538589443940115,51.5030319125585],[-3.1550461877345017,51.5035406887469],[-3.1546572437160356,51.50388767243048]]],[[[-3.164138272342943,51.5094901021202],[-3.1629950610630875,51.50894333664993],[-3.16245363266592,51.50937626048888],[-3.1635813788297074,51.50993540069186],[-3.164138272342943,51.5094901021202]]],[[[-3.162633792059454,51.50616368135762],[-3.16023093025833,51.50517229547427],[-3.1597954290310963,51.50557566794764],[-3.1593487880733497,51.505974160859466],[-3.1605217608862444,51.506495736037934],[-3.1609827988750316,51.50608438876556],[-3.1621702004333887,51.50659309258112],[-3.162633792059454,51.50616368135762]]],[[[-3.1618518771507778,51.50839655998764],[-3.1584224900525455,51.506756163127605],[-3.157942924091971,51.50713959155519],[-3.1613259141111154,51.508817109665245],[-3.1618518771507778,51.50839655998764]]],[[[-3.1388075208722164,51.48919486740133],[-3.138788180364783,51.48902273111593],[-3.1387881808041564,51.489022731115874],[-3.138788178162143,51.489022714384134],[-3.1387881763990624,51.48902269820088],[-3.138788175959691,51.489022698200934],[-3.138764031172286,51.48885083410666],[-3.1387640316116547,51.48885083410661],[-3.1387640294107335,51.48885082231215],[-3.1387640263270034,51.488850798723064],[-3.138764025448259,51.488850798723185],[-3.1387350746717932,51.48867919118244],[-3.1373046366256108,51.488781124663205],[-3.137330954601973,51.48893715201009],[-3.137352902386896,51.48909341275952],[-3.137370482576885,51.48924992199994],[-3.1388075208722164,51.48919486740133]]],[[[-3.13650599966056,51.41567619371154],[-3.13443511592752,51.41554031421568],[-3.1344351163654345,51.41554031119834],[-3.13443482727957,51.41554029531716],[-3.1344346904130465,51.41554028627861],[-3.13443468997479,51.41554028792446],[-3.1323603401404996,51.41542699195801],[-3.132360339264401,51.41542699799267],[-3.1302835796686526,51.41533633880269],[-3.130283579668086,51.41533633523679],[-3.1302832774259413,51.41533632538078],[-3.1302831528440485,51.41533631990253],[-3.130283152405601,51.415336321274054],[-3.12820418484155,51.415268302831066],[-3.1282041852795914,51.415268297345044],[-3.1261231558186378,51.41522292941051],[-3.1261231558185445,51.41522292803901],[-3.126123041765704,51.41522292694485],[-3.126122784707925,51.41522292119141],[-3.1261227847081123,51.415222923934394],[-3.1240412369995463,51.41520024176315],[-3.124041236999509,51.41520024011736],[-3.1240411102255363,51.41520024011848],[-3.1240408088631115,51.41520023682956],[-3.124040808863186,51.41520024012116],[-3.121959002573615,51.415200240121145],[-3.121959002135026,51.41520023682954],[-3.1219587007726006,51.41520024011846],[-3.121958573998628,51.41520024011735],[-3.1219585739985907,51.41520024176313],[-3.119877083316425,51.41522292366157],[-3.119877083316556,51.41522292174148],[-3.1198769087278304,51.41522292557701],[-3.1198766547409087,51.41522292831325],[-3.119876655179386,51.41522293105625],[-3.1177960538564338,51.415268289134985],[-3.117796053417801,51.41526828886065],[-3.1177960288524718,51.415268289682466],[-3.117795682745013,51.4152682970732],[-3.1177956831832416,51.415268300913404],[-3.1157166585924867,51.415336321548224],[-3.115716658154082,51.415336319902394],[-3.1157165217281326,51.41533632592852],[-3.1157162308913366,51.415336335510936],[-3.115716231329478,51.41533633880257],[-3.113639472172393,51.41542699799253],[-3.113639471296237,51.41542699223218],[-3.111565121023332,51.41554028792426],[-3.1115651210236748,51.415540286552776],[-3.111564996440045,51.415540294769606],[-3.1115646946326883,51.41554031119814],[-3.111564695509201,51.415540314489824],[-3.109494238170561,51.41567616578192],[-3.1094942372941947,51.415676162490215],[-3.1094939284643934,51.4156761860444],[-3.109493811337556,51.4156761937113],[-3.109493811775821,51.41567619508285],[-3.10742739174386,51.41583458848453],[-3.10742739130547,51.415834587661564],[-3.1074273206774943,51.41583459368676],[-3.107427022812511,51.41583461668838],[-3.107427023688734,51.41583461998009],[-3.1053648985300346,51.416015541205695],[-3.1053648998442593,51.41601554586899],[-3.103308599353838,51.416218859903424],[-3.1033085989161058,51.41621885770894],[-3.1033084058903486,51.41621887907189],[-3.103308176015389,51.41621890180014],[-3.103308176891675,51.416218904268995],[-3.1012578450925345,51.41644459113853],[-3.101257843340566,51.41644458537792],[-3.099213260594749,51.41669267937018],[-3.099213262346758,51.41669268458223],[-3.0971766728242303,51.416962913288366],[-3.0971766723863206,51.41696291191678],[-3.097176535506682,51.416962931636185],[-3.097176309569054,51.41696296148506],[-3.0971763104450294,51.416962963953964],[-3.0951475512013142,51.417255341458706],[-3.095147549011063,51.41725533624648],[-3.0931264540445844,51.41756989418852],[-3.0931264562348,51.41756989912646],[-3.091115248482649,51.41790629096718],[-3.091115246292441,51.41790628630348],[-3.089113288669101,51.41826461440469],[-3.0891132869167603,51.418264611112576],[-3.0891130004092875,51.41826466588967],[-3.0891128784362487,51.41826468779838],[-3.0891128788739275,51.418264689170016],[-3.087121551241073,51.41864470645176],[-3.0871215508028107,51.41864470590303],[-3.087121488936624,51.418644718501874],[-3.087121194965684,51.41864477436901],[-3.087121196717895,51.418644777661136],[-3.085140745295395,51.41904643427197],[-3.0851407444191303,51.41904643290019],[-3.0851406176120895,51.41904646001489],[-3.0851403394289365,51.419046516430754],[-3.085140341181024,51.41904651972292],[-3.0831714185493153,51.41946968147689],[-3.083171418111567,51.41946968037955],[-3.0831713163119536,51.41946970338611],[-3.0831710139876343,51.41946976829238],[-3.0831710161782957,51.41946977158471],[-3.0812141701312217,51.41991432075782],[-3.081214168816845,51.41991431883725],[-3.0812139941722503,51.419914360742816],[-3.0812137664350665,51.41991441222994],[-3.081213768187408,51.41991441497357],[-3.0792695882873673,51.42038021715786],[-3.0792695865351276,51.42038021441421],[-3.079269354399499,51.420380273027696],[-3.0792691902828397,51.42038031246562],[-3.0792691915971457,51.4203803143862],[-3.0773382174683124,51.420867241223974],[-3.0773382152782744,51.42086723765723],[-3.0773379032668875,51.420867320374136],[-3.077337870793519,51.42086732859047],[-3.077337871231959,51.420867328864944],[-3.075420742202621,51.421375221074925],[-3.0754207413263153,51.421375219977364],[-3.075420650045374,51.421375245450164],[-3.0754203485595593,51.42137532514895],[-3.0754203511884795,51.42137532844161],[-3.0735177001072627,51.42190401662607],[-3.0735176979165844,51.42190401388216],[-3.0735174547843247,51.42190408482308],[-3.0735173060106775,51.421904126179506],[-3.073517307325082,51.421904127825854],[-3.071629656989793,51.42245346589075],[-3.0716296552376243,51.42245346342128],[-3.0716294252627674,51.42245353326686],[-3.0716292712168247,51.42245357818447],[-3.071629272531182,51.42245357983084],[-3.0697571976239577,51.42302340143559],[-3.06975719587156,51.42302339924041],[-3.0697570040718047,51.42302346004776],[-3.069756810519013,51.423023519208535],[-3.0697568122714194,51.42302352140373],[-3.067900832718697,51.423613668167086],[-3.0679008300901858,51.42361366487426],[-3.0679005206517576,51.42361376731678],[-3.0679005017784786,51.4236137733425],[-3.0679005022169,51.423613773617014],[-3.0660612284655304,51.42422405403865],[-3.0660612267132565,51.424224051843396],[-3.0660610458699518,51.424224114570116],[-3.0660608505454823,51.42422417920991],[-3.066060852736508,51.42422418140536],[-3.0642388962319416,51.42485439084871],[-3.0642388957935367,51.42485439057418],[-3.064238875601233,51.424854397970144],[-3.0642385204895244,51.42485452067827],[-3.064238523994285,51.42485452479451],[-3.0624343896357624,51.42550448822344],[-3.062434386568776,51.42550448493026],[-3.0624340915736408,51.42550459559478],[-3.062434016509297,51.42550462271164],[-3.062434017385732,51.42550462353499],[-3.0606481943793775,51.42617416565365],[-3.0606481939409824,51.426174165379116],[-3.0606481610161174,51.42617417797938],[-3.060647881815891,51.426174282887516],[-3.060647884883162,51.42617428590644],[-3.0588809722993573,51.426863184321796],[-3.0588809709845655,51.426863183223894],[-3.058880863862599,51.42686322650459],[-3.058880607038209,51.42686332675766],[-3.0588806101057955,51.42686332950233],[-3.057133201879655,51.427571351146085],[-3.057133196621373,51.42757134620574],[-3.055405406062823,51.42829845059667],[-3.0554054056248448,51.42829845004781],[-3.055405377524095,51.42829846237508],[-3.055405049983479,51.42829860015874],[-3.0554050539273208,51.42829860372692],[-3.0536981219458603,51.4290442685443],[-3.0536981197543582,51.42904426689719],[-3.053697975730281,51.429044332095295],[-3.053697770237284,51.42904442194394],[-3.0536977728663346,51.4290444244142],[-3.052011814772076,51.429808595225545],[-3.0520118108279424,51.42980859193156],[-3.0520115293492394,51.429808724247636],[-3.0520115148585054,51.42980873082204],[-3.0520115152968796,51.429808731096614],[-3.050347093933379,51.43059115432719],[-3.0503470934950037,51.43059115405263],[-3.0503470741725054,51.43059116336681],[-3.0503467492091985,51.430591316224366],[-3.050346753591653,51.430591319792974],[-3.048704416134515,51.43139173803687],[-3.0487044117521105,51.4313917344682],[-3.048704111792553,51.43139188596554],[-3.048704081490001,51.431391900758484],[-3.0487040819279283,51.431391901307364],[-3.047084281274882,51.432210092775435],[-3.0470842808365153,51.43221009250085],[-3.047084268977728,51.43221009880205],[-3.0470839488045858,51.43221026043121],[-3.0470839536257732,51.432210264000226],[-3.0454871906749075,51.43304597649999],[-3.0454871876067777,51.43304597430357],[-3.045486995659463,51.433046078410314],[-3.0454868594999067,51.43304614963804],[-3.0454868616912947,51.43304615128529],[-3.0439135751078394,51.43389915673432],[-3.0439135689716164,51.43389915234139],[-3.0423636831562546,51.43476950566822],[-3.042363691923148,51.43476951143454],[-3.0408389135808593,51.43565625361377],[-3.040838906567463,51.43565624894578],[-3.03933875313916,51.43655965463115],[-3.039338752700783,51.436559654356536],[-3.039338737322833,51.43655966394602],[-3.0393384429566113,51.43655984120739],[-3.0393384482170123,51.43655984450273],[-3.037863990252787,51.437479269707225],[-3.037863988937686,51.43747926888337],[-3.0378639269815064,51.437479308886026],[-3.0378636892729003,51.437479457109134],[-3.037863693656571,51.43747945985531],[-3.0364150322272563,51.438414837590926],[-3.036415025212861,51.43841483347125],[-3.034992395482634,51.439366020038264],[-3.034992392851892,51.4393660186648],[-3.0349922750713088,51.439366100043145],[-3.0349921028023066,51.439366215393655],[-3.034992106309785,51.43936621731638],[-3.0335964849396952,51.44033255882307],[-3.033596481871101,51.440332556900636],[-3.03359632847803,51.4403326670518],[-3.033596195309917,51.440332759114646],[-3.0335961979401302,51.44033276076246],[-3.032227717561739,51.44131415924786],[-3.032227715369887,51.441314157874665],[-3.032227611633333,51.44131423487232],[-3.0322274340591275,51.44131436228377],[-3.0322274380055445,51.44131436420692],[-3.0308865104379428,51.44231052606744],[-3.0308865051763703,51.442310523320316],[-3.0308862682289366,51.44231070581712],[-3.030886235260541,51.442310730203815],[-3.0308862361372757,51.44231073075309],[-3.0295732346590807,51.44332138100628],[-3.0295732333434047,51.44332138045663],[-3.0295731898184597,51.44332141498358],[-3.0295730020983385,51.443321559663715],[-3.029573006483199,51.44332156186161],[-3.0282883708975916,51.44434636523035],[-3.028288368266775,51.44434636385673],[-3.0282882605406862,51.44434645319108],[-3.028288108415491,51.444346574308206],[-3.0282881119236333,51.444346575956835],[-3.0270322733986266,51.4453851889261],[-3.0270322716445377,51.44538518810176],[-3.027032211839372,51.445385239346656],[-3.0270320130875197,51.44538540376316],[-3.0270320179114094,51.445385405961495],[-3.0258053220272494,51.446437541722936],[-3.025805318957423,51.44643754034888],[-3.0258051949350686,51.44643765078842],[-3.025805069602242,51.446437758209576],[-3.0258050726720733,51.44643775958362],[-3.024607891964129,51.44750310199446],[-3.024607886701177,51.44750309979565],[-3.024607693168426,51.4475032784759],[-3.024607645228337,51.44750332122624],[-3.024607646544076,51.44750332177595],[-3.0234401064948733,51.44858176733241],[-3.023440112196302,51.44858176980594],[-3.022303021974476,51.44967257728374],[-3.0223030167113727,51.44967257508483],[-3.0223028372082568,51.44967275377327],[-3.0223027866165015,51.44967280255495],[-3.022302788371271,51.44967280310507],[-3.0211963129044945,51.45077580483063],[-3.0211963111503044,51.450775804006206],[-3.0211962574672553,51.45077585991648],[-3.021196086755109,51.450776029833285],[-3.021196091579884,51.45077603175757],[-3.0201205406380534,51.45189092082567],[-3.0201205331809535,51.45189091807613],[-3.0190758064994534,51.45301781867827],[-3.0190758130792403,51.45301782115279],[-3.018063063034894,51.4541554958575],[-3.0180630590867077,51.45415549448248],[-3.018062949471456,51.45415562303027],[-3.0180628543947496,51.45415572964723],[-3.0180628574654915,51.454155730747175],[-3.017082017535706,51.45530423544836],[-3.017082011393474,51.455304233522725],[-3.017081838798349,51.45530444430217],[-3.0170818154653105,51.45530447171092],[-3.0170818163427677,51.45530447198601],[-3.016133159876321,51.45646348899236],[-3.016133158121364,51.45646348844216],[-3.016133115845463,51.45646354244038],[-3.0161329648169986,51.45646372690543],[-3.016132970081874,51.456463728556024],[-3.0152167886123955,51.45763290451676],[-3.0152167846633477,51.457632903415934],[-3.0152166868827845,51.45763303361769],[-3.0152165996838503,51.457633145176885],[-3.01521660319383,51.45763314627732],[-3.014333152278975,51.45881215851205],[-3.01433314657481,51.45881215686097],[-3.014333006922703,51.45881235175752],[-3.0143329945886785,51.45881236847828],[-3.014332995466185,51.45881236875338],[-3.013482397290035,51.460001071360125],[-3.0134824047493765,51.46000107356148],[-3.0126652935886375,51.461198582686706],[-3.012665285690043,51.46119858048488],[-3.011881551328799,51.462405060199195],[-3.0118815486961035,51.462405059373815],[-3.011881496235407,51.462405144082176],[-3.011881390451102,51.46240530718922],[-3.0118813952780497,51.46240530856529],[-3.0111316018952574,51.46361989273845],[-3.0111315983842464,51.463619891912224],[-3.0111315287115996,51.463620010616744],[-3.011131447148972,51.46362014302483],[-3.011131451098441,51.46362014412579],[-3.010415649083572,51.464842744304235],[-3.010415648205968,51.46484274402909],[-3.0104156340913932,51.46484276925095],[-3.010415520755245,51.46484296307073],[-3.0104155264606796,51.4648429644477],[-3.0097339563004,51.46607317935944],[-3.0097339505948284,51.46607317798244],[-3.0097338486672673,51.46607337318403],[-3.0097338164659084,51.46607343102978],[-3.009733818221151,51.466073431580064],[-3.0090867073315497,51.46731085113855],[-3.0090867055762582,51.46731085058824],[-3.0090866786513626,51.46731090514734],[-3.009086573629793,51.46731110610559],[-3.0090865793355,51.467311107482615],[-3.0084741098163343,51.46855538681505],[-3.0084741067434764,51.46855538626345],[-3.0084740594955552,51.468555488530356],[-3.0084739831295124,51.46855564370828],[-3.0084739875192064,51.46855564453546],[-3.00789634688499,51.46980640912353],[-3.0078963411783226,51.46980640802074],[-3.007896259452382,51.4698065972059],[-3.0078962280989,51.469806665200956],[-3.007896230293458,51.46980666575169],[-3.007353581461843,51.47106356927846],[-3.0073535739989214,51.471063567899606],[-3.0068459089359187,51.47232667557191],[-3.0068459168382455,51.472326676951226],[-3.006373794321356,51.473594600456416],[-3.006373791687412,51.4735945999052],[-3.006373762038393,51.473594686553724],[-3.0063736970276462,51.47359486094228],[-3.0063737022962296,51.473594861770415],[-3.005937058453436,51.47486773751997],[-3.005937050549996,51.47486773641489],[-3.005535941242085,51.476145437856474],[-3.0055359359732203,51.4761454370283],[-3.0055358841133586,51.47614561910982],[-3.005535858427006,51.47614570082471],[-3.005535861061793,51.47614570110164],[-3.00517056418273,51.477427349201974],[-3.005170563304914,51.4774273489268],[-3.005170555316947,51.47742738046296],[-3.0051704990226935,51.47742757762619],[-3.005170504730957,51.47742757845481],[-3.0048410644698547,51.47871301120441],[-3.0048410635920173,51.478713010929226],[-3.004841056484268,51.47871304164336],[-3.004840996577134,51.478713275832874],[-3.004841003164101,51.478713276662404],[-3.0045475307537477,51.48000206766459],[-3.0045475246051754,51.480002067109794],[-3.004547481877414,51.48000228184136],[-3.0045474703252553,51.48000233230038],[-3.0045474720816867,51.48000233257645],[-3.004290050060895,51.481294124771125],[-3.004290048304418,51.48129412449506],[-3.004290039828153,51.48129417440855],[-3.0042899966544003,51.481294390785315],[-3.0042900028031396,51.48129439134013],[-3.004068712520887,51.48258879087798],[-3.004068708128501,51.48258879059922],[-3.0040686857555876,51.48258894720019],[-3.0040686670191623,51.48258905690003],[-3.0040686700936186,51.482589057177435],[-3.003883577457305,51.48388570664252],[-3.003883569990252,51.48388570608635],[-3.003734684029685,51.48518467285818],[-3.0037346932542883,51.48518467341614],[-3.003622179367994,51.486484529258675],[-3.003622170142414,51.48648452897499],[-3.003545988185651,51.48778568018257],[-3.0035459837927685,51.4877856799038],[-3.0035459794658133,51.48778582253375],[-3.003545972109212,51.48778594760562],[-3.0035459756233744,51.487785947883495],[-3.003506182475071,51.48908748528759],[-3.0035061811576704,51.489087485011964],[-3.0035061810501165,51.48908752615637],[-3.0035061748040888,51.48908773050111],[-3.003506180515214,51.48908773078122],[-3.003502777463592,51.49038951013738],[-3.003502772190255,51.49038951040629],[-3.0035027769702434,51.490389698853015],[-3.003502776782369,51.49038977071857],[-3.003502778979294,51.49038977072081],[-3.003535769787081,51.49169137400521],[-3.0035357662719013,51.491691374001626],[-3.0035357729760688,51.49169149881345],[-3.003535776576493,51.49169163431967],[-3.0035357805310707,51.4916916343237],[-3.0036051721404773,51.492992939996924],[-3.003605180489984,51.49299293973113],[-3.003710927429686,51.494293030432445],[-3.0037109173215373,51.49429303097076],[-3.00385303246839,51.49559203086959],[-3.003853029391628,51.49559203114077],[-3.0038530440563944,51.4955921370341],[-3.0038530607931926,51.49559229093143],[-3.0038530651882582,51.49559229066159],[-3.0040314516243534,51.49688928529562],[-3.0040314481080577,51.49688928556635],[-3.004031468877359,51.49688941011799],[-3.0040314874244327,51.496889544267745],[-3.004031491380173,51.49688954399747],[-3.004246168990126,51.498184656379266],[-3.0042461764623694,51.498184655838244],[-3.004496997294361,51.499476973034255],[-3.0044969946568187,51.499476973305896],[-3.00449701681099,51.49947707317212],[-3.0044970476031025,51.4994772314722],[-3.004497051998537,51.499477231202334],[-3.0047839855852856,51.5007666179956],[-3.004783977232945,51.50076661881007],[-3.005107068450482,51.5020531970423],[-3.0051070776827555,51.50205319595439],[-3.0054659723430865,51.50333554466619],[-3.0054659679465807,51.503335545210376],[-3.0054660167652294,51.50333570325385],[-3.005466044202437,51.50333580120505],[-3.005466046840198,51.5033358009334],[-3.005860768202689,51.504614043801496],[-3.00586075940944,51.504614044889905],[-3.006291275992662,51.505888046568565],[-3.006291275552426,51.50588804684242],[-3.0062912790441763,51.505888056446246],[-3.0062913619299336,51.50588830147503],[-3.0062913689645856,51.50588830065914],[-3.006757380446878,51.50715716350921],[-3.0067573760493236,51.50715716432775],[-3.006757432390671,51.507157305920266],[-3.0067574734246696,51.50715741732507],[-3.0067574765028855,51.50715741677953],[-3.007258929755994,51.50842100866487],[-3.00725892755681,51.50842100921129],[-3.007258955960629,51.50842107534461],[-3.0072590297741537,51.50842126166433],[-3.0072590350509345,51.508421260846625],[-3.0077957799646136,51.509679196329714],[-3.00779577556684,51.50967919714827],[-3.007795845073956,51.50967934972498],[-3.0077958870250914,51.509679447964075],[-3.007795890103465,51.5096794474185],[-3.008367880054983,51.51093159348618],[-3.0857216085095134,51.496686095834754],[-3.085534904809343,51.49627889330921],[-3.099412069107098,51.493880514166314],[-3.099301614960004,51.493622861846184],[-3.0991984116417766,51.49336411918266],[-3.103398944397174,51.492735419990645],[-3.1033198947403595,51.492521416377635],[-3.106131467705312,51.49213277352675],[-3.106068839351762,51.49194863318713],[-3.1074798224055837,51.49176963219114],[-3.1074271333650216,51.49160022853431],[-3.1073791943229803,51.491430294992306],[-3.1102194068018854,51.49113394148288],[-3.1102586326261914,51.49127295670316],[-3.110258631747331,51.491272956977355],[-3.110258637454407,51.49127297508154],[-3.1102586400880963,51.491272984682205],[-3.1102586405275665,51.491272984407956],[-3.1103017553567085,51.49141157898789],[-3.113123644532451,51.4910534578703],[-3.113160193320992,51.491160871029365],[-3.1131601941998293,51.491160870755145],[-3.1131997328906,51.4912678477451],[-3.1131997324511507,51.49126784801934],[-3.113199735964357,51.49126785707142],[-3.1131997403557103,51.49126786914083],[-3.113199740795104,51.49126786914087],[-3.1132422645769964,51.491374398986444],[-3.113242264137602,51.49137439898641],[-3.1132422645768196,51.49137439980933],[-3.113242272920934,51.49137442038225],[-3.113242273360326,51.4913744203823],[-3.1132877690779632,51.49148047071222],[-3.1132877686385703,51.49148047071218],[-3.113287774348032,51.491480483330285],[-3.1132877778613968,51.49148049183376],[-3.113287778300793,51.491480491833805],[-3.1133362319195697,51.49158603027651],[-3.1119556452731336,51.491841183984455],[-3.111900261893686,51.49172054402993],[-3.11051274101342,51.4919606003755],[-3.1104542463179623,51.4918242296088],[-3.110399566560635,51.49168722559494],[-3.1089994654458017,51.491896889302495],[-3.108942983196136,51.4917440325333],[-3.1075372250636564,51.49193839294153],[-3.1075993628997605,51.49210657002943],[-3.10899947642148,51.49189691975071],[-3.1089994729093045,51.491896909875614],[-3.109060211781117,51.492049107436756],[-3.1090602113417165,51.49204910743669],[-3.109060215732552,51.492049117860475],[-3.1090602240749923,51.492049138159395],[-3.109060224514473,51.492049137885154],[-3.109125218292336,51.492200671019816],[-3.110512752869746,51.49196062780639],[-3.110512747161061,51.491960614913864],[-3.1105750555091713,51.49209634886173],[-3.1119556562522166,51.491841208397865],[-3.1120143927065294,51.49196120266984],[-3.1120143922671275,51.49196120266979],[-3.112014395341548,51.49196120843031],[-3.1120144041252105,51.49196122653469],[-3.112014405004015,51.49196122653477],[-3.1120764993877836,51.4920805866401],[-3.1120765007060505,51.49208058636592],[-3.1121419100014496,51.49219922808634],[-3.1121419095619802,51.4921992283606],[-3.1121419179071825,51.492199242899076],[-3.1121419231778034,51.49219925222564],[-3.112141923617275,51.4921992519514],[-3.112210640380144,51.492317162937375],[-3.1122106399407405,51.492317162937326],[-3.11221064477231,51.49231717089236],[-3.112210653996172,51.49231718625381],[-3.1122106544355783,51.49231718625386],[-3.112282658044613,51.49243433056493],[-3.110942915130173,51.49276361560033],[-3.110861898618444,51.49263180181822],[-3.110861898179252,51.492631800995284],[-3.110784579526568,51.49249912350586],[-3.109427232558459,51.49279900320257],[-3.1093454620390535,51.4926506698861],[-3.1092678512881182,51.49250146775077],[-3.107894556670467,51.49277157601737],[-3.107979923746015,51.492935699300105],[-3.1066143688611643,51.49322071307652],[-3.1067125036326027,51.49339875136116],[-3.1094272492471142,51.492799033102806],[-3.1094272439769757,51.49279902377611],[-3.109513138288162,51.49294642380125],[-3.1095131378487526,51.4929464238012],[-3.1095131439975088,51.49294643395088],[-3.109513154977165,51.492946452878584],[-3.109513155855995,51.49294645287868],[-3.109603170479793,51.49309291466578],[-3.110942930941859,51.4927636422087],[-3.1110276040525733,51.492894527537736],[-3.111027603613103,51.49289452781198],[-3.1110276119586437,51.49289454015617],[-3.1110276207432452,51.49289455387188],[-3.111027621182653,51.49289455387193],[-3.1111159588248896,51.49302452280987],[-3.112436481084517,51.49266624617119],[-3.1125182083135003,51.49278087755424],[-3.1125182078740243,51.492780877828494],[-3.112518217977341,51.49278089126992],[-3.112518224566335,51.49278090059657],[-3.112518225005806,51.49278090032233],[-3.1126031447231486,51.49289462373399],[-3.112603144283674,51.49289462400825],[-3.1126031596585837,51.49289464348466],[-3.1126031618549423,51.49289464650211],[-3.112691248601467,51.49300742709765],[-3.1126912481619935,51.49300742737191],[-3.1126912587050097,51.493007439990464],[-3.1126912661727655,51.49300744986579],[-3.112691266612228,51.49300744959154],[-3.1127825116202588,51.49311927584266],[-3.114059767844618,51.4927043522456],[-3.114142316865325,51.49280129510812],[-3.1141423159864488,51.49280129538236],[-3.114227580202144,51.49289734335932],[-3.1142275802020882,51.49289734363361],[-3.114227585473948,51.492897349119936],[-3.1142275973354323,51.492897362561344],[-3.1142275977748426,51.49289736256136],[-3.1143155170113848,51.492992447616935],[-3.114315516571921,51.49299244789121],[-3.114315529312219,51.49299246160696],[-3.114315534584155,51.492992466818976],[-3.1144061171995863,51.49308659854822],[-3.1156338774210193,51.492617051370964],[-3.1157137493289624,51.49269686095995],[-3.115713752404337,51.4926968639774],[-3.1157137651451077,51.49269687687013],[-3.115713765584562,51.49269687659586],[-3.1157958569236412,51.492775803580074],[-3.115795856044782,51.49277580385432],[-3.115880158913563,51.49285384027408],[-3.1158801584741513,51.49285384027405],[-3.1158801672611025,51.492853848229174],[-3.115880175608714,51.49285385563569],[-3.1159666473970433,51.49293096143642],[-3.1159666482758626,51.492930961436464],[-3.1160552441753637,51.49300709793498],[-3.116055248129598,51.49300710095247],[-3.1160552621888664,51.49300711329665],[-3.116055262628319,51.49300711302238],[-3.1161459751750944,51.493082273081754],[-3.1161459742962365,51.49308227335599],[-3.116238811842794,51.493156463006365],[-3.1173657300457136,51.49259699616336],[-3.117288380202966,51.492535184404154],[-3.1172127645701075,51.49247253415493],[-3.11713891082371,51.49240906873556],[-3.1170668637746606,51.49234482627882],[-3.1182535250692083,51.49183578514589],[-3.118311162857478,51.49188717743903],[-3.1183111654936186,51.49188717990783],[-3.118311174280805,51.49188718786276],[-3.1183111747202252,51.49188718758849],[-3.1183702403146465,51.491937944090225],[-3.1183702398752233,51.49193794436451],[-3.1184307284451718,51.491988059860866],[-3.1184307280057415,51.49198806013516],[-3.1184926079190194,51.49203750856461],[-3.1173657146679936,51.49259698381928],[-3.117444780709379,51.49265794309509],[-3.1174447802699774,51.492657943095054],[-3.1174447921328756,51.4926579521474],[-3.11744479652654,51.49265795543917],[-3.1174447965265784,51.49265795516489],[-3.117525538786608,51.49271803177935],[-3.1175255383471687,51.492718032053624],[-3.117607964736366,51.492777232038236],[-3.117607971766323,51.492777236975904],[-3.1176079809930903,51.49277724383373],[-3.1176079814325344,51.49277724355945],[-3.11769205065184,51.49283553646191],[-3.1198152778194763,51.49162115055528],[-3.1198666796853924,51.491655563518684],[-3.119866679245991,51.49165556351867],[-3.1198666875941807,51.49165556900482],[-3.119866689791065,51.491655570376366],[-3.1198666897910905,51.49165557010207],[-3.1199190562508377,51.49168942460064],[-3.1199190566902284,51.49168942460065],[-3.1199723508361656,51.491722696219774],[-3.1189631086003717,51.492363744718155],[-3.1190354119147083,51.49240733589199],[-3.119035411475285,51.49240733616627],[-3.1190354228992363,51.49240734274977],[-3.1190354259749116,51.49240734466996],[-3.1190354264143436,51.492407344395666],[-3.119108922920615,51.49245013269877],[-3.1191089229205833,51.49245013297307],[-3.1191089264356617,51.492450134893254],[-3.1191089374202723,51.49245014120243],[-3.119183634148081,51.492492130747245],[-3.119183634587508,51.492492130472975],[-3.119259478370585,51.49253329080863],[-3.119259477931159,51.49253329108291],[-3.119336476677366,51.49257362741911],[-3.119336476237961,51.49257362741909],[-3.119336492055932,51.492573635648476],[-3.1193364924953646,51.49257363537419],[-3.119414591719439,51.492613118631574],[-3.119414591280028,51.49261311863156],[-3.1194145952345473,51.49261312055175],[-3.119414607098062,51.49261312658663],[-3.119414607098075,51.492613126312335],[-3.1194937988894424,51.49265175292262],[-3.119493798450022,51.4926517531969],[-3.1195740735797783,51.49268951822031],[-3.119574077534305,51.49268952014049],[-3.119574089837283,51.492689525901085],[-3.1195740902766897,51.49268952590109],[-3.1196553929400985,51.49272640327566],[-3.118819197102523,51.49345811427568],[-3.1189221414486172,51.49350311538503],[-3.11892214188806,51.49350311511074],[-3.1190262865814167,51.493546970434416],[-3.1190262861419757,51.49354697070871],[-3.119026307672611,51.49354697921262],[-3.119131663254507,51.493589693136514],[-3.1191316628150876,51.49358969313651],[-3.1191316751183553,51.49358969779994],[-3.119131683906357,51.493589701640374],[-3.119131684345792,51.49358970136609],[-3.1192382182959517,51.493631260994015],[-3.1192382178565166,51.493631261268305],[-3.119238229281005,51.4936312653831],[-3.1192382393872577,51.49363126949788],[-3.1192382398266933,51.4936312692236],[-3.1193459196243847,51.49367166193372],[-3.1193459191849557,51.493671662207994],[-3.1193459367611247,51.49367166851737],[-3.1193459407157764,51.49367166988897],[-3.119345941155197,51.493671669888975],[-3.119454734279311,51.49371088305954],[-3.119454733839898,51.493710883059535],[-3.1194547355975177,51.49371088360817],[-3.1194547558101524,51.493710891014786],[-3.119454755810167,51.49371089074049],[-3.11956462842088,51.49374891229841],[-3.1195646279814437,51.493748912572684],[-3.1195646385272044,51.49374891613885],[-3.1195646508305956,51.49374892025365],[-3.119564650830612,51.49374891997935],[-3.1196755699664487,51.493785738948816],[-3.119675569527007,51.49378573922311],[-3.1196755866639374,51.49378574443523],[-3.1196755919368147,51.49378574635545],[-3.1196755919368373,51.49378574608115],[-3.119787524196544,51.49382135121215],[-3.119787528590625,51.49382135258377],[-3.119787546166971,51.49382135834446],[-3.1197875466064087,51.49382135807018],[-3.119900457270107,51.49385573811278],[-3.119900457270087,51.49385573838708],[-3.119900470012993,51.493855741953276],[-3.1199004796800054,51.49385574497079],[-3.1200143349062177,51.49388888949808],[-3.120014334906201,51.49388888977238],[-3.1200143573161694,51.493888896081764],[-3.1200143577556028,51.49388889580747],[-3.120129144794211,51.49392080152483],[-3.120703338791121,51.49309654693365],[-3.120611499146134,51.49307101990691],[-3.120520401383517,51.49304450041973],[-3.1204300485837484,51.49301698902252],[-3.1203405013889465,51.492988504644764],[-3.121005387645452,51.492191259055986],[-3.121072545083294,51.492212621282164],[-3.1210725450832792,51.492212621556455],[-3.1210725560682193,51.49221262484819],[-3.1210725582652006,51.49221262567112],[-3.1210725587046153,51.49221262539683],[-3.1211403032779517,51.492233252753834],[-3.1211403032779415,51.492233253028125],[-3.121140310747706,51.49223325522262],[-3.1211403164598797,51.492233256868495],[-3.1211403168992873,51.492233256868495],[-3.121208627953945,51.49225314277189],[-3.121208627514528,51.49225314304618],[-3.1212086314691194,51.49225314414342],[-3.12120864157529,51.49225314688654],[-3.121277497578138,51.49227228530049],[-3.120703319896702,51.49309654144735],[-3.1207958482511997,51.49312106092464],[-3.120795847811756,51.49312106147324],[-3.120889066189,51.49314457367379],[-3.12088906618901,51.49314457339949],[-3.1209828906570705,51.493167057473684],[-3.120982890217645,51.493167057747975],[-3.120982901642254,51.49316706021684],[-3.1209829091121755,51.493167062137054],[-3.120982909551605,51.49316706186276],[-3.1210773664695175,51.493188524667],[-3.1210773669089438,51.493188524392714],[-3.1211723912387876,51.493208950838174],[-3.1211723907993645,51.49320895111246],[-3.1211724092545428,51.493208954952905],[-3.1211724101333655,51.49320895495291],[-3.1212679904448124,51.493228342569374],[-3.1212679900053892,51.493228342843665],[-3.1212679930812572,51.49322834339231],[-3.1212680097788206,51.493228346684106],[-3.12126801021825,51.49322834640981],[-3.1213641179438207,51.4932466899839],[-3.1213641179438083,51.49324669025822],[-3.1213641249743778,51.49324669135549],[-3.121364136838445,51.49324669382432],[-3.121364137277867,51.49324669355001],[-3.1214607438499598,51.493263987045566],[-3.1214607438499526,51.49326398731986],[-3.1214607631840225,51.493263990611666],[-3.1215578391560053,51.493280229089734],[-3.121557838716591,51.493280229089734],[-3.121557845747172,51.493280230187],[-3.1215578580506786,51.493280232381515],[-3.1215578584900987,51.49328023210723],[-3.1216553730969543,51.49329541035468],[-3.1216553730969476,51.49329541062898],[-3.1216553752940044,51.49329541090329],[-3.1216553924310495,51.493295413646464],[-3.121655392870471,51.493295413372174],[-3.1217533171046687,51.49330952699888],[-3.121753317104663,51.49330952727317],[-3.121753335559966,51.49330952974204],[-3.121753336878203,51.49330952974205],[-3.121851640413848,51.49332257408366],[-3.121851640413842,51.493322574357954],[-3.1218516470050264,51.493322575180905],[-3.121851660626812,51.49332257682682],[-3.121851660626822,51.493322576552515],[-3.1219503140166776,51.49333454804197],[-3.1219503140166736,51.49333454831627],[-3.121950317531978,51.49333454859059],[-3.121950333350834,51.49333455051081],[-3.121950333790255,51.49333455023651],[-3.1220493075870017,51.493345445032546],[-3.122049307147584,51.49334544530682],[-3.1221486101327103,51.49335526423158],[-3.122148610132722,51.49335526368299],[-3.1222481328854808,51.49336399576312],[-3.1222481407949267,51.49336399631175],[-3.122248152659092,51.49336399740901],[-3.1223479044002023,51.49337164346686],[-3.1221848877619673,51.49426467901235],[-3.1223098520206953,51.49427287825511],[-3.122309852020692,51.4942728785294],[-3.1223098695975917,51.4942728796267],[-3.1223098779466194,51.49427288017533],[-3.1223098779466225,51.49427287990105],[-3.1224350277035526,51.4942797152105],[-3.122435027264127,51.49427971548479],[-3.122435038249694,51.49427971603343],[-3.1224350523112228,51.49427971658209],[-3.1224350523112263,51.4942797163078],[-3.1225603998590703,51.494285188506296],[-3.1225603998590765,51.49428518795769],[-3.122685856423254,51.49428929265568],[-3.122685856423251,51.49428929292997],[-3.1226858805915167,51.49428929347862],[-3.122685881470363,51.49428929347863],[-3.1228114334175316,51.49429203067566],[-3.122811445721377,51.49429203094997],[-3.122811458464646,51.494292031224305],[-3.1228114584646467,51.49429203095],[-3.1229370679931656,51.49429339982291],[-3.1229370802970124,51.49429339982291],[-3.122937093040282,51.494293400097206],[-3.122937093040282,51.494293399822915],[-3.123062720590792,51.49429339982292],[-3.1230627205907924,51.494293400097206],[-3.1230627460773324,51.49429339982291],[-3.1230627465167555,51.49429339982291],[-3.123188355166429,51.4942920312243],[-3.1231883683491204,51.49429203094997],[-3.123188380213544,51.494292030949964],[-3.123313932160713,51.494289293752914],[-3.1233139572078237,51.49428929320427],[-3.123313957207823,51.49428929292997],[-3.123439413772001,51.49428518823199],[-3.1234394137720036,51.49428518850629],[-3.123564761319855,51.49427971685639],[-3.1235647617592766,51.49427971685638],[-3.123564786366951,51.49427971575908],[-3.1235647863669476,51.49427971548478],[-3.123689936563301,51.49427288017533],[-3.123689950624822,51.49427287935236],[-3.123689961610386,51.4942728788037],[-3.1238149267479507,51.494264679012346],[-3.1238149267479485,51.49426467873806],[-3.123939618052383,51.494255121049235],[-3.1239396426600092,51.49425511885468],[-3.1240640482559634,51.494244203817935],[-3.12406404825597,51.494244204092226],[-3.124188179118107,51.49423193061121],[-3.124188179118094,51.494231930062625],[-3.124311898575591,51.49421831158022],[-3.1243119139553306,51.49421830993427],[-3.1243119231831686,51.49421830883698],[-3.1244352422109753,51.49420334398287],[-3.1244352422109833,51.49420334425716],[-3.1244352624243277,51.49420334178825],[-3.1244352676973683,51.49420334096529],[-3.1245581493737045,51.49418703522709],[-3.1245581542073184,51.49418703440414],[-3.1245581739812325,51.49418703193522],[-3.1245581739812187,51.494187031660914],[-3.1246805818238803,51.494169389429295],[-3.1246805980823975,51.49416938696039],[-3.1246806059919545,51.4941693858631],[-3.1248025017612733,51.494150412626034],[-3.1248025087919773,51.49415041152874],[-3.1248025259293195,51.494150408785515],[-3.124923872704116,51.49413011030539],[-3.12492389072026,51.49413010701354],[-3.1249238968721147,51.494130105916256],[-3.125044681460013,51.4941084841151],[-3.1250446814599995,51.494108483840805],[-3.125164818164938,51.494085554082524],[-3.1251648186043717,51.494085554356815],[-3.1251648388175477,51.494085550242],[-3.125164843211721,51.494085549419026],[-3.1252843201600955,51.49406131417447],[-3.125284320599527,51.49406131444876],[-3.1252843421309144,51.494061309785295],[-3.125284344328004,51.49406130951096],[-3.125403150085808,51.49403577097673],[-3.124922465616704,51.493188520826536],[-3.12501690407947,51.49316706213705],[-3.125016904518897,51.49316706241134],[-3.1250169234134204,51.493167057747975],[-3.1251107474420614,51.49314457367378],[-3.125110751396731,51.49314457285081],[-3.1251107658971677,51.49314456928471],[-3.1252039473642252,51.4931210661366],[-3.1252039587887945,51.49312106311913],[-3.1252039658192983,51.49312106147324],[-3.125296474839939,51.493096546933636],[-3.1252964801128122,51.49309654556207],[-3.12529649373439,51.49309654199593],[-3.125388304378627,51.49307102292437],[-3.125985456754315,51.49388889608173],[-3.1260993339510663,51.493855744970766],[-3.1260993396633996,51.49385574332484],[-3.126099357239805,51.49385573811274],[-3.126099356800379,51.49385573811276],[-3.126212266145862,51.49382135861878],[-3.126212266585278,51.49382135861877],[-3.1262122846010394,51.493821352858056],[-3.1262122894345414,51.49382135148644],[-3.1263242432252447,51.493785739497405],[-3.126324243225222,51.49378573922311],[-3.126435162800475,51.493748920253644],[-3.126435169391579,51.493748918059076],[-3.126435185649628,51.49374891257266],[-3.1264351852102035,51.493748912572684],[-3.126545058260291,51.49371089046617],[-3.126545058699731,51.49371089074046],[-3.1266538948855063,51.493671661933675],[-3.126653894885486,51.49367166165938],[-3.126761574683205,51.49363126922355],[-3.126761588744095,51.493631263737186],[-3.1267615953351404,51.493631261268305],[-3.1268681297247016,51.49358970164035],[-3.126868145543161,51.49358969533102],[-3.1268681512553957,51.49358969313647],[-3.1269735055190657,51.4935469794869],[-3.1269735059584804,51.493546979486894],[-3.1269735178222704,51.493546974549155],[-3.1269735274890853,51.49354697070867],[-3.1269735270496484,51.49354697043439],[-3.127077677894634,51.49350311291615],[-3.127077672621861,51.49350311538499],[-3.127893304911236,51.49424382103258],[-3.128016813215791,51.494189829646736],[-3.12801681365524,51.494189829921005],[-3.1280168316706485,51.49418982169135],[-3.1280168387010696,51.49418981867379],[-3.1281387949669783,51.49413450072859],[-3.1281387954064366,51.494134501002875],[-3.128259234341158,51.49407784004383],[-3.1282592339016824,51.494077839495255],[-3.1283780210450107,51.49401989889561],[-3.1283780214844716,51.49401989916988],[-3.1284951959388665,51.49396066028062],[-3.1284952064842826,51.49396065479421],[-3.128495218347896,51.49396064875913],[-3.128610718155191,51.49390014203489],[-3.128610717715728,51.49390014176061],[-3.1287244848737084,51.49383839875321],[-3.1287244853131644,51.49383839902749],[-3.128836553212968,51.493775400813846],[-3.128836552773508,51.49377540053956],[-3.12894679662745,51.493711217076374],[-3.1289467970669023,51.49371121735064],[-3.129055252903601,51.49364582834322],[-3.1290552608124473,51.49364582340548],[-3.129055273554522,51.49364581572452],[-3.1291618622844783,51.49357926863519],[-3.129161862723938,51.493579268909464],[-3.1292665966499267,51.49351155661092],[-3.1292666014830406,51.49351155331911],[-3.129266616421862,51.493511543717936],[-3.1292666159824027,51.49351154344366],[-3.1293694190926273,51.49344271476969],[-3.1293694252438593,51.49344271065491],[-3.129369440182554,51.49344270050514],[-3.1293694397431007,51.49344270023087],[-3.1294703023726327,51.49337276231875],[-3.129470302812089,51.49337276259302],[-3.1295692337497325,51.49330170776694],[-3.1295692333102814,51.493301707492684],[-3.1296661218373854,51.493229615584006],[-3.129666123594835,51.493229614212424],[-3.12966614204817,51.49322960049656],[-3.129666141608723,51.493229600222286],[-3.129761001348772,51.493156462457776],[-3.1308879475797524,51.49371591841969],[-3.1309962343664464,51.493629380756026],[-3.1309962348059086,51.493629381030296],[-3.1311020874902935,51.49354167520558],[-3.1311020989133524,51.49354166533012],[-3.131102107261036,51.49354165847214],[-3.1312054696121274,51.493452830852895],[-3.13120547752032,51.493452823720624],[-3.1312054907007436,51.49345281247356],[-3.1312054902612827,51.493452812199294],[-3.131306351302615,51.49336287376468],[-3.13130635833205,51.49336286718108],[-3.1313063719516876,51.493362855111066],[-3.1313063715122267,51.4933628548368],[-3.1314047035726316,51.49327182973328],[-3.1314047040120983,51.49327183000756],[-3.1314047171921247,51.49327181711469],[-3.131404722464226,51.49327181245127],[-3.1315004943588782,51.49317972948853],[-3.1315004961161703,51.49317972756833],[-3.1315005136895597,51.49317971083498],[-3.1315005132500886,51.49317971056071],[-3.131593714004533,51.49308658044333],[-3.1303659515868048,51.49261703600936],[-3.130443579467885,51.49253636850831],[-3.13044358034673,51.492536368782545],[-3.1305189571792504,51.492454850780334],[-3.1305189668444133,51.49245484008216],[-3.130518971237647,51.49245483514455],[-3.130592056611088,51.49237250834111],[-3.1305920557322278,51.49237250806687],[-3.1306628276894024,51.49228939907468],[-3.130662827249951,51.492289398800416],[-3.1307312515331405,51.49220554739884],[-3.1307312620765444,51.492205533957616],[-3.130731264273099,51.49220553121452],[-3.1307973334236516,51.492120947008495],[-3.130797344845446,51.49212093137284],[-3.130797346602716,51.49212092945264],[-3.130861040861906,51.492035638231314],[-3.1308610500871663,51.49203562561307],[-3.1308610527229113,51.492035621772736],[-3.130922352332498,51.491949649325115],[-3.130922356725377,51.49194964274171],[-3.1309223646326787,51.49194963176931],[-3.1309812502747167,51.49186300580439],[-3.132311543730921,51.492206870451604],[-3.1322428463646443,51.492307934893205],[-3.1321713104310915,51.492408268515014],[-3.132171304281075,51.49240827674438],[-3.132096981599918,51.492507804380004],[-3.133396651776299,51.49289464732495],[-3.133481589504065,51.49278090032221],[-3.1334815921396397,51.49278089648181],[-3.1334816057571504,51.49278087837704],[-3.1334816053176837,51.492780878102785],[-3.133563332546658,51.492666246719736],[-3.1348838548063105,51.493024523358415],[-3.1349722100181086,51.49289452836053],[-3.1349722091392205,51.49289452808632],[-3.1350568822497253,51.492763641934395],[-3.13505688312861,51.492763642208594],[-3.1351378996404295,51.4926318284265],[-3.1351379075461163,51.49263181471086],[-3.1351379158912795,51.492631801269475],[-3.1352152336653756,51.49249912460302],[-3.1338579036298597,51.49219922918348],[-3.1339233133645985,51.492080587188724],[-3.1339233181958552,51.492080578136495],[-3.133923326540814,51.492080562775115],[-3.133985407748493,51.49196122763199],[-3.133985408627365,51.4919612279062],[-3.1340441683582463,51.49184118535589],[-3.1340995407584584,51.49172056899189],[-3.134099547784971,51.49172055308204],[-3.134099551737357,51.491720544029874],[-3.1341515429804634,51.49159934288454],[-3.1341515434197276,51.49159934233591],[-3.1341515530808426,51.49159931929409],[-3.134200147382496,51.49147757012908],[-3.1342001482612876,51.491477570128986],[-3.1342453412558875,51.491355284743655],[-3.134245345646668,51.49135527185131],[-3.1342453495985914,51.49135526115337],[-3.134287107939566,51.49123252732969],[-3.135698057835012,51.49141157926218],[-3.135741173103859,51.49127298577938],[-3.1357411783714624,51.49127296740095],[-3.1357411814443896,51.491272957251645],[-3.1357804077080114,51.49113394175702],[-3.1357804120971853,51.49113392475017],[-3.135780414730859,51.49113391514951],[-3.1358157480735196,51.49099449328225],[-3.135815750267785,51.49099448368163],[-3.135815755095706,51.49099446448035],[-3.135847184579377,51.4908546790354],[-3.1358471867729367,51.490854666966136],[-3.1358471902838922,51.490854652153736],[-3.135874706728381,51.49071454537687],[-3.1358747076071554,51.49071454537677],[-3.1358983079767504,51.490574133454544],[-3.135898307976597,51.490574132905955],[-3.1358983128018836,51.4905741046529],[-3.135898311923111,51.49057410465298],[-3.1359179791445624,51.49043348386768],[-3.1359179804627204,51.49043348386753],[-3.135933719393981,51.490292614173285],[-3.1344966146486506,51.49023789412659],[-3.134507101521683,51.49011259310412],[-3.134507102400449,51.49011259310402],[-3.1345140873137862,51.489987173102804],[-3.134514087748124,51.48998715307912],[-3.1345140881860543,51.48998714731885],[-3.1345175637206286,51.48986169419501],[-3.1345175645993897,51.48986169419493],[-3.1345175329785007,51.48973619807388],[-3.13451753341788,51.48973619807383],[-3.1345175329745616,51.48973618243899],[-3.134517532972004,51.489736172290016],[-3.1345139933681034,51.48961072176961],[-3.1345139938074813,51.489610721769566],[-3.1345139929253394,51.48961070832913],[-3.134513992482852,51.489610695985824],[-3.134513992043474,51.489610695985874],[-3.134506944921295,51.48948527707663],[-3.13450694448192,51.489485277076675],[-3.13449639208299,51.489359952591656],[-3.133059343409632,51.48941495765966],[-3.1330685751363485,51.48952463788564],[-3.1330747374205976,51.48963436418005],[-3.133077831122074,51.48974415025809],[-3.133077855335566,51.489853976370775],[-3.1330748100212347,51.48996376214921],[-3.1330686951557642,51.49007350210724],[-3.13305951203141,51.49018317896359],[-3.133047268954119,51.49029270027895],[-3.1316119178574473,51.490222295850394],[-3.1315987922070874,51.4903160798681],[-3.131583051683199,51.49040967782691],[-3.1315646931974017,51.49050310673242],[-3.131543726830364,51.49059631638638],[-3.1315437263912314,51.4905963177579],[-3.131520159590779,51.49068927524283],[-3.1314939984888035,51.49078195861302],[-3.1314652443870963,51.4908743621064],[-3.131433917031281,51.49096642180863],[-3.1314339161530014,51.49096642455166],[-3.1314000172847805,51.491058134974615],[-3.131363552598457,51.491149479109296],[-3.131324552823345,51.49124038151964],[-3.131283006086963,51.491330870730806],[-3.131238944438031,51.491420873775006],[-3.131192359078772,51.49151041067369],[-3.1311432974345856,51.49159939117705],[-3.1297860212758417,51.49129944859094],[-3.1297860203972516,51.49129944996246],[-3.1298269164920383,51.49122528332687],[-3.129826915613209,51.49122528305263],[-3.129865723517755,51.491150700416426],[-3.12990244763331,51.491075689712375],[-3.1299024489510283,51.491075686695034],[-3.1299024546613934,51.491075675174244],[-3.1299370686419654,51.49100029099081],[-3.1299695764505593,51.49092452592364],[-3.1299695777682692,51.49092452290629],[-3.1299695825998115,51.49092451138556],[-3.1299999609665883,51.49084841892555],[-3.1299999622842978,51.49084841590821],[-3.1299999671156526,51.49084840329028],[-3.130028213415527,51.49077199166814],[-3.1300282147331497,51.4907719881022],[-3.130028218685967,51.49077197713011],[-3.130054324584166,51.49069526911446],[-3.130054325023303,51.49069526746866],[-3.1300543298544197,51.49069525347925],[-3.1300782865773327,51.490618274033025],[-3.1300782878948596,51.49061826991851],[-3.1300782914081338,51.49061825812354],[-3.1301000928180533,51.490541028369236],[-3.130100095013753,51.49054102041451],[-3.130100096770238,51.490541013556985],[-3.130119735851358,51.490463557908626],[-3.1301197362903164,51.49046355516563],[-3.130119739803355,51.49046354199918],[-3.1301372099792775,51.49038588404773],[-3.130137211735407,51.49038587499583],[-3.130137213052661,51.49038586923553],[-3.13015251038348,51.49030803284595],[-3.130165634000244,51.490230010887466],[-3.1301656331214778,51.490230010887515],[-3.130176569867049,51.49015188866784],[-3.1301765711832195,51.49015187605011],[-3.1301765716222145,51.490151873581425],[-3.1301853219460356,51.49007364424372],[-3.130185321945734,51.49007364232365],[-3.1301853237010233,51.49007362806013],[-3.1301918854211044,51.489995315468825],[-3.1301918862977094,51.48999530175394],[-3.1301918862974936,51.48999530038246],[-3.1301962581105784,51.48991692785319],[-3.1301962589868353,51.489916911943936],[-3.1301984391504516,51.48983850361514],[-3.130198427237921,51.48976006853875],[-3.1301984267960363,51.48976005262958],[-3.1301962223879456,51.489681645939214],[-3.130196221947401,51.489681638533234],[-3.1301962215066412,51.48968162975578],[-3.1301918250546836,51.4896032580344],[-3.1301918250544687,51.48960325666292],[-3.1301918241735556,51.48960324294814],[-3.130191823734176,51.48960324294817],[-3.1301852374503887,51.48952493088209],[-3.1301852378897665,51.489524930882055],[-3.1301764617866183,51.4894466864255],[-3.1301764600274318,51.48944667572805],[-3.1301764595873673,51.48944667133933],[-3.1301654993967327,51.48936855044795],[-3.130165498077702,51.4893685446878],[-3.1301654967579826,51.48936853453892],[-3.130152351611106,51.48929053008043],[-3.1301523511717315,51.48929053008045],[-3.1301370303148954,51.48921269554142],[-3.130137029435374,51.48921269060413],[-3.1301370272369193,51.489212680455296],[-3.130119532879362,51.489135024886494],[-3.130119533318735,51.48913502488647],[-3.130119529801699,51.48913501172044],[-3.1301195293618975,51.48913500897751],[-3.1300998628339274,51.48905754088109],[-3.1300998623945535,51.48905754088113],[-3.130078033378968,51.48898029783404],[-3.1300780329395974,51.48898029783407],[-3.1300540533162784,51.488903320156],[-3.130054050678902,51.48890331275016],[-3.130054048480907,51.48890330534429],[-3.130027920018979,51.48882660071413],[-3.130027915623505,51.488826589193934],[-3.130027914304764,51.488826585079565],[-3.129999646245048,51.48875017763343],[-3.129999644047441,51.48875017269622],[-3.1299996400914742,51.488750161998894],[-3.1299692394773975,51.488674073678546],[-3.1299692399167256,51.48867407340422],[-3.1299367111532965,51.48859831298526],[-3.129936704560399,51.48859829735074],[-3.1299020687551184,51.48852291749508],[-3.129902069194443,51.48852291722074],[-3.129902062601859,51.4885229035063],[-3.1299020621624054,51.48852290295774],[-3.1298653254772035,51.48844791189206],[-3.129865325916532,51.48844791161773],[-3.129865319324133,51.488447899000484],[-3.12986531800562,51.4884478962576],[-3.1298264909982576,51.48837331784313],[-3.129826488361444,51.48837331372884],[-3.129826482648006,51.48837330248302],[-3.129785576314889,51.48829915756361],[-3.1297855714806104,51.488299149060694],[-3.129785567964828,51.48829914330067],[-3.129742586270419,51.48822544010283],[-3.1283940877041467,51.488540282985134],[-3.1284284761165027,51.488599254330175],[-3.12846120780029,51.48865858534443],[-3.128461208239724,51.488658585893],[-3.1284922691263617,51.48871825079466],[-3.1285216644836513,51.48877825973374],[-3.128549376726464,51.488838576505195],[-3.1285753988171323,51.48889918766999],[-3.1285997210801506,51.48896006799443],[-3.128622337356231,51.48902120349075],[-3.1286432419250945,51.489082578250986],[-3.1272324251827315,51.48926183390788],[-3.127216750637164,51.48921581081116],[-3.12719978877327,51.489169956450446],[-3.127199787894325,51.489169954256106],[-3.1271997852574263,51.48916994712449],[-3.127181547944927,51.48912429359146],[-3.1271815444292326,51.48912428591129],[-3.1271815439897646,51.489124284814125],[-3.127162032990154,51.4890788367712],[-3.127162032990106,51.48907883622261],[-3.127162029034944,51.48907882744526],[-3.1271412505042457,51.48903359888071],[-3.1271412474280185,51.489033592023404],[-3.1271412465490998,51.48903359010336],[-3.127119207082619,51.48898859500541],[-3.1270959084416257,51.48894383803633],[-3.127095903607728,51.48894382898471],[-3.1270713620551036,51.48889934141298],[-3.1270713594184625,51.48889933675003],[-3.1270713572212614,51.48889933290996],[-3.127045570123577,51.48885511034617],[-3.1256970344078936,51.48916992218552],[-3.125679026272339,51.489140638154815],[-3.125679024954109,51.489140636234765],[-3.1256790227570153,51.489140632394665],[-3.125660198300643,51.48911154916461],[-3.125660198739999,51.4891115488903],[-3.1256405566458296,51.48908266344326],[-3.125640556206479,51.48908266371756],[-3.1256201180068905,51.489054007871076],[-3.125598873157394,51.4890255681844],[-3.125576845386993,51.4889973753778],[-3.125576843189945,51.4889973720863],[-3.125576840992959,51.48899736989196],[-3.125554023711725,51.488969415736264],[-3.1255304331785836,51.48894171997999],[-3.1255304292239674,51.488941715042735],[-3.1255304287845767,51.48894171476845],[-3.1255060623641384,51.488914274393935],[-3.1255060623641646,51.488914274668225],[-3.1254809385121165,51.48888710997255],[-3.1254809367545313,51.4888871080525],[-3.125480933239373,51.48888710448672],[-3.1254550537142003,51.48886021738944],[-3.1254550528354055,51.488860216566565],[-3.1254550484414674,51.488860212177904],[-3.1254284211531584,51.48883361118155],[-3.127856832423698,51.48786767262411],[-3.1278020859879367,51.4878150494363],[-3.1278020842303222,51.48781504779059],[-3.1278020750028532,51.487815039287774],[-3.1277458771105264,51.4877630313799],[-3.1277458749134976,51.48776302918562],[-3.1277458656860513,51.487763020682785],[-3.127745865246689,51.48776302068281],[-3.1276882229308054,51.48771163353843],[-3.127688212385216,51.48771162421277],[-3.1276882110670283,51.487711623115636],[-3.1276291401484793,51.48766087099544],[-3.127629140148457,51.487660870721136],[-3.127629133118121,51.4876608649612],[-3.1276291287241347,51.48766086112122],[-3.127568648538707,51.48761076075439],[-3.1275686485386793,51.487610760480095],[-3.12756863799322,51.487610751977314],[-3.127568635796235,51.487610750057314],[-3.1275067643610686,51.48756131597875],[-3.1275067586489826,51.48756131159023],[-3.1275067524974753,51.48756130665312],[-3.1275067520581143,51.48756130665314],[-3.1274435082689243,51.48751255422051],[-3.127443508268902,51.48751255394621],[-3.1274434964053857,51.487512545169174],[-3.1274434950872,51.48751254407204],[-3.1273788855364266,51.48746447876885],[-3.126284182685809,51.48804824945277],[-3.126234735131612,51.48801274012033],[-3.1262347250257645,51.4880127329889],[-3.1261842824300534,51.48797776128368],[-3.1261842819906827,51.48797776128369],[-3.1261328799438965,51.48794335106726],[-3.1260805136131444,51.48790949959553],[-3.1271073257925197,51.48727948157885],[-3.1270362380788916,51.487235105326604],[-3.1250181294937653,51.488517319679104],[-3.1249819848537226,51.48849553045303],[-3.124981979581174,51.48849552716157],[-3.1249819773842913,51.488495526064405],[-3.1249452299838594,51.4884741340185],[-3.1249452255900945,51.488474131549914],[-3.124945222514433,51.48847412962988],[-3.124907882019861,51.48845314107224],[-3.124907877186713,51.488453138329355],[-3.1249078749898236,51.4884531369579],[-3.124869953264064,51.4884325579223],[-3.12486994799156,51.48843255545372],[-3.124869945794676,51.488432554082266],[-3.1248314472312915,51.48841238758533],[-3.124831446791932,51.48841238785964],[-3.124792399071296,51.4883926481638],[-3.1247923916019227,51.48839264459806],[-3.12479239116254,51.48839264404948],[-3.1247527973598928,51.48837333307423],[-3.1247527973598688,51.488373332799945],[-3.124712653520411,51.48835444835042],[-3.1247126530810463,51.48835444835042],[-3.1246720031416575,51.48833601099769],[-3.124671996990446,51.4883360085291],[-3.124671995672321,51.48833600770623],[-3.1246308308450077,51.48831801388402],[-3.12463083611747,51.488318016078324],[-3.1262616601506896,51.486836509805464],[-3.126178334273926,51.486801424070265],[-3.1261783347132552,51.48680142379597],[-3.126094023561979,51.48676724402909],[-3.126094023561988,51.4867672443034],[-3.1260088049004886,51.48673400177054],[-3.126008805339839,51.486734001770536],[-3.126008790401564,51.486733996284975],[-3.126008787326022,51.48673399491358],[-3.125922651045737,51.48670168549857],[-3.125922644894691,51.48670168330437],[-3.125922635228756,51.48670167973875],[-3.12583560856666,51.486670313313624],[-3.1258356010975654,51.48667031084513],[-3.125835590552926,51.486670307005234],[-3.125747702503199,51.486639894539195],[-3.125747688443737,51.48663988987647],[-3.1257476844895047,51.48663988850508],[-3.125658960091738,51.48661043822453],[-3.1256589600917244,51.486610437950226],[-3.1256589438355005,51.48661043273898],[-3.1256589416387204,51.48661043219043],[-3.125569405053598,51.48658195232185],[-3.125569403296176,51.4865819517733],[-3.1255693892367438,51.486581947110565],[-3.1255693887974063,51.48658194738487],[-3.1254790698969543,51.48655444725189],[-3.1254790703363056,51.486554447251876],[-3.1254790514440143,51.48655444176634],[-3.125387980100014,51.48652793069263],[-3.1253879735096888,51.48652792877268],[-3.125387961647095,51.486527925207064],[-3.1252961628981706,51.48650241059641],[-3.125296162898164,51.4865024103221],[-3.1252961444453007,51.486502405659415],[-3.1252961440059357,51.48650240538513],[-3.1252036464052795,51.48647789464129],[-3.125203646405268,51.486477894366985],[-3.12511045609884,51.48645438940833],[-3.1251104394034352,51.48645438529415],[-3.1250166258038905,51.486431904221384],[-3.125016617016852,51.48643190230146],[-3.125016606472391,51.486431899558674],[-3.1249221809974683,51.48641044483878],[-3.125402705121076,51.48556317585684],[-3.1252839192695236,51.48553764203284],[-3.1252839056498765,51.485537639290136],[-3.1252838951056314,51.48553763709597],[-3.125164438138977,51.48551340662171],[-3.125164433745554,51.4855134057989],[-3.125164413535778,51.48551340168482],[-3.1251644135357926,51.48551340195912],[-3.125044294671037,51.485490475929595],[-3.1250442951103694,51.48549047565529],[-3.124923507308782,51.48546885379434],[-3.1245388162776693,51.486334985456644],[-3.1246354349266467,51.48635228129501],[-3.1247315616199787,51.48637062816569],[-3.124827131339821,51.48639001345325],[-3.1248271322185106,51.486390013453246],[-3.1249221612266553,51.48641044045036],[-3.1244416245634894,51.48725770816314],[-3.124370365479305,51.48724239064985],[-3.12437035098049,51.48724238763275],[-3.124298659640609,51.48722784579167],[-3.124226586128536,51.487214089770475],[-3.1242265738265353,51.48721408757623],[-3.1242265729478254,51.487214087576234],[-3.1241541256079732,51.48720111874562],[-3.1241541198963323,51.487201117648496],[-3.1241541106698394,51.4872011160028],[-3.1240813141027597,51.487188939024904],[-3.124081311466622,51.48718893875062],[-3.124081299164641,51.487188936556365],[-3.124008172698507,51.48717755444761],[-3.124008161275247,51.48717755280194],[-3.1240081577603935,51.48717755225338],[-3.123934709739404,51.48716696638459],[-3.123860976626469,51.487157182515126],[-3.123786994884381,51.48714820503297],[-3.123786987415341,51.48714820421014],[-3.1237869795069466,51.487148203387314],[-3.1237127447383903,51.4871400317434],[-3.1237127447383912,51.487140032017706],[-3.123638307904747,51.48713267197155],[-3.1238510917162214,51.48624372821204],[-3.1237515652665966,51.48623499583565],[-3.1237515503288287,51.48623499473856],[-3.1237515446173254,51.48623499419],[-3.1236518068960235,51.486227349316486],[-3.1238147662180444,51.48533431077602],[-3.123689809867765,51.48532611175255],[-3.1236898261232438,51.48532611257535],[-3.123827793783286,51.48443143427726],[-3.1236775855540935,51.48442323047772],[-3.123564650166192,51.48531927585145],[-3.123689800202346,51.48532611120402],[-3.1235518324139595,51.48622078947677],[-3.123651789322183,51.4862273479451],[-3.123488828026698,51.48712038639663],[-3.123563651427954,51.487126121602756],[-3.1236382925273274,51.48713267060015],[-3.1234255057125027,51.488021614112334],[-3.1234751515649215,51.48802652273287],[-3.123524632233725,51.48803196950298],[-3.123573964416411,51.48803795579426],[-3.123286941146345,51.48891872796369],[-3.1232622743772342,51.4889157346236],[-3.1232375337983678,51.48891301146051],[-3.123237532919624,51.48891301146051],[-3.123237528525908,51.488913010911936],[-3.1232127106218828,51.48891055682866],[-3.1231878325277638,51.48890837429378],[-3.123187829452166,51.48890837401949],[-3.1231878272553066,51.48890837374519],[-3.123162887213175,51.488906461935784],[-3.123137901479337,51.48890482249756],[-3.1231128696139776,51.4889034554305],[-3.123112864341521,51.48890345515622],[-3.123087798207225,51.48890236100888],[-3.123062710105941,51.48890154005551],[-3.1230627048334845,51.48890154005552],[-3.12303759696162,51.48890099257042],[-3.1230124680006117,51.488900718827885],[-3.1229873403579425,51.488900718827885],[-3.1229622219418443,51.48890099257042],[-3.122937108797524,51.48890154005552],[-3.1229371052825536,51.48890154032982],[-3.1229371044038112,51.48890154032982],[-3.122912015863156,51.48890236100888],[-3.122886949289488,51.48890345515621],[-3.122861912151672,51.48890482277186],[-3.122836927296577,51.48890646221009],[-3.1228119863757033,51.48890837374518],[-3.122787098176039,51.48891055737724],[-3.1227622851051025,51.488913010911936],[-3.122762280711384,51.48891301146052],[-3.122762279832642,51.488913011460525],[-3.1227375392537744,51.48891573489789],[-3.1227128680909475,51.48891872851228],[-3.122688294024161,51.48892198956084],[-3.1226638051899656,51.48892551886647],[-3.122639423995921,51.48892931396067],[-3.122615157471586,51.48893337319771],[-3.1225910034197106,51.48893769685195],[-3.1225669728242176,51.48894228327772],[-3.1225669706273522,51.48894228382632],[-3.122566968869861,51.488942284100595],[-3.122543070078437,51.488947131926544],[-3.1225193162719216,51.488952237861234],[-3.12251931143882,51.488952238958404],[-3.1224957043743253,51.48895760300192],[-3.11947087793522,51.48390617661605],[-3.119636129508473,51.48386862860104],[-3.1198024275899208,51.483832881962556],[-3.119969709372736,51.48379895095802],[-3.120137883055257,51.48376685341027],[-3.1203069332794335,51.483736592058136],[-3.1204768503986755,51.48370816936631],[-3.120647465731136,51.483681613031614],[-3.1206474674884337,51.48368161275736],[-3.1208188623287487,51.483656910434966],[-3.120990903142169,51.48363408159427],[-3.12116351043147,51.48361313638013],[-3.1213367312246936,51.48359406875626],[-3.121510452636731,51.483576891610454],[-3.1216846087903805,51.48356161179718],[-3.1218591623646366,51.48354823178283],[-3.12203408526439,51.48353675458266],[-3.122209261091383,51.483527187051685],[-3.1223847359959955,51.48351952672034],[-3.122560372932288,51.48351378044419],[-3.1227361288689517,51.48350994877102],[-3.1229119761509097,51.483508032797474],[-3.1230878502202986,51.48350803279745],[-3.1232637067279674,51.48350994904526],[-3.1232637071672866,51.48350994904527],[-3.123439441137973,51.483513780169886],[-3.1234394406986556,51.4835137804442],[-3.1236150899359045,51.48351952726887],[-3.1237905525395577,51.48352718677739],[-3.1237905529788716,51.48352718650309],[-3.1239657560437273,51.483536755953914],[-3.1241037129049434,51.48264207733103],[-3.1243036055492968,51.48265519324993],[-3.13650599966056,51.41567619371154]],[[-3.130203952753382,51.49277580769473],[-3.130119654717495,51.492853840274044],[-3.128932963915685,51.492344813660445],[-3.12900320295347,51.49227979718695],[-3.1290032148158926,51.49227978594019],[-3.1290032161339187,51.492279784568645],[-3.129071626954514,51.49221401273482],[-3.1302860476072185,51.49269687741874],[-3.130203952753382,51.49277580769473]],[[-3.1297430510379507,51.49137316905032],[-3.1296980426700287,51.491446384629775],[-3.1296980391557088,51.4914463903902],[-3.1296509759559603,51.49151912577501],[-3.129650976395401,51.49151912604929],[-3.1296019022856103,51.491591314580496],[-3.1295508080328034,51.49166297134242],[-3.128240585146863,51.491290306251955],[-3.1282814540519697,51.491232992379125],[-3.1282814553699194,51.49123299045899],[-3.1282814623990767,51.49123298058401],[-3.1283207220932923,51.491175230912376],[-3.128320727804346,51.49117522186033],[-3.128320730000959,51.491175218842976],[-3.128358369506301,51.491117049283844],[-3.128358369945731,51.49111704955813],[-3.128394391903184,51.491058455449895],[-3.1284287563410214,51.49099950152982],[-3.1297860133688578,51.4912994628548],[-3.1297430510379507,51.49137316905032]],[[-3.12757924749527,51.49326715021045],[-3.1274816199859665,51.49331650647062],[-3.1273825904335903,51.49336480967799],[-3.127282262977,51.493412008531806],[-3.127180602028397,51.493458120310706],[-3.127077692394781,51.49350310660682],[-3.1262620825871075,51.492762396839616],[-3.1263444044334037,51.49272641068211],[-3.1263444110242986,51.492726407664655],[-3.126344421130362,51.49272640327562],[-3.1264257237937465,51.492689525626766],[-3.12642572423318,51.49268952590105],[-3.126505998923533,51.49265176060338],[-3.1265059993629616,51.49265176087765],[-3.126585205654197,51.49261312686093],[-3.126585206093634,51.492613127135215],[-3.126663322014521,51.49257363564845],[-3.12666332904474,51.49257363208237],[-3.126663336953729,51.49257362796768],[-3.1267403203213755,51.49253329958657],[-3.127675493171231,51.49321673075118],[-3.12757924749527,51.49326715021045]],[[-3.1273134046271878,51.49218170549673],[-3.12724614957212,51.49222833888079],[-3.126184546796027,51.49162114369756],[-3.1261331343850713,51.49165556379295],[-3.1260807578196226,51.491689424874906],[-3.1271077641846428,51.492319381673035],[-3.1270366922886814,51.49236375294746],[-3.1269644021557634,51.492407336166266],[-3.1268908762108114,51.49245014147671],[-3.126816194861486,51.49249212251784],[-3.1268161944220636,51.492492122243554],[-3.1267403356998953,51.49253329108289],[-3.125805186861838,51.49184985457686],[-3.1257474375102325,51.49188010671978],[-3.1256888400028204,51.491909730440554],[-3.1256294352034804,51.491938705439104],[-3.1255692406887383,51.491967023210606],[-3.1255082511870818,51.49199468677123],[-3.1254464992145587,51.492021681032774],[-3.124630941836424,51.49128095973519],[-3.124672101864126,51.491262966957215],[-3.1246721023035313,51.49126296723151],[-3.1247127613730563,51.49124452542313],[-3.1247529067416098,51.4912256395224],[-3.1247925094092226,51.4912063232451],[-3.124831558830254,51.49118658207786],[-3.1248315623453267,51.49118658015773],[-3.12483156629979,51.4911865782376],[-3.124870065549518,51.49116641053514],[-3.1249079873858774,51.49114583056187],[-3.124907988704022,51.49114582973896],[-3.1249079944160045,51.49114582672161],[-3.124945342793174,51.49112483255794],[-3.124982090029863,51.49110343901688],[-3.1249820904692616,51.49110343929117],[-3.1250182427167204,51.491081644178806],[-3.1250537793239546,51.49105945874219],[-3.125088697215302,51.49103688517634],[-3.1250886967758964,51.49103688490205],[-3.125122971785553,51.491013938568514],[-3.1251565929292235,51.490990627148356],[-3.1251565968836195,51.49099062440532],[-3.125156599519876,51.4909906224852],[-3.1251895707521555,51.49096694323595],[-3.125221867468226,51.49094291398788],[-3.1252534949409094,51.490918530627],[-3.125284435156211,51.49089380714331],[-3.125314685917709,51.490868745183185],[-3.125344219545434,51.49084336723998],[-3.1253730443880485,51.49081766673098],[-3.125373050539223,51.49081766124494],[-3.1254011525374783,51.49079165051429],[-3.125428523344068,51.490765337242976],[-3.1254551541723803,51.49073872993486],[-3.1254810322816513,51.490711841756976],[-3.12550615986952,51.49068467024106],[-3.12553052331663,51.49065722965133],[-3.1255541160335025,51.490629527394404],[-3.125554117790949,51.49062952547428],[-3.12555412086645,51.49062952163408],[-3.1255769309914356,51.49060157224837],[-3.1255769327488583,51.49060156977967],[-3.125576935385015,51.490601566762344],[-3.1255989655553478,51.490573367231],[-3.12562019907655,51.49054493757848],[-3.125620202152028,51.490544933463966],[-3.1256202030307243,51.49054493209247],[-3.1256406390253617,51.49051627561076],[-3.1256406421008096,51.49051627094764],[-3.1256406429795094,51.490516269850445],[-3.125660278373267,51.49048738955729],[-3.125679099547543,51.49045830520276],[-3.1256971082610705,51.49042901459282],[-3.125714295728287,51.49039953199147],[-3.1257306557997504,51.490369866999586],[-3.1270960565057577,51.490655026713405],[-3.1270715193239167,51.4906995206436],[-3.1270457425536744,51.490743739766074],[-3.1270187257524116,51.490787683257125],[-3.1269904882475545,51.49083132066835],[-3.126961042337399,51.4908746325234],[-3.1269303774751314,51.49091763473093],[-3.126898520896844,51.4909602880647],[-3.1268654800688522,51.49100258374601],[-3.126831255427887,51.49104452040236],[-3.1267958689389586,51.49108607169958],[-3.1267593298261978,51.49112722776163],[-3.12672163237572,51.4911679929764],[-3.126721631936347,51.491167993250706],[-3.1266828134912354,51.49120832784291],[-3.1266428617476527,51.49124824525234],[-3.1266018140492804,51.49128770762383],[-3.1265596528200374,51.491326732237425],[-3.126516424630808,51.4913652754774],[-3.126472114541931,51.49140335188077],[-3.126426749792699,51.49144093648451],[-3.126380330382031,51.49147802956173],[-3.1263328892616356,51.49151460505209],[-3.1262844339000377,51.4915506571939],[-3.1273793324812793,51.49213435593548],[-3.1273134046271878,51.49218170549673]],[[-3.123815380506601,51.48905875878696],[-3.123794552766044,51.489049988847626],[-3.1237945527660456,51.48904998857332],[-3.1237734745948944,51.489041443280776],[-3.123752169279869,51.48903313223509],[-3.1237306262757705,51.4890250513218],[-3.1237088688692873,51.48901720959238],[-3.1237088675511524,51.4890172090438],[-3.1237088640361588,51.48901720794664],[-3.123686891348286,51.489009604303796],[-3.123664705136292,51.48900223984461],[-3.1236647033787905,51.48900223929603],[-3.1236647003031663,51.48900223847316],[-3.123642315505531,51.48899511813475],[-3.123642311551166,51.48899511676328],[-3.123619730803863,51.48898824136842],[-3.1236197281676215,51.48898824081983],[-3.1236197259707525,51.48898823999696],[-3.123596952788505,51.488981610642675],[-3.123574002109729,51.48897523144326],[-3.12355087173725,51.48896910212433],[-3.1235508682222646,51.48896910130145],[-3.123550866904144,51.48896910102716],[-3.1235275730944734,51.488963225702946],[-3.1235041145291556,51.48895760409909],[-3.123480502192189,51.488952238958404],[-3.123480497359089,51.488952237861234],[-3.1234567435525658,51.488947131652246],[-3.123913563253238,51.48809476210293],[-3.1239610797538564,51.48810497625254],[-3.1240083032314923,51.48811570633721],[-3.124055216112904,51.4881269485173],[-3.1241018096120863,51.48813870059891],[-3.12414806703443,51.48815095819383],[-3.124193985745,51.48816372130246],[-3.1241939861843613,51.48816372130245],[-3.124239527520039,51.48817697867946],[-3.1242847011480768,51.488190733068116],[-3.124329470602022,51.48820497349742],[-3.1243738521395814,51.488219705179255],[-3.1243738525789397,51.488219705179255],[-3.124417800067398,51.48823491302831],[-3.1244613280068556,51.48825060143366],[-3.1244613284462392,51.488250601707946],[-3.1245043977337077,51.488266756955696],[-3.124504400809317,51.488266758327136],[-3.1245470224299012,51.488283384532096],[-3.1245891700221544,51.48830047154614],[-3.1246308277693973,51.48831801251258],[-3.123815380506601,51.48905875878696]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231464567126306,51.489800297683175],[-3.122999906539917,51.48979949951172]],[[-3.1229999204362855,51.489799500394874],[-3.122999906539917,51.48979949951172],[-3.1230618501591794,51.4898025431493],[-3.1229999204362855,51.489799500394874]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230611885048916,51.48984124939929],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123060333409943,51.48979520133066],[-3.122999906539917,51.48979949951172]],[[-3.1229999151637267,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.1230573047341514,51.48977099713693],[-3.1229999151637267,51.48979949545753]],[[-3.1229999186787647,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.123055558662476,51.48978986434651],[-3.1229999186787647,51.48979949737761]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230506389674324,51.48982654930776],[-3.122999906539917,51.48979949951172]],[[-3.122999916921248,51.48979950313783],[-3.122999906539917,51.48979949951172],[-3.1230470549320217,51.489815480623676],[-3.122999916921248,51.48979950313783]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230442161004053,51.48981851077792],[-3.122999906539917,51.48979949951172]],[[-3.1229999195575266,51.489799499023384],[-3.122999906539917,51.48979949951172],[-3.1230332201595576,51.4897982273802],[-3.1229999195575266,51.489799499023384]],[[-3.122999906539917,51.48979949951172],[-3.1230170461426003,51.48978822433985],[-3.122999906539917,51.48979949951172],[-3.123007220732661,51.489794853263774],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999916042489,51.48979949436034],[-3.1230311414427736,51.48978284565736],[-3.122999906539917,51.48979949951172]],[[-3.1229999156031107,51.489799491343085],[-3.1229999134062076,51.48979949326316],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999125274515,51.48979949408605],[-3.1230302437812862,51.48976977186468],[-3.1229999156031107,51.489799491343085]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230298633028437,51.48980686634855],[-3.122999906539917,51.48979949951172]],[[-3.122999916042491,51.489799495183235],[-3.1229999235119497,51.489799491617376],[-3.123022751050225,51.4897889465615],[-3.122999916042491,51.489799495183235]],[[-3.1229999178000094,51.489799491343085],[-3.1229999151637267,51.489799493263156],[-3.122999917360629,51.48979949189168],[-3.1229999134062156,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229999164818674,51.48979949189168],[-3.1230220862655598,51.48978270247667],[-3.1229999178000094,51.489799491343085]],[[-3.1229999257088474,51.48979948640575],[-3.1229999160424895,51.489799492988865],[-3.1230172820891684,51.48978723906687],[-3.1229999257088474,51.48979948640575]],[[-3.1229999204362864,51.489799491617376],[-3.122999929663262,51.489799485857155],[-3.123016213079199,51.489790171296335],[-3.1229999204362864,51.489799491617376]],[[-3.122999912966825,51.48979949408605],[-3.1229999156031107,51.489799491343085],[-3.1230160346891136,51.48978484967046],[-3.122999912966825,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230139265505077,51.489802772202374],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011907152818,51.489774208887795],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230117929172705,51.48978638408545],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011125500281,51.48979003469729],[-3.122999906539917,51.48979949951172]],[[-3.12299991911815,51.4897994976519],[-3.1229999169212475,51.4897994979262],[-3.1230111136389733,51.48979794815059],[-3.12299991911815,51.4897994976519]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999134062156,51.489799494634646],[-3.122999914284962,51.48979949408606],[-3.122999906539917,51.48979949951172],[-3.122999915603108,51.48979949353746],[-3.1229999257088474,51.48979948640575],[-3.123007591129767,51.489794264074916],[-3.122999906539917,51.48979949951172]],[[-3.122999929663262,51.489799485857155],[-3.1229999235119426,51.48979948942301],[-3.123007280927731,51.4897951308518],[-3.122999929663262,51.489799485857155]],[[-3.1229999090124094,51.48979949216598],[-3.123002201696365,51.489791769623004],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999081336492,51.48979949381175],[-3.12299990813365,51.489799492988865],[-3.123000311484386,51.48979758086815],[-3.1229999085730293,51.48979949216598],[-3.12300495792456,51.489778401235625],[-3.1229999090124094,51.48979949216598]],[[-3.122999910769925,51.489799492165986],[-3.122999910330552,51.48979949298886],[-3.122999910330547,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230046424511464,51.4897901235698],[-3.122999910769925,51.489799492165986]],[[-3.1229999191181466,51.48979950039487],[-3.1229999204362855,51.489799500394874],[-3.123004453079409,51.489799772771185],[-3.1229999191181466,51.48979950039487]],[[-3.122999916042489,51.48979948503427],[-3.1229999129668307,51.48979948969731],[-3.1229999147243466,51.48979948640575],[-3.123004301932025,51.48979253408723],[-3.122999916042489,51.48979948503427]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230032333601825,51.489791470091234],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123002613834909,51.48979625327317],[-3.122999906539917,51.48979949951172]],[[-3.1229999116486877,51.48979949189168],[-3.122999916042489,51.48979948503427],[-3.1230011656388825,51.489797601988954],[-3.1229999116486877,51.48979949189168]],[[-3.12299990857303,51.48979948805153],[-3.1230008730117866,51.48979323656058],[-3.12299990813365,51.489799492988865],[-3.122999908133649,51.489799491343085],[-3.1230010918228674,51.4897900997061],[-3.12299990857303,51.48979948805153]],[[-3.122999910769928,51.48979949244027],[-3.122999910330551,51.489799493263156],[-3.122999910769925,51.489799492165986],[-3.1230007253802468,51.48979805622393],[-3.122999910769928,51.48979949244027]],[[-3.1229999147243466,51.48979948640575],[-3.122999910330547,51.489799493537454],[-3.122999910769928,51.48979949244027],[-3.1230006273985373,51.489798296233346],[-3.1229999147243466,51.48979948640575]],[[-3.122999922633184,51.4897994902459],[-3.1229999195575346,51.48979949189168],[-3.1229999235119426,51.48979948942301],[-3.122999922633184,51.4897994902459]],[[-3.1229999169212452,51.48979949353746],[-3.122999916481864,51.489799493537454],[-3.1229999169212466,51.489799493263156],[-3.1229999182393837,51.48979949271457],[-3.1229999204362864,51.489799491617376],[-3.1229999169212452,51.48979949353746]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999169212475,51.4897994979262],[-3.122999906539917,51.48979949951172]],[[-3.122999915603108,51.48979949353746],[-3.122999914284962,51.48979949408606],[-3.1229999160424895,51.489799492988865],[-3.122999915603108,51.48979949353746]],[[-3.1229999116486877,51.48979949189168],[-3.122999910330547,51.489799493537454],[-3.1229999129668307,51.48979948969731],[-3.1229999116486877,51.48979949189168]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999912966825,51.48979949408605],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.12299990813365,51.489799492988865],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908133649,51.489799491343085],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998953916343,51.489799493263156],[-3.122934906323461,51.4897623159238],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229998958310157,51.489799491617376],[-3.1229492112004316,51.489764960971776],[-3.122999906539917,51.48979949951172],[-3.1229998958310157,51.489799491617376]],[[-3.122999906539917,51.48979949951172],[-3.1229072632468093,51.48973855305286],[-3.1229998958310157,51.489799491617376],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12299989583102,51.489799496829015],[-3.122999892755351,51.489799496006135],[-3.1229998905584555,51.48979949545753],[-3.122999887482796,51.489799494634646],[-3.122999885285899,51.48979949408605],[-3.122999882210242,51.48979949326316],[-3.1229998734226387,51.48979949106879],[-3.122999874740772,51.489799491343085],[-3.122999869468218,51.4897994899716],[-3.1229998628775175,51.48979948832582],[-3.122941914400039,51.48978375795727],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229916117613,51.48980495642574],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.12299990505799,51.489799507800875],[-3.1229949725766586,51.48982289788397],[-3.122999906539917,51.48979949951172],[-3.12299990505799,51.489799507800875]],[[-3.1229924268053106,51.489840483305],[-3.12299990505799,51.489799507800875],[-3.122999906539917,51.48979949951172],[-3.1229924268053106,51.489840483305]],[[-3.1229602132036307,51.489835554190925],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229602132036307,51.489835554190925]],[[-3.122999906539917,51.48979949951172],[-3.1229867724276885,51.48981460123791],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122986917424394,51.48981006739152],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998962703904,51.48979949573182],[-3.122949095625995,51.48978081475941],[-3.1229998923159727,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924419135198,51.48980908703234],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229624536148943,51.48982168740776],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122960609102282,51.489815737093764],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986585371767,51.48980044479762],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229599482807116,51.48980882591958],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229599482807116,51.48980882591958]],[[-3.122999906539917,51.48979949951172],[-3.122816220712939,51.48975432883318],[-3.122999868150075,51.489799489697305],[-3.1229998786951914,51.48979949244028],[-3.1229998800133347,51.48979949271457],[-3.1229998839677546,51.48979949381175],[-3.122999887043412,51.489799494634646],[-3.1229998892403144,51.489799495183235],[-3.1229998923159688,51.489799496006135],[-3.122999894512872,51.489799496554724],[-3.122999897588533,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999897149149,51.48979949545753],[-3.1229768648597376,51.4897892392358],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999897149149,51.48979949545753]],[[-3.1229674094100894,51.489783932419655],[-3.1229998984672904,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.1229674094100894,51.489783932419655]],[[-3.1229998953916307,51.489799495183235],[-3.1229998883615595,51.48979949244027],[-3.122963116229749,51.48978486749507],[-3.122999906539917,51.48979949951172],[-3.1229998953916307,51.489799495183235]],[[-3.122959628842667,51.48981879357904],[-3.1229998989066687,51.48979950313783],[-3.122999906539917,51.48979949951172],[-3.122959628842667,51.48981879357904]],[[-3.1229998945128723,51.48979949984627],[-3.122937029351931,51.48980121335949],[-3.122999906539917,51.48979949951172],[-3.1229998945128723,51.48979949984627]],[[-3.122999895831016,51.48979949573183],[-3.12297185988415,51.48978959335145],[-3.1229998962703904,51.48979949573182],[-3.1229998980279077,51.489799496554724],[-3.122999895831016,51.48979949573183]],[[-3.122999894512872,51.489799496554724],[-3.1229998936341135,51.48979949628042],[-3.12299989583102,51.489799496829015],[-3.1229998967097723,51.48979949710331],[-3.122999894512872,51.489799496554724]],[[-3.122999894952253,51.489799500120576],[-3.1229864921074113,51.48980030572855],[-3.1229998914372135,51.48979950012057],[-3.122969523694127,51.48980099201517],[-3.1229998945128723,51.48979949984627],[-3.122999896270393,51.48979949984627],[-3.122999894952253,51.489799500120576]],[[-3.1229998839677546,51.48979949381175],[-3.122999883089,51.489799493537454],[-3.122999885285899,51.48979949408605],[-3.1229998839677546,51.48979949381175]],[[-3.1229745440535437,51.48979294114053],[-3.1229998628775175,51.48979948832582],[-3.122999868150075,51.489799489697305],[-3.1229745440535437,51.48979294114053]],[[-3.121452686373669,51.491315592437516],[-3.1214105455221355,51.491298507871164],[-3.1213688770672694,51.491280961655356],[-3.1213277034185567,51.49126296339126],[-3.1212870443490295,51.491244521582885],[-3.1212469152377555,51.49122564336268],[-3.121207304221817,51.49120632297081],[-3.1211682552401903,51.491186581803575],[-3.1211297515965977,51.49116641190669],[-3.1210918227300963,51.49114582836746],[-3.121054478746749,51.49112483667253],[-3.1210544765498347,51.49112483557531],[-3.121017715692306,51.491103434628016],[-3.1209815713537195,51.49108164390453],[-3.1219907534576974,51.49044057597779],[-3.1220088256097758,51.49045147118664],[-3.1220088291248134,51.49045147338105],[-3.1220272066631622,51.49046217219337],[-3.122045877285067,51.49047266692863],[-3.1220458794819823,51.49047266802582],[-3.122045880800121,51.49047266884873],[-3.1220648414298786,51.49048295868385],[-3.122084091188664,51.49049304224724],[-3.1220840907492833,51.49049304224724],[-3.1221036195312246,51.49050291460133],[-3.12212342118492,51.49051257272865],[-3.1221234207455284,51.49051257272865],[-3.122143493073904,51.49052201553189],[-3.1221638185015586,51.49053123450758],[-3.1221638193803214,51.49053123478189],[-3.122163822456006,51.490531236153394],[-3.122184406694752,51.49054023404443],[-3.1222052348054112,51.49054900454174],[-3.1222263094241023,51.49055754846812],[-3.121452686373669,51.491315592437516]],[[-3.1219730101644183,51.489169508455404],[-3.1219730106037833,51.489169508729695],[-3.121955557538009,51.48918079066509],[-3.1219384168540882,51.48919226543113],[-3.1219216061273265,51.48920392068477],[-3.1219216048091782,51.48920392150765],[-3.121921602612268,51.48920392315341],[-3.121905120085185,51.489215759717666],[-3.1218889679547326,51.48922777649551],[-3.121873151054195,51.48923996992128],[-3.1218576834439222,51.48925232902338],[-3.1218576830045444,51.48925232929768],[-3.1218576803682394,51.489252331492025],[-3.121842557654507,51.489264859562105],[-3.121827790822045,51.48927754782292],[-3.1218133776740835,51.489290397646066],[-3.121813374598371,51.489290400388995],[-3.121799325680268,51.48930340299722],[-3.1217993230439562,51.48930340546587],[-3.121785639674052,51.48931655921353],[-3.1145005760575186,51.48641865225391],[-3.114596385658875,51.48632656543363],[-3.114694739369281,51.486235551487994],[-3.1147956486055888,51.486145598342404],[-3.1148990483262033,51.486056766056805],[-3.115004908644606,51.485969079035],[-3.115113216811813,51.48588254796712],[-3.1152238998815545,51.48579723126678],[-3.115336980258695,51.485713111099464],[-3.1154523814841526,51.485630245604284],[-3.115570081146105,51.48554864958504],[-3.11569003398523,51.485468354301865],[-3.115690034424525,51.4854683545762],[-3.1158122483478516,51.48538935618256],[-3.1159366007669886,51.485311733112916],[-3.1219907786877372,51.4891584163333],[-3.1219730101644183,51.489169508455404]],[[-3.119715370064804,51.49155064978764],[-3.1196669239300294,51.491514604777784],[-3.11961947446161,51.49147802270407],[-3.119619474022211,51.49147802270406],[-3.1195730726256885,51.49144094389079],[-3.119573073065095,51.4914409438908],[-3.119527703922162,51.491403355721076],[-3.1194833938332267,51.49136527986632],[-3.119440160371647,51.49132673168884],[-3.1206267692430076,51.490817666182416],[-3.1206555940855947,51.490843367240004],[-3.1206555945249996,51.490843366965706],[-3.1206851277133594,51.4908687446346],[-3.12068512771334,51.490868744908894],[-3.120715372323616,51.49089380193157],[-3.1207153723236067,51.49089380220586],[-3.120715376277967,51.4908938052232],[-3.120715378035445,51.49089380686902],[-3.1207153784748414,51.490893806869025],[-3.120746318690119,51.4909185309013],[-3.120746319129519,51.49091853062701],[-3.120777940011603,51.49094290850184],[-3.1207779395721955,51.490942908776134],[-3.120777943965957,51.49094291179348],[-3.1207779461628293,51.4909429134393],[-3.1208102437576644,51.490966943235975],[-3.119715370064804,51.49155064978764]],[[-3.1181425711256456,51.49173112419072],[-3.1180893116415676,51.49167790929723],[-3.118089310762861,51.4916779084743],[-3.1180375546428216,51.491624128569185],[-3.1179873010046144,51.491569783654384],[-3.1179385762054235,51.49151490198548],[-3.1178913872711087,51.491459489599194],[-3.1178457636330865,51.49140358298007],[-3.1178017105591493,51.49134718816468],[-3.1177592368314406,51.49129031694991],[-3.119069436595319,51.490917634456665],[-3.1191012861440885,51.49096027901271],[-3.1191012857047054,51.49096027901269],[-3.1191012887800875,51.49096028312725],[-3.1191012922948222,51.490960287790415],[-3.119101292734234,51.49096028751613],[-3.1191343361982544,51.49100258703766],[-3.1191343366376523,51.49100258703767],[-3.1191685577637767,51.491044520128064],[-3.1191685582031936,51.49104451985379],[-3.119203939419891,51.491086065390604],[-3.1192039389805086,51.49108606539059],[-3.119203942055959,51.49108606895654],[-3.1192039464494643,51.491086073894024],[-3.1192039464494923,51.49108607361972],[-3.119240484244267,51.49112722721307],[-3.1192404838048526,51.49112722748735],[-3.119240485562291,51.49112722913319],[-3.1192404912738834,51.49112723544219],[-3.1192781742257027,51.49116798474731],[-3.119278173786308,51.491167984747285],[-3.11927818169472,51.49116799297642],[-3.1192781816947366,51.491167992702124],[-3.1193169979430353,51.49120832537418],[-3.11931699750365,51.49120832537416],[-3.119317004094021,51.491208331957495],[-3.119317005412088,51.49120833332901],[-3.119317005851478,51.49120833332903],[-3.1193569435355823,51.49124823674891],[-3.1181425711256456,51.49173112419072]],[[-3.1150185519351474,51.491862987425804],[-3.114962096942338,51.49177573236069],[-3.114908069951661,51.49168784298708],[-3.1148565232246073,51.49159940352092],[-3.1148074444494003,51.49151039256947],[-3.114760873146033,51.49142088227852],[-3.114716809301114,51.49133087374823],[-3.114675268713539,51.49124039934951],[-3.1160627449891565,51.49100029044225],[-3.116097358969813,51.49107567407709],[-3.1160973585304226,51.491075674077074],[-3.1161340822066017,51.491150684506806],[-3.116134084402824,51.49115068944427],[-3.116134089674015,51.49115069959355],[-3.116134090113449,51.49115069931927],[-3.116172905045871,51.49122529813937],[-3.116172905485267,51.4912252981394],[-3.116213792355364,51.49129944749377],[-3.1162137919159227,51.49129944776804],[-3.1162137980659406,51.49129945791737],[-3.1162138007016176,51.491299462580564],[-3.1162567546860007,51.491373155335076],[-3.1162567542465682,51.49137315560936],[-3.1162567603966718,51.491373165210085],[-3.1162567630323177,51.49137317014756],[-3.116256763471762,51.491373169873285],[-3.1163017714005323,51.49144638380694],[-3.1163017705217415,51.4914463838069],[-3.1163488275711986,51.49151911041386],[-3.1150185519351474,51.491862987425804]]],[[[-3.135996080091376,51.49366826085557],[-3.134696363719498,51.49328144950848],[-3.13459722911447,51.493408379820565],[-3.1358859338188267,51.493809295588974],[-3.135996080091376,51.49366826085557]]],[[[-3.1359334403812333,51.4893049589913],[-3.135917625255649,51.489164119902526],[-3.1359176239348145,51.4891641103023],[-3.135917622172359,51.489164092747515],[-3.1359176217329847,51.48916409274756],[-3.1358978752630553,51.48902347626584],[-3.1358978757024274,51.489023476265785],[-3.1358978739416097,51.48902346447123],[-3.1358978713005774,51.489023447465144],[-3.1358978708612044,51.489023447465186],[-3.135874192200477,51.488883040422394],[-3.13444374183697,51.48898493900838],[-3.1344647887504435,51.48910976627843],[-3.1344823392821475,51.489234774097184],[-3.1344963951651046,51.48935997837523],[-3.1359334403812333,51.4893049589913]]],[[[-3.132499719300496,51.48769891084338],[-3.1324395281157242,51.48759570777589],[-3.131091066700669,51.4879105816996],[-3.131142656497539,51.48799904206217],[-3.132499719300496,51.48769891084338]]],[[[-3.130555431559862,51.481110426945556],[-3.13031141054121,51.48102943184531],[-3.1303114105411183,51.48102943129672],[-3.130311367927298,51.481029417858814],[-3.1303113600195287,51.48102941511635],[-3.130065113053502,51.4809510910187],[-3.130065112614298,51.48095109156731],[-3.1298167077628714,51.480875460398245],[-3.129197108544097,51.48168675357169],[-3.1289694492324966,51.48162048291689],[-3.128969446157279,51.48162048209415],[-3.1289694026648016,51.48162046947872],[-3.128969402225534,51.48162046975303],[-3.128739925621238,51.481556689359955],[-3.128739926060504,51.48155668908563],[-3.128739897065691,51.481556681406744],[-3.128739878614448,51.4815566764703],[-3.128508654977942,51.4814954060744],[-3.1285086554171744,51.48149540552579],[-3.12827570053263,51.48143665005355],[-3.1282757009718964,51.48143664977925],[-3.128275679445656,51.48143664484287],[-3.128275659676568,51.48143663963212],[-3.1282756592373087,51.481436639906434],[-3.1280411466009674,51.48138044295328],[-3.1280411470402414,51.481380442678955],[-3.12804111584922,51.48138043554859],[-3.128041098276806,51.481380431434886],[-3.128041098276836,51.481380431709184],[-3.127805058167403,51.481326800122],[-3.1282854750068587,51.48047951859149],[-3.1280241723498814,51.48042335105233],[-3.1280241723498197,51.48042335050374],[-3.1280241345700537,51.480423342825034],[-3.1280241187552553,51.480423339534156],[-3.1277612861147053,51.48037002745377],[-3.1273285144431977,51.481227260708756],[-3.1275674747353723,51.48127573087508],[-3.127805008964852,51.48132678942645],[-3.1273245791524538,51.482174069414064],[-3.127537084025824,51.482222353536756],[-3.1277481710627684,51.48227293703603],[-3.127220663152626,51.4831092313989],[-3.127407030636667,51.483156237092906],[-3.1275920605492153,51.48320526740161],[-3.1277757041449723,51.48325630916707],[-3.1279578621548456,51.48330933524453],[-3.1281385420659564,51.48336434728634],[-3.1281385420659236,51.483364347012035],[-3.1283176147322664,51.483421305806374],[-3.128495104334175,51.483480219039734],[-3.1286709019324888,51.483541050243026],[-3.128844997437809,51.48360379640705],[-3.1290172797115328,51.4836684174977],[-3.1291877557966377,51.48373491599122],[-3.1293563286107404,51.48380325377341],[-3.12952299025744,51.483873428109895],[-3.1303382569531433,51.48313264314454],[-3.1301507828290926,51.483053706074664],[-3.1301507678914344,51.48305370004105],[-3.1301507441668277,51.483053689893524],[-3.130150744166877,51.4830536901678],[-3.1299611311055213,51.482976823316335],[-3.1299611284694655,51.48297682221931],[-3.129961092443478,51.48297680768373],[-3.129961092004247,51.48297680823233],[-3.1297693606394485,51.482902018993805],[-3.1305213965847405,51.482135607338954],[-3.130305985666657,51.48205481036534],[-3.130305985227398,51.48205481063967],[-3.130088432952105,51.48197640307286],[-3.1300884333913643,51.48197640279854],[-3.1300884065923325,51.48197639347406],[-3.1300883885798187,51.48197638689203],[-3.1300883881405555,51.48197638716635],[-3.129868684380308,51.48190036350909],[-3.130555431559862,51.481110426945556]]],[[[-3.124566884181725,51.37745085022866],[-3.1214329250649127,51.377450850228605],[-3.1214454305169617,51.37834964804972],[-3.121445618114411,51.378349648052215],[-3.1183382312308834,51.37838350929242],[-3.118338231231162,51.3783835065494],[-3.118337966928368,51.37838351229921],[-3.1183375917327747,51.3783835163988],[-3.118337591732357,51.378383520513346],[-3.1152311631872607,51.37845124250728],[-3.115293663438037,51.37934922288295],[-3.1183751008685907,51.37928204575989],[-3.1184501222329515,51.38107909168673],[-3.1214831339139693,51.381046040949826],[-3.1245168598724824,51.38104604094748],[-3.1245418727876513,51.3792484457309],[-3.1214585707084352,51.3792484457392],[-3.1214460700138744,51.378349648058204],[-3.124554378729601,51.37834964804978],[-3.124566884181725,51.37745085022866]]],[[[-3.1229999090124094,51.48979949216598],[-3.12299990857303,51.489799493263156],[-3.122999908573028,51.489799493537454],[-3.1229999090124094,51.48979949216598]]],[[[-3.122999908573028,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908573028,51.489799493537454]]],[[[-3.1168392909840126,51.34244236994258],[-3.1167644057904687,51.340645306678404],[-3.1126090974187983,51.34073589527776],[-3.1126090969810316,51.34073589445481],[-3.112609009827755,51.340735897464405],[-3.112608356836997,51.34073591167019],[-3.112608357711289,51.34073591880215],[-3.108457037685636,51.340871740770964],[-3.1084570372485505,51.34087173802787],[-3.108456777538164,51.34087174951633],[-3.1084561836663345,51.34087176891806],[-3.108456184540158,51.340871775501455],[-3.1043085117046427,51.34105283970811],[-3.1045329883314743,51.342845008354224],[-3.1086314266534676,51.34266609334702],[-3.1127338067732397,51.34253187246659],[-3.1168392909840126,51.34244236994258]]],[[[-3.1166303945384386,51.49344271476973],[-3.1165294941229815,51.49337275024879],[-3.116430580760156,51.493301707767024],[-3.1153355952068154,51.493885373200065],[-3.1154509914511523,51.49396825519029],[-3.115450991011732,51.493968255190275],[-3.115450994526684,51.49396825765916],[-3.1154510138588547,51.49396827164951],[-3.115451014298314,51.493968271375245],[-3.1155687106566337,51.49404988340472],[-3.1166303945384386,51.49344271476973]]],[[[-3.1053551045494987,51.493698586630295],[-3.1052487965064435,51.493505710666305],[-3.105147918302979,51.49331174454956],[-3.1037745745544765,51.49358180454016],[-3.103883228635664,51.493790734314295],[-3.1038832299540395,51.4937907340402],[-3.103997687217322,51.49399840644928],[-3.1053551045494987,51.493698586630295]]],[[[-3.10511849167509,51.49560852278303],[-3.104958820415403,51.495412796489894],[-3.104804678802672,51.4952154011894],[-3.1048046792421014,51.49521540118947],[-3.1046560505321543,51.49501631468265],[-3.104513013724311,51.49481564123533],[-3.1043756328786034,51.494613472767206],[-3.104243935599719,51.49440985181836],[-3.104117909968007,51.49420475865651],[-3.1027690567996027,51.49451930382498],[-3.10290405139861,51.49473900376921],[-3.1029040500800913,51.49473900431758],[-3.103045167886728,51.494957199802066],[-3.103045167447185,51.4949572000763],[-3.103045181499826,51.4949572209252],[-3.103045196430378,51.49495724396863],[-3.1030451968699264,51.4949572436944],[-3.1031923659388068,51.49517382551512],[-3.101871697892175,51.49553199490328],[-3.1020351425062653,51.495761317755345],[-3.102035141627265,51.49576131802948],[-3.1020351622683604,51.495761345188484],[-3.102035175003601,51.49576136356861],[-3.1020351758826066,51.49576136329447],[-3.1022049746415603,51.49598882483925],[-3.10220497332312,51.495988825113315],[-3.102381155726255,51.49621446318155],[-3.102381142550194,51.49621444727005],[-3.099803390064598,51.49701606049518],[-3.100008680949526,51.49726774210959],[-3.1025636326924917,51.4964381603304],[-3.10238117944299,51.496214492261124],[-3.103670019358972,51.49581366134594],[-3.103841073559119,51.49602334852747],[-3.10511849167509,51.49560852278303]]],[[[-3.101871729070754,51.495532040990675],[-3.101714703520754,51.495300943821476],[-3.101564171607784,51.4950681820928],[-3.1002242742738444,51.495397344543626],[-3.100384195868836,51.4956446365175],[-3.1003841949898256,51.49564463679161],[-3.100384212115483,51.495644661755875],[-3.100384227922964,51.49564468644557],[-3.100384228801979,51.49564468617144],[-3.1005510087058283,51.49589014939927],[-3.0992302992590575,51.496248288728516],[-3.0994141806490716,51.49650630688466],[-3.0994141617661235,51.496506281371325],[-3.098103639352814,51.496878741180964],[-3.0983053375102174,51.497148965520395],[-3.0983052962304742,51.497148912572555],[-3.097005359869476,51.497535579620525],[-3.097225548026283,51.4978176166844],[-3.0972255471472123,51.497817616958514],[-3.0972255655918777,51.49781763918055],[-3.0972255919401146,51.497817673199044],[-3.097225593258644,51.497817672925045],[-3.0974536364463097,51.498097268116965],[-3.0987311700732203,51.497682512084936],[-3.098514496817761,51.497416866398034],[-3.0983053383885197,51.49714896661776],[-3.099605250556593,51.496762282394016],[-3.0994141999714535,51.4965063323981],[-3.100724697509498,51.49613385545299],[-3.100551043397748,51.49589019768205],[-3.101871729070754,51.495532040990675]]],[[[-3.0992303339480007,51.49624834057752],[-3.0990536791816345,51.495988332480835],[-3.0977231429219563,51.49633201278279],[-3.0979096055564024,51.49660646803186],[-3.0992303339480007,51.49624834057752]]],[[[-2.9802135275498123,51.38873555325066],[-2.9783139622103745,51.38738684876878],[-2.975476758845882,51.388978828753686],[-2.9745083660611455,51.388314919174086],[-2.971697437347662,51.38994822115345],[-2.969723979407746,51.38864166533094],[-2.966922698441902,51.39032704526657],[-2.9669226835037033,51.390327054572914],[-2.9669221202865907,51.39032739340759],[-2.9669221299104667,51.39032739972935],[-2.9641686437182777,51.392042694453494],[-2.96314612309012,51.391411301295946],[-2.9604221243857083,51.393168291830506],[-2.9625021169202577,51.39440858838546],[-2.9651906397148413,51.39267443035354],[-2.96621320965473,51.39330579729711],[-2.968931722295869,51.391612242982696],[-2.9699365515165823,51.3922546455339],[-2.972683624280812,51.390601815727464],[-2.9736704230847204,51.3912550680259],[-2.9764446200256147,51.38964306996325],[-2.9774130631961127,51.3903069546066],[-2.9802135275498123,51.38873555325066]]],[[[-2.9621236332374363,51.390779899975406],[-2.9611011710920407,51.390148489939534],[-2.958342733891079,51.39192764279143],[-2.9562629602186252,51.3906872603652],[-2.95351995705675,51.39251911841267],[-2.9535201377214473,51.392518993318326],[-2.952463151414644,51.391910215413056],[-2.9497548040763792,51.39378316191065],[-2.949754797511939,51.39378315860932],[-2.949754473489371,51.39378339073767],[-2.9497542422550977,51.39378355058768],[-2.94975424706776,51.39378355333781],[-2.947098889477407,51.39568532962797],[-2.947098885537437,51.39568532797624],[-2.9470987144829004,51.3956854547209],[-2.9470983389896186,51.39568572379523],[-2.947098346866405,51.39568572792159],[-2.9444962224932856,51.39761615115773],[-2.944496212427131,51.39761614620496],[-2.9444957475433364,51.397616503734],[-2.94449568861522,51.39761654725811],[-2.9444956899275017,51.39761654808302],[-2.9419470723438006,51.399575435139155],[-2.943069423106082,51.40013669943609],[-2.945602195616333,51.39818995548639],[-2.9467087263477074,51.398763351285446],[-2.9492790270400184,51.396856469196024],[-2.9503694016559483,51.39744182040396],[-2.9529760109805125,51.39557486363059],[-2.9556336476812164,51.39373689781867],[-2.956690714675854,51.394345640349286],[-2.9593821670198035,51.39254812727525],[-2.9593821705195427,51.39254812947455],[-2.9621236332374363,51.390779899975406]],[[-2.951902464402446,51.39497748962225],[-2.9519024578376944,51.39497748632104],[-2.9519021487654356,51.39497770777937],[-2.951901909180194,51.39497787338171],[-2.9519019139931286,51.394977876131755],[-2.949279383659547,51.39685620420128],[-2.949279559109783,51.39685607416836],[-2.9481892123476734,51.396270707825174],[-2.950828290773303,51.39438055845094],[-2.9535195847388223,51.39251937599161],[-2.9545766021811573,51.393128141840876],[-2.951902464402446,51.39497748962225]]],[[[-2.9433897383650858,51.39704272611546],[-2.9422832915324326,51.396469295523126],[-2.9397024523566984,51.39845287468851],[-2.9408247486143746,51.39901416031435],[-2.9433897383650858,51.39704272611546]]]]} \ No newline at end of file diff --git a/crates/total-viewsheds/src/compute.rs b/crates/total-viewsheds/src/compute.rs deleted file mode 100644 index 639580c..0000000 --- a/crates/total-viewsheds/src/compute.rs +++ /dev/null @@ -1,627 +0,0 @@ -//! The main entrypoint for running computations. - -use crate::los_pack::LineOfSightPacked; -use color_eyre::Result; -use rayon::iter::IntoParallelIterator as _; -use rayon::iter::ParallelIterator as _; -use rayon::ThreadPoolBuilder; -use std::sync::Mutex; -use std::time::Instant; - -/// The number of angles we rotate through. The other half are done via "backwards" lines of sight. -pub const SECTOR_STEPS: u16 = 180; - -/// Handles all the computations. -pub struct Compute<'compute> { - /// User configuration. - config: ComputeConfig, - /// Vulkan GPU manager - vulkan: Option, - /// Storage interface for conputed ring (viewshed) data. - storage: Option, - /// The Digital Elevation Model that we're computing. - dem: &'compute mut crate::dem::DEM, - /// The constants for each kernel computation. - pub constants: kernel::constants::Constants, - /// The amount of reserved memory for ring data. - total_reserved_rings: usize, - /// Keeps track of the cumulative surfaces from every angle. - pub total_surfaces: Vec, - /// Keeps track of the ring (viewshed) data. - pub ring_data: Vec>, - /// Keeps track of the longest lines of sight. - pub longest_lines: Vec, -} - -/// Configuration for computing. -pub struct ComputeConfig { - /// The height of the observer that views viewsheds. - pub observer_height: f32, - /// The size of each elevation point in meters. - pub scale: f32, - /// Where to run the kernel computations - pub backend: crate::config::Backend, - /// What to compute. - pub process: Vec, - /// Output directory - pub output_directory: Option, - /// The number of reserved rings per km. - pub rings_per_km: f32, - /// How to normalise the heatmap data. - pub heatmap: crate::config::HeatmapNormalisation, - /// Refractoin coefficient - pub refraction: f32, -} - -impl<'compute> Compute<'compute> { - /// Instantiate. - pub fn new(config: ComputeConfig, dem: &'compute mut crate::dem::DEM) -> Result { - let total_bands = dem.computable_points_count * 2; - - let rings_per_band = if Self::is_process_viewsheds(&config.process) { - Self::ring_count_per_band(config.rings_per_km, dem.max_los_as_points * dem.scale_u32()) - } else { - 1 - }; - let total_reserved_rings = if Self::is_process_viewsheds(&config.process) { - usize::try_from(total_bands)? * rings_per_band - } else { - 1 - }; - - let storage = if Self::is_process_viewsheds(&config.process) { - match &config.output_directory { - Some(output_directory) => { - Some(crate::output::ring_data::Storage::new(output_directory)?) - } - None => None, - } - } else { - None - }; - - let constants = kernel::constants::Constants { - total_bands, - max_los_as_points: dem.max_los_as_points, - dem_width: dem.width, - tvs_width: dem.tvs_width, - observer_height: config.observer_height, - reserved_rings_per_band: u32::try_from(rings_per_band)?, - process: Self::bitmask_flags_for_kernel(&config.process), - scale: config.scale, - refraction: config.refraction, - ..Default::default() - }; - - // We only need the "chocolate box" section of rotations to do visibility calculations. - let rotations_size = kernel::chocolate_box::size(dem.width, dem.tvs_width); - - let vulkan = if matches!(config.backend, crate::config::Backend::Vulkan) { - let elevations = dem.elevations.clone(); - dem.elevations = Vec::new(); // Free up some RAM. - Some(super::vulkan::Vulkan::new( - constants, - elevations, - usize::try_from(rotations_size)?, - total_reserved_rings, - )?) - } else { - None - }; - - Ok(Self { - config, - vulkan, - storage, - dem, - constants, - total_reserved_rings, - total_surfaces: Vec::default(), - ring_data: Vec::default(), - longest_lines: Vec::default(), - }) - } - - #[expect( - clippy::as_conversions, - clippy::cast_precision_loss, - clippy::cast_possible_truncation, - clippy::cast_sign_loss, - reason = "Accuracy isn't needed, we're just calculating a value to help find minimum RAM usage." - )] - /// Calculate the expected number of rings per band of sight. - pub const fn ring_count_per_band(rings_per_km: f32, max_line_of_sight: u32) -> usize { - let meters_per_km = 1000.0; - let band_length_in_km = (max_line_of_sight as f32) / meters_per_km; - (band_length_in_km * rings_per_km) as usize - } - - /// Are we computing everything? - fn is_process_everything(process: &[crate::config::Process]) -> bool { - process.contains(&crate::config::Process::All) - } - - /// Are we computing total surface areas? - pub fn is_process_surfaces(process: &[crate::config::Process]) -> bool { - Self::is_process_everything(process) - || process.contains(&crate::config::Process::TotalSurfaces) - } - - /// Are we computing viewsheds? - pub fn is_process_viewsheds(process: &[crate::config::Process]) -> bool { - Self::is_process_everything(process) || process.contains(&crate::config::Process::Viewsheds) - } - - /// Are we computing total surface areas? - pub fn is_process_longest_lines(process: &[crate::config::Process]) -> bool { - Self::is_process_everything(process) - || process.contains(&crate::config::Process::LongestLines) - } - - /// Create a GPU-friendly bitmask of flags to use in the kernel. - pub fn bitmask_flags_for_kernel(processes: &[crate::config::Process]) -> u32 { - use kernel::constants as kernel; - let mut flags = 0u32; - for process in processes { - match process { - crate::config::Process::All => { - flags |= kernel::Flag::TotalSurfaces.bit() | kernel::Flag::RingData.bit(); - } - crate::config::Process::TotalSurfaces => { - flags |= kernel::Flag::TotalSurfaces.bit(); - } - crate::config::Process::Viewsheds => flags |= kernel::Flag::RingData.bit(), - crate::config::Process::LongestLines => { - flags |= kernel::Flag::LongestLines.bit(); - } - } - } - flags - } - - /// Do all computations. - pub fn run(&mut self) -> Result<()> { - if matches!(self.config.backend, crate::config::Backend::CPU) { - self.run_parallel()?; - } else { - self.run_sequential()?; - } - - Ok(()) - } - - /// `run_sequential` runs a sequential GPU or CPU kernel - fn run_sequential(&mut self) -> Result<()> { - if Self::is_process_surfaces(&self.config.process) { - self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; - } - - if Self::is_process_viewsheds(&self.config.process) - && self.config.output_directory.is_some() - { - self.save_ring_metadata()?; - } - - let mut longest_lines = if Self::is_process_longest_lines(&self.config.process) { - self.longest_lines = vec![ - crate::los_pack::LineOfSightPacked::default(); - usize::try_from(self.dem.computable_points_count)? - ]; - vec![0.0; usize::try_from(self.dem.computable_points_count)?] - } else { - Vec::new() - }; - - for angle in 0..SECTOR_STEPS { - let mut sector_ring_data = vec![0; self.total_reserved_rings]; - let trig = kernel::rotation::Rotator::calculate_trig(f32::from(angle)); - self.constants.sine = trig.0; - self.constants.cosine = trig.1; - self.compute_sector(angle, &mut sector_ring_data, &mut longest_lines)?; - - if Self::is_process_viewsheds(&self.config.process) { - match &self.config.output_directory { - Some(_) => { - self.save_sector_ring_data(angle, §or_ring_data)?; - } - None => self.ring_data.push(sector_ring_data.clone()), - } - } - - if Self::is_process_longest_lines(&self.config.process) { - self.increment_longest_lines(&longest_lines, angle)?; - if angle == SECTOR_STEPS - 1 { - self.render_longest_lines()?; - } - } - } - - if Self::is_process_surfaces(&self.config.process) { - self.render_total_surfaces()?; - } - - Ok(()) - } - - /// `run_parallel` runs the CPU kernel in parallel - fn run_parallel(&mut self) -> Result<()> { - let max_los = usize::try_from(self.dem.max_los_as_points)?; - let mut surfaces = vec![0.0f32; max_los * max_los]; - let mut longest = vec![(0u16, 0.0f32); max_los * max_los]; - - let pool = ThreadPoolBuilder::new().num_threads(8).build()?; - - { - let angle_mu = &Mutex::new(&mut surfaces); - let longest_mu = &Mutex::new(&mut longest); - - let elevations = &self.dem.elevations; - - pool.install(move || { - (0u16..360u16) - .into_par_iter() - .map(|angle| { - let start = Instant::now(); - tracing::info!("starting angle: {angle}"); - let (heatmap, long, _) = - crate::cpu::kernel(elevations, max_los, f32::from(angle), false); - tracing::info!("finished angle in {:?}", start.elapsed()); - (angle, heatmap, long) - }) - .for_each(|(angle, heatmap, long)| { - #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] - angle_mu - .lock() - .expect("mutex poisoned") - .iter_mut() - .zip(heatmap) - .for_each(|(to, from)| { - *to += from; - }); - - #[expect(clippy::expect_used, reason = "a poisoned mutex should crash")] - longest_mu - .lock() - .expect("mutex poisoned") - .iter_mut() - .zip(long) - .for_each(|(to, from)| { - if from > to.1 { - *to = (angle, from); - } - }); - }); - }); - }; - - self.total_surfaces = surfaces; - let packed: Result> = longest - .iter() - .map(|&(angle, distance): &(u16, f32)| { - #[expect( - clippy::as_conversions, - clippy::cast_possible_truncation, - clippy::cast_sign_loss, - reason = "distances always fit in u32" - )] - LineOfSightPacked::new(distance as u32, angle) - }) - .collect(); - self.longest_lines = packed?; - - self.render_total_surfaces()?; - self.render_longest_lines()?; - - Ok(()) - } - - /// Add the accumulated total surface areas for the current sector to the running total. - fn add_sector_surfaces_to_running_total(&mut self, cumulative_surfaces: &[f32]) { - for (left, right) in self - .total_surfaces - .iter_mut() - .zip(cumulative_surfaces.iter()) - { - *left += right; - } - } - - /// Check to see if this angle increases the current longest line of sight for the point. - fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { - for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { - #[expect( - clippy::as_conversions, - clippy::cast_sign_loss, - clippy::cast_possible_truncation, - reason = "Distances always fit in u32" - )] - let current = right.abs() as u32; - if current > left.distance() { - let angle = if *right >= 0.0 { sector } else { sector + 180 }; - let packed = crate::los_pack::LineOfSightPacked::new(current, angle)?; - *left = packed; - } - } - - Ok(()) - } - - /// The metadata needed to reconstruct viewsheds based on the DEM and reserved rings. - pub fn metadata(&self) -> Result { - Ok(crate::output::ring_data::MetaData { - width: self.dem.width, - scale: self.dem.scale, - max_line_of_sight: self.dem.max_los_as_points * self.dem.scale_u32(), - reserved_ring_size: usize::try_from(self.constants.reserved_rings_per_band)?, - centre: self.dem.centre, - }) - } - - /// Save band deltas to cache. - pub fn save_sector_ring_data(&self, sector: u16, ring_data: &[u32]) -> Result<()> { - let Some(storage) = self.storage.as_ref() else { - color_eyre::eyre::bail!("Tried to save sector ring data without any active storage."); - }; - - storage.save_sector(sector, ring_data)?; - Ok(()) - } - - /// Save the metadata for the ring data (aka viewsheds). - pub fn save_ring_metadata(&self) -> Result<()> { - let Some(storage) = self.storage.as_ref() else { - color_eyre::eyre::bail!("Tried to save ring metadata without any active storage."); - }; - - storage.save_metadata(&self.metadata()?)?; - Ok(()) - } - - /// Render a heatmap and `.bt` file of the total surface areas for each point within the computable area of the - /// DEM. - fn render_total_surfaces(&self) -> Result<()> { - let Some(output_dir) = &self.config.output_directory else { - return Ok(()); - }; - - crate::output::png::save( - &self.total_surfaces, - self.dem.tvs_width, - self.dem.tvs_width, - output_dir.join("total_surfaces.png"), - self.config.heatmap, - )?; - - crate::output::bt::save( - self.dem, - &self.total_surfaces, - &output_dir.join("total_surfaces.bt"), - )?; - - Ok(()) - } - - /// Render a heatmap and `.bt` of the longest lines of sight for each point within the computable area of the - /// DEM. - fn render_longest_lines(&self) -> Result<()> { - let Some(output_dir) = &self.config.output_directory else { - return Ok(()); - }; - - let distances = self - .longest_lines - .iter() - .map(|los| { - #[expect( - clippy::as_conversions, - clippy::cast_precision_loss, - reason = "Distances always fit in u32" - )] - { - los.distance() as f32 - } - }) - .collect::>(); - crate::output::png::save( - &distances, - self.dem.tvs_width, - self.dem.tvs_width, - output_dir.join("longest_lines.png"), - self.config.heatmap, - )?; - - let packed_lines = self - .longest_lines - .iter() - .map(crate::los_pack::LineOfSightPacked::as_f32) - .collect::>(); - crate::output::bt::save( - self.dem, - &packed_lines, - &output_dir.join("longest_lines.bt"), - )?; - - Ok(()) - } - - /// Compute a single sector. - fn compute_sector( - &mut self, - angle: u16, - ring_data: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - tracing::info!("Running kernel for {angle}°"); - match self.config.backend { - crate::config::Backend::VulkanCPU => { - self.compute_sector_cpu(ring_data, longest_lines)?; - } - crate::config::Backend::Vulkan => { - self.compute_sector_vulkan(ring_data, longest_lines)?; - } - #[expect(clippy::unimplemented, reason = "CPU kernel is only multithreaded")] - crate::config::Backend::CPU => { - unimplemented!(); - } - - #[expect(clippy::unimplemented, reason = "Coming Soon!")] - crate::config::Backend::Cuda => unimplemented!(), - } - - Ok(()) - } - - /// Do a whole sector calculation on the GPU using Vulkan. - fn compute_sector_vulkan( - &mut self, - rings: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - let Some(gpu) = self.vulkan.as_mut() else { - color_eyre::eyre::bail!("`self.gpu` not instantiated yet."); - }; - - let (surfaces_data, rings_data, longest_lines_data) = gpu.run(self.constants)?; - if Self::is_process_surfaces(&self.config.process) { - self.total_surfaces - .copy_from_slice(surfaces_data.as_slice()); - } - if Self::is_process_viewsheds(&self.config.process) { - rings.copy_from_slice(rings_data.as_slice()); - } - if Self::is_process_longest_lines(&self.config.process) { - longest_lines.copy_from_slice(longest_lines_data.as_slice()); - } - Ok(()) - } - - /// Do a whole sector calculation on the CPU. - fn compute_sector_cpu( - &mut self, - ring_data: &mut [u32], - longest_lines: &mut [f32], - ) -> Result<()> { - let chocolate_box_size = kernel::chocolate_box::size(self.dem.width, self.dem.tvs_width); - let mut rotated_elevations = vec![0.0; usize::try_from(chocolate_box_size)?]; - for chocolate_id in 0..(self.dem.computable_points_count * 2) { - let chocolate = kernel::chocolate_box::Rotator::new_from_cached_trig( - chocolate_id, - self.dem.width, - self.dem.tvs_width, - self.constants.sine, - self.constants.cosine, - ); - // Note that we _anti_ rotate because anti-rotating the DEM grid has the effect of normally - // rotating the line of sight. Which is just more intuitive to work with when debugging. - chocolate - .anti_rotate_value_nearest_neighbour(&self.dem.elevations, &mut rotated_elevations); - } - - let mut buffers = kernel::kernel::Buffers { - constants: &self.constants, - elevations: &rotated_elevations, - cumulative_surfaces: &mut self.total_surfaces, - longest_lines, - ring_data, - }; - - for tvs_id in 0..self.constants.total_bands { - kernel::kernel::Kernel::run(tvs_id, &mut buffers); - } - - Ok(()) - } -} - -#[cfg(test)] -pub mod test { - use super::*; - use googletest::prelude::*; - - pub fn make_dem(elevations: &[i16]) -> crate::dem::DEM { - let width = elevations.len().isqrt() as u32; - let mut dem = crate::dem::DEM::new( - crate::projection::LatLonCoord((33.33, 33.33).into()), - width, - 1.0, - width / 3, - ) - .unwrap(); - dem.elevations = elevations.into(); - dem - } - - pub fn compute(dem: &mut crate::dem::DEM) -> Compute<'_> { - let config = ComputeConfig { - observer_height: 0.8, - scale: 1.0, - backend: crate::config::Backend::VulkanCPU, - process: vec![ - crate::config::Process::TotalSurfaces, - crate::config::Process::Viewsheds, - crate::config::Process::LongestLines, - ], - output_directory: None, - rings_per_km: 5000.0, - heatmap: crate::config::HeatmapNormalisation::UnitScale, - refraction: 0.13, - }; - - let mut compute = Compute::new(config, dem).unwrap(); - compute.run().unwrap(); - compute - } - - #[test] - fn total_surfaces() { - let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem); - #[rustfmt::skip] - assert_eq!( - compute.total_surfaces, - [ - 0.0, 0.0, 0.0, 0.0, - 0.0, 6.283163, 38.920944, 0.0, - 0.0, 70.75571, 94.24808, 0.0, - 0.0, 0.0, 0.0, 0.0 - ] - ); - } - - #[expect( - clippy::as_conversions, - clippy::cast_precision_loss, - reason = "Distances always fit in u32" - )] - #[gtest] - fn longest_lines() { - let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem); - - #[rustfmt::skip] - expect_eq!( - compute.longest_lines.iter() - .map(|los| los.distance() as f32) - .collect::>(), - [ - 0.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 4.0, 0.0, - 0.0, 4.0, 4.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ] - ); - - #[rustfmt::skip] - expect_eq!( - compute.longest_lines.iter() - .map(|los| los.angle().unwrap()) - .collect::>(), - [ - 0, 0, 0, 0, - 0, 0, 12, 0, - 0, 180, 0, 0, - 0, 0, 0, 0 - ] - ); - } -} diff --git a/crates/total-viewsheds/src/cpu/unrolled_los.rs b/crates/total-viewsheds/src/cpu/unrolled_los.rs index 1407870..0449d21 100644 --- a/crates/total-viewsheds/src/cpu/unrolled_los.rs +++ b/crates/total-viewsheds/src/cpu/unrolled_los.rs @@ -14,10 +14,12 @@ const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; reason = "max_los is < 2^24" )] fn generate_distances(max_los: usize, refraction: f32, scale: f32) -> (Vec, Vec) { + let adjusted_refraction = refraction - 1.0; + (1..=max_los) .map(|step| { let distance = (step as f32) * scale; - let adjustment = (distance * distance * refraction) / EARTH_RADIUS_SQUARED; + let adjustment = (distance * distance * adjusted_refraction) / EARTH_RADIUS_SQUARED; (distance, adjustment) }) @@ -209,19 +211,19 @@ where distances: &[f32], bitmap: &mut Vec, ) -> UnrollVector { - assert!( + debug_assert!( angles.len().is_multiple_of(VECTOR_WIDTH), "distance unroll should be multiple of width" ); - assert!( + debug_assert!( prefix.len().is_multiple_of(VECTOR_WIDTH), "distance unroll should be multiple of width" ); - assert!( + debug_assert!( distances.len().is_multiple_of(VECTOR_WIDTH), "distance unroll should be multiple of width" ); - assert!( + debug_assert!( angles.len() <= UNROLL * VECTOR_WIDTH, "angles must be less than unroll size" ); diff --git a/crates/total-viewsheds/src/cpu/vector_intrinsics.rs b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs index 765fd13..1153276 100644 --- a/crates/total-viewsheds/src/cpu/vector_intrinsics.rs +++ b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs @@ -309,22 +309,22 @@ where adjustments: &[f32], angles_out: &mut [f32], ) { - assert!( + debug_assert!( elevations.len().is_multiple_of(WIDTH), "expected elevations to be a multiple of {WIDTH}", ); - assert!( + debug_assert!( distances.len().is_multiple_of(WIDTH), "expected distances to be a multiple of {WIDTH}", ); - assert!( + debug_assert!( adjustments.len().is_multiple_of(WIDTH), "expected adjustments to be a multiple of {WIDTH}", ); - assert!( + debug_assert!( angles_out.len().is_multiple_of(WIDTH), "expected angles buf to be a multiple of {WIDTH}", ); diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index 2ebcc0e..310cc59 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -302,7 +302,7 @@ pub mod test { rings_per_km: 5000.0, heatmap: crate::config::HeatmapNormalisation::UnitScale, refraction: 0.13, - thread_count: 8, + thread_count: 1, // single thread it for consistency }; let mut compute = Compute::new(config, dem).unwrap(); @@ -317,10 +317,10 @@ pub mod test { assert_eq!( compute.total_surfaces, [ - 0.0, 0.0, 0.0, 0.0, - 0.0, 568.6271, 2461.8464, 0.0, - 0.0, 4290.639, 5686.299, 0.0, - 0.0, 0.0, 0.0, 0.0 + 0.0, 0.0, 0.0, 0.0, + 0.0, 6.283163, 23.213009, 0.0, + 0.0, 48.066483, 62.832096, 0.0, + 0.0, 0.0, 0.0, 0.0 ] ); } @@ -376,43 +376,56 @@ pub mod test { } mod cpu { + use super::{compute, make_dem}; + use crate::config::Backend; use googletest::prelude::*; #[test] - // #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] fn total_surfaces() { - super::total_surfaces(crate::config::Backend::CPU); + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute = compute(&mut dem, Backend::CPU); + #[rustfmt::skip] + assert_eq!( + compute.total_surfaces, + [ + 0.0, 0.0, 0.0, 0.0, + 0.0, 6.283163, 29.16455, 0.0, + 0.0, 48.06648, 62.832096, 0.0, + 0.0, 0.0, 0.0, 0.0 + ] + ); } #[gtest] - // #[ignore = "TODO@ryan: Enable once viewshed tests are settled"] fn longest_lines() { - // - // Tom's angles - // [ - // 0, 0, 0, 0, - // 0, 0, 12, 0, - // 0, 180, 0, 0, - // 0, 0, 0, 0 - // ] - // - // Ryan's angles: - // [ - // 0, 0, 0, 0, - // 0, 0, 12, 0, - // 0, 46, 0, 0, - // 0, 0, 0, 0, - // ] - // - // rberger CPU longest distance: - // - // [ - // 0.0, 0.0, 0.0, 0.0, - // 0.0, 1.0, 4.0, 4.0, - // 0.0, 4.0, 4.0, 4.0, - // 0.0, 4.0, 4.0, 4.0, - // ], - super::longest_lines(crate::config::Backend::CPU); + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute = compute(&mut dem, Backend::CPU); + + #[rustfmt::skip] + expect_eq!( + compute.longest_lines.iter() + .map(|los| los.distance() as f32) + .collect::>(), + [ + 0.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 4.0, 0.0, + 0.0, 4.0, 4.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ] + ); + + #[rustfmt::skip] + expect_eq!( + compute.longest_lines.iter() + .map(|los| los.angle().unwrap()) + .collect::>(), + [ + 0, 0, 0, 0, + 0, 0, 12, 0, + 0, 46, 0, 0, + 0, 0, 0, 0 + ] + ); } #[gtest] From 408726de09afe74192a376223695eb18b4e5b9bd Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Thu, 8 Jan 2026 23:04:17 -0800 Subject: [PATCH 15/27] fix: single thread tests, output areas --- benchmarks/run.sh | 3 ++- crates/total-viewsheds/src/main.rs | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/run.sh b/benchmarks/run.sh index 15bee76..a8a8c8c 100755 --- a/benchmarks/run.sh +++ b/benchmarks/run.sh @@ -31,6 +31,7 @@ time cargo run --features ring_data --release -- \ --rings-per-km 3 \ --backend "$backend" \ --process all + --thread-count 1 if [[ $backend == "vulkan" ]]; then # On Github Actions there's no real GPU so it uses a software GPU, which seems to give @@ -54,6 +55,6 @@ limit=$(echo "$actual_area * 0.01" | bc -l) if (($(echo "$diff <= $limit" | bc -l))); then echo "Viewhsed area within 1% of existing benchmark" else - echo "Benchmark viewshed changed too much" + echo "Benchmark viewshed changed too much ${expected_area} vs ${actual_area}" exit 1 fi diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 7154da0..55af12c 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -1,7 +1,6 @@ //! Total Viewshed Calculator #![feature(portable_simd)] #![feature(specialization)] -#![feature(likely_unlikely)] #![expect( incomplete_features, reason = "our usage isn't crazy and unlikely to break" From 4e6d314b02a2a92a291087024614c2163c91da3d Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Fri, 9 Jan 2026 13:11:23 -0300 Subject: [PATCH 16/27] refactor: remove references to `sector_surfaces` Everything is just accumulated in `self.total_surfaces`. --- benchmarks/run.sh | 2 +- crates/total-viewsheds/src/output/viewshed.rs | 1 - crates/total-viewsheds/src/run/serial.rs | 43 +++++-------------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/benchmarks/run.sh b/benchmarks/run.sh index a8a8c8c..a58296a 100755 --- a/benchmarks/run.sh +++ b/benchmarks/run.sh @@ -30,7 +30,7 @@ time cargo run --features ring_data --release -- \ --scale 100 \ --rings-per-km 3 \ --backend "$backend" \ - --process all + --process all \ --thread-count 1 if [[ $backend == "vulkan" ]]; then diff --git a/crates/total-viewsheds/src/output/viewshed.rs b/crates/total-viewsheds/src/output/viewshed.rs index eb7d62b..09fceca 100644 --- a/crates/total-viewsheds/src/output/viewshed.rs +++ b/crates/total-viewsheds/src/output/viewshed.rs @@ -179,7 +179,6 @@ impl<'viewshed> Reconstructor<'viewshed> { kernel::elevations::Direction::Backward, ] { // We divide by 2 because every ring must have both an opening and a closing. - // dbg!(&self.sector_ring_data[self.cursor..(self.cursor + self.reserved_ring_size)]); let mut no_of_ring_values = self.read_next_value()?.div_euclid(2); if no_of_ring_values == 0 { diff --git a/crates/total-viewsheds/src/run/serial.rs b/crates/total-viewsheds/src/run/serial.rs index 11d5c6d..e4b37e5 100644 --- a/crates/total-viewsheds/src/run/serial.rs +++ b/crates/total-viewsheds/src/run/serial.rs @@ -5,13 +5,9 @@ use color_eyre::Result; impl super::compute::Compute<'_> { /// `run_sequential` runs a sequential GPU or CPU kernel pub fn run_sequential(&mut self) -> Result<()> { - let mut sector_surfaces = if Self::is_process_surfaces(&self.config.process) { - let blank = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; - self.total_surfaces.clone_from(&blank); - blank - } else { - Vec::new() - }; + if Self::is_process_surfaces(&self.config.process) { + self.total_surfaces = vec![0.0; usize::try_from(self.dem.computable_points_count)?]; + } let mut longest_lines = if Self::is_process_longest_lines(&self.config.process) { self.longest_lines = vec![ @@ -28,12 +24,7 @@ impl super::compute::Compute<'_> { let trig = kernel::rotation::Rotator::calculate_trig(f32::from(angle)); self.constants.sine = trig.0; self.constants.cosine = trig.1; - self.compute_sector( - angle, - &mut sector_surfaces, - &mut sector_ring_data, - &mut longest_lines, - )?; + self.compute_sector(angle, &mut sector_ring_data, &mut longest_lines)?; if Self::is_process_viewsheds(&self.config.process) { match &self.config.output_directory { @@ -53,7 +44,6 @@ impl super::compute::Compute<'_> { } if Self::is_process_surfaces(&self.config.process) { - self.add_sector_surfaces_to_running_total(§or_surfaces); self.render_total_surfaces()?; } @@ -85,17 +75,16 @@ impl super::compute::Compute<'_> { pub fn compute_sector( &mut self, angle: u16, - cumulative_surfaces: &mut [f32], ring_data: &mut [u32], longest_lines: &mut [f32], ) -> Result<()> { tracing::info!("Running kernel for {angle}°"); match self.config.backend { crate::config::Backend::VulkanCPU => { - self.compute_sector_cpu_vulkan(cumulative_surfaces, ring_data, longest_lines)?; + self.compute_sector_cpu_vulkan(ring_data, longest_lines)?; } crate::config::Backend::Vulkan => { - self.compute_sector_vulkan(cumulative_surfaces, ring_data, longest_lines)?; + self.compute_sector_vulkan(ring_data, longest_lines)?; } #[expect(clippy::unimplemented, reason = "CPU kernel is only multithreaded")] crate::config::Backend::CPU => { @@ -112,7 +101,6 @@ impl super::compute::Compute<'_> { /// Do a whole sector calculation on the GPU using Vulkan. fn compute_sector_vulkan( &mut self, - cumulative_surfaces: &mut [f32], rings: &mut [u32], longest_lines: &mut [f32], ) -> Result<()> { @@ -122,7 +110,8 @@ impl super::compute::Compute<'_> { let (surfaces_data, rings_data, longest_lines_data) = gpu.run(self.constants)?; if Self::is_process_surfaces(&self.config.process) { - cumulative_surfaces.copy_from_slice(surfaces_data.as_slice()); + self.total_surfaces + .copy_from_slice(surfaces_data.as_slice()); } if Self::is_process_viewsheds(&self.config.process) { rings.copy_from_slice(rings_data.as_slice()); @@ -135,8 +124,7 @@ impl super::compute::Compute<'_> { /// Do a whole sector calculation on the CPU. fn compute_sector_cpu_vulkan( - &self, - cumulative_surfaces: &mut [f32], + &mut self, ring_data: &mut [u32], longest_lines: &mut [f32], ) -> Result<()> { @@ -159,7 +147,7 @@ impl super::compute::Compute<'_> { let mut buffers = kernel::kernel::Buffers { constants: &self.constants, elevations: &rotated_elevations, - cumulative_surfaces, + cumulative_surfaces: &mut self.total_surfaces, longest_lines, ring_data, }; @@ -171,17 +159,6 @@ impl super::compute::Compute<'_> { Ok(()) } - /// Add the accumulated total surface areas for the current sector to the running total. - pub fn add_sector_surfaces_to_running_total(&mut self, cumulative_surfaces: &[f32]) { - for (left, right) in self - .total_surfaces - .iter_mut() - .zip(cumulative_surfaces.iter()) - { - *left += right; - } - } - /// Check to see if this angle increases the current longest line of sight for the point. pub fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { From 71269e921aab8689f39085c17c771a00875f52b6 Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Fri, 9 Jan 2026 13:14:53 -0300 Subject: [PATCH 17/27] benchmarks: unify cpu and vulkan-cpu viewshed expectation They are so similar now that we should expect them to always produce the benchmark viewshed within 1% difference. --- .github/workflows/ci.yaml | 2 -- benchmarks/{cpu-cardiff.json => cardiff-viewshed.json} | 0 benchmarks/run.sh | 2 +- benchmarks/vulkan-cpu-cardiff.json | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) rename benchmarks/{cpu-cardiff.json => cardiff-viewshed.json} (100%) delete mode 100644 benchmarks/vulkan-cpu-cardiff.json diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9eb38ec..8c6678f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -34,8 +34,6 @@ jobs: with: toolchain: ${{ env.RUST_VERSION }} - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - name: Build run: cargo build --verbose --all - name: Run tests diff --git a/benchmarks/cpu-cardiff.json b/benchmarks/cardiff-viewshed.json similarity index 100% rename from benchmarks/cpu-cardiff.json rename to benchmarks/cardiff-viewshed.json diff --git a/benchmarks/run.sh b/benchmarks/run.sh index a58296a..126c0f0 100755 --- a/benchmarks/run.sh +++ b/benchmarks/run.sh @@ -46,7 +46,7 @@ time cargo run --release -- \ ls -alh output/viewsheds -expected_area=$(geojson_area "benchmarks/$backend-cardiff.json") +expected_area=$(geojson_area "benchmarks/cardiff-viewshed.json") actual_area=$(geojson_area output/viewsheds/-3.122999906539917-51.48979949951172.json) diff=$(echo "$actual_area - $expected_area" | bc -l | tr -d '-') diff --git a/benchmarks/vulkan-cpu-cardiff.json b/benchmarks/vulkan-cpu-cardiff.json deleted file mode 100644 index b7d3efa..0000000 --- a/benchmarks/vulkan-cpu-cardiff.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"MultiPolygon","coordinates":[[[[-3.309419150322782,51.537805687256515],[-3.3080861950594564,51.53746383836409],[-3.3067278272112883,51.53947352597819],[-3.3080510582732203,51.539829848560075],[-3.309419150322782,51.537805687256515]]],[[[-3.30675325976762,51.5371219743092],[-3.3054203448874317,51.53678009509157],[-3.3040817012650274,51.538760430152735],[-3.302758532228673,51.53840406658388],[-3.301374398918555,51.54035555259508],[-3.3026874384041225,51.540726281574734],[-3.3040816466048475,51.538760511154024],[-3.3040814266500034,51.53876083653272],[-3.305404616377244,51.539117188727474],[-3.30675325976762,51.5371219743092]]],[[[-3.3027545746040565,51.53609629117255],[-3.3014217192015636,51.53575436647194],[-3.3001122499939175,51.53769129298249],[-3.296142986493195,51.53662202133394],[-3.294809777950963,51.538501326982065],[-3.2934968687140804,51.53813051354959],[-3.29212171274889,51.539980731992706],[-3.290819361872218,51.53959565650481],[-3.2894033481877765,51.54141661827219],[-3.2879366745639276,51.54322162260467],[-3.285376574413637,51.54239514854331],[-3.2838825360679142,51.54415660436867],[-3.283882539591005,51.54415660546102],[-3.282339851678265,51.54590090254075],[-3.2807479722174273,51.54762864863156],[-3.2832353898729956,51.548537641591906],[-3.2848520415691875,51.54678290474464],[-3.287364563965583,51.54766460720754],[-3.2889559306360847,51.54586504553069],[-3.290224334687152,51.54629212010233],[-3.2917766921583445,51.544461605653495],[-3.2930568523259667,51.54487478505424],[-3.2945689619714495,51.543013606565],[-3.2958604757040537,51.54341276165879],[-3.297331055619892,51.541521284534184],[-3.29863352479278,51.54190629336518],[-3.300061375045665,51.539984807261774],[-3.3000613807702615,51.53998480889891],[-3.3000615246983314,51.539984605978],[-3.3000616489709746,51.539984438745066],[-3.3000616445670357,51.539984437380234],[-3.301435099949963,51.5380480845858],[-3.301435109196319,51.538048087040394],[-3.3014353309152558,51.538047758921024],[-3.301435381658224,51.538047687527246],[-3.301435379896708,51.53804768698133],[-3.3027545746040565,51.53609629117255]]],[[[-3.3015313912527606,51.5184692256269],[-3.298740115724514,51.51802335260637],[-3.297927299942077,51.519934165320386],[-3.300705783595633,51.52041038807249],[-3.3015313912527606,51.5184692256269]]],[[[-3.30120872240939,51.52259467503589],[-3.299826275628241,51.52234149135683],[-3.298892429417183,51.524263480149834],[-3.3002676332859706,51.5245316905347],[-3.30120872240939,51.52259467503589]]],[[[-3.3004294648129613,51.47112200993538],[-3.2998766765064116,51.46919135362003],[-3.298462295926695,51.469357277250474],[-3.2990106045019503,51.471272494807955],[-3.3004294648129613,51.47112200993538]]],[[[-3.2978608403143084,51.46744908188306],[-3.297205949324596,51.465546974070584],[-3.295801801726351,51.46574359396836],[-3.2964512316223105,51.46763000824653],[-3.292222718632526,51.468173779264006],[-3.2928047844210897,51.47002118087328],[-3.2942192029854276,51.46985532906724],[-3.2947539680019564,51.47172384694905],[-3.2961728563151036,51.471573413314665],[-3.2956336152444554,51.46968945991696],[-3.2970480207569612,51.4695235731489],[-3.2964512693663997,51.46763011763563],[-3.296451356399772,51.467630369861155],[-3.2978608403143084,51.46744908188306]]],[[[-3.2943977822767385,51.46594058277872],[-3.2937014261265145,51.4640764415553],[-3.2909045905915053,51.46450013458772],[-3.2915894249380853,51.46633373217032],[-3.2943977822767385,51.46594058277872]]],[[[-3.291390351650036,51.47018701616927],[-3.290813301584999,51.4683553539599],[-3.2908133086077376,51.468355352852655],[-3.29081322249046,51.46835510281609],[-3.2908131909408835,51.46835500246816],[-3.2908131878686873,51.468355003021145],[-3.2901850919738713,51.46652990562938],[-3.28737666053213,51.46692296095204],[-3.2867093769571145,51.46513591486217],[-3.2881078433593616,51.46492412961611],[-3.287384306950011,51.46312868548631],[-3.2845997277046597,51.46358265343087],[-3.2838395511790646,51.46182597848281],[-3.281068122483625,51.46231014994611],[-3.2818150949615443,51.464036554939156],[-3.2804227600661533,51.464263480468354],[-3.2811153928634957,51.46598288760366],[-3.2825139070970835,51.46577116965459],[-3.283164063367944,51.4675127769119],[-3.2845683138685233,51.4673163122499],[-3.2851750817049736,51.46908006495523],[-3.2894037618264345,51.46853655720164],[-3.2899759086228184,51.470352834126295],[-3.291390351650036,51.47018701616927]]],[[[-3.2906417248931086,51.52265350386954],[-3.2892666324095057,51.52238518359205],[-3.2883329348955317,51.52419172062168],[-3.2842307612840322,51.52334184161902],[-3.2851414514998445,51.52158012653426],[-3.2837664232321853,51.52131174201647],[-3.2828632178192145,51.5230588761151],[-3.28286321957993,51.52305887666129],[-3.2819115821666425,51.52479521054492],[-3.2791931033243307,51.524198805208904],[-3.2782097777804498,51.525895310716265],[-3.2768590741965014,51.52558232141152],[-3.275837264386271,51.52725321036184],[-3.2744954971657148,51.526925536548774],[-3.2734363639179165,51.52857044469752],[-3.270771561313899,51.52788591573297],[-3.2696859693225884,51.52949010491791],[-3.2683633368455127,51.52913335243157],[-3.2672428645066183,51.5307114359846],[-3.2698678503007534,51.531453642851055],[-3.2686824380524495,51.53304746378794],[-3.2699844125917874,51.53343278812932],[-3.268743721640607,51.5350273571839],[-3.2674581758557477,51.536608575922735],[-3.2687378892795405,51.53702201923832],[-3.2700346181893813,51.535426990342316],[-3.270034623913197,51.53542699225521],[-3.2700347881664182,51.535426781391095],[-3.270034868335054,51.53542668254455],[-3.2700348656926104,51.53542668145069],[-3.2712864135171795,51.533818099089196],[-3.27128641880015,51.5338181007283],[-3.2712865584877173,51.533817912934154],[-3.271286671047405,51.53381776823858],[-3.2712866670847287,51.5338177668721],[-3.272492926306423,51.53219579225835],[-3.2738054958825717,51.53256684490225],[-3.2725884421507754,51.53420339748822],[-3.2738904874866295,51.53458868004833],[-3.275118322354904,51.532937565997074],[-3.273805729254297,51.53256653080903],[-3.27380562811122,51.532566666714956],[-3.2749764726977193,51.53091730432069],[-3.2749764801811887,51.53091730650535],[-3.2749766648584293,51.530917033616994],[-3.274976712570142,51.53091696635294],[-3.2749767108092223,51.53091696580663],[-3.2761010334410763,51.5292552594935],[-3.280098514398355,51.53028186086298],[-3.2789447471540365,51.53198730450525],[-3.281590354348455,51.53270055973822],[-3.2803686704865678,51.53442188858966],[-3.2829940875132486,51.53516380239003],[-3.2842360512737234,51.53341375713864],[-3.284236059637651,51.53341375932152],[-3.284236260895723,51.53341346198363],[-3.2842363059702033,51.53341339828528],[-3.2842363042090774,51.53341339773912],[-3.285428769150345,51.531650450898844],[-3.286761382671809,51.531992560246074],[-3.2855589393284905,51.53377033589087],[-3.286881840129284,51.53412689724825],[-3.288094265078508,51.53233428598342],[-3.2867616294007864,51.53199219481515],[-3.2867613909804887,51.531992547068306],[-3.2879140418537403,51.53020158683503],[-3.2852301782179727,51.52954649959239],[-3.2863141942819967,51.52777329101413],[-3.2863141995638334,51.52777329237825],[-3.2863143101362318,51.527773101314914],[-3.28631441768536,51.527772925616325],[-3.286314412843264,51.52777292425158],[-3.2873485668451377,51.52598817930192],[-3.2887079090011735,51.52628629951636],[-3.2897003720648907,51.5244749840807],[-3.28970035974293,51.524474981355254],[-3.2906417248931086,51.52265350386954]],[[-3.2827638334243945,51.53096582737129],[-3.2814312780953485,51.530623675306856],[-3.2825461799365954,51.528891682521106],[-3.2838880614242294,51.52921926716902],[-3.2827638334243945,51.53096582737129]],[[-3.276101255245204,51.52925491523813],[-3.2747688086152182,51.52891269013807],[-3.274768582809337,51.52891302369859],[-3.2758372394570308,51.52725325099],[-3.2758370688915854,51.52725352989602],[-3.2771788465921543,51.527581189730896],[-3.276101255245204,51.52925491523813]],[[-3.27365399431737,51.53056027305275],[-3.2723312984980883,51.53020356509123],[-3.2734361556597316,51.5285707678098],[-3.273436146034892,51.52857078290837],[-3.274768579747468,51.52891302863988],[-3.27365399431737,51.53056027305275]]],[[[-3.2873849446391135,51.520062103650176],[-3.2860026512137823,51.51980875697753],[-3.2851412755964344,51.52158048994455],[-3.286516318291641,51.52184886163008],[-3.2873849446391135,51.520062103650176]]],[[[-3.2823914115684607,51.52104334109585],[-3.281016416071554,51.52077492432192],[-3.2801285573889323,51.522492172328086],[-3.281495879117762,51.52277553205915],[-3.2823914115684607,51.52104334109585]]],[[[-3.2680396831926215,51.513114364826315],[-3.2652490560602683,51.5126676938095],[-3.265864578657799,51.51111438568244],[-3.2644632983860453,51.51090626142738],[-3.263853765822272,51.51244433380262],[-3.2610632333258263,51.51199756506659],[-3.260423443347457,51.51349871485535],[-3.2618122805111627,51.5137372778267],[-3.2611238796268673,51.51524596029653],[-3.2603932727498077,51.51674704392487],[-3.2658923758931873,51.51782159440759],[-3.2666520078550594,51.516260491077844],[-3.266652009174823,51.51626049135053],[-3.2666520340622562,51.51626043673522],[-3.2666521537488595,51.516260190819814],[-3.26665214715004,51.51626018945641],[-3.267367797556651,51.51469136899998],[-3.2673678045940155,51.51469137008851],[-3.2673679115063923,51.51469111870208],[-3.2673679442523595,51.51469104734491],[-3.267367942492152,51.51469104679849],[-3.2680396831926215,51.513114364826315]]],[[[-3.2650473310879033,51.50454806461506],[-3.2636264040000986,51.50440143074512],[-3.263198978572504,51.5059313581052],[-3.261782334663055,51.505769248425246],[-3.261316766885604,51.507279186160446],[-3.2641406601681826,51.5076342152336],[-3.2646155394583403,51.50609376814528],[-3.2646155456143884,51.50609376896073],[-3.2646156056063043,51.50609355466305],[-3.2646156373718838,51.50609345121507],[-3.264615634732967,51.50609345066967],[-3.2650473310879033,51.50454806461506]]],[[[-3.2642427150166817,51.52091744389274],[-3.261524693533985,51.52032062797242],[-3.2606518416315833,51.52182553464595],[-3.2633528276349133,51.52245187919668],[-3.2642427150166817,51.52091744389274]]],[[[-3.2597739738520035,51.49046503033709],[-3.259769513482797,51.48897446308778],[-3.255450551250183,51.48900295568703],[-3.2554547331453207,51.49044617526452],[-3.2496957584635893,51.49042116937618],[-3.2496609834579977,51.49180173692146],[-3.2511003724995193,51.49182370374111],[-3.251026228090774,51.49321907702904],[-3.255342053394907,51.4933319087125],[-3.255418561097058,51.491889497377436],[-3.2568579644517675,51.49191139353024],[-3.256894479167478,51.490452662746875],[-3.2597739738520035,51.49046503033709]]],[[[-3.2591229167361635,51.48153662350835],[-3.258868978871086,51.48005450884027],[-3.254579264379416,51.480364652183866],[-3.2548249996921412,51.481799677357984],[-3.2519597337183406,51.48197516156214],[-3.2521608198838483,51.483381689634655],[-3.2535957321870703,51.483309581761084],[-3.253759292836184,51.484733460584955],[-3.2580695460662095,51.48456396618023],[-3.2579004551116495,51.483093152513106],[-3.2579004599433006,51.48309315223325],[-3.2579004352727368,51.48309298000302],[-3.2579004226473844,51.483092870024386],[-3.257900419572992,51.48309287030221],[-3.257690297270923,51.481624423991505],[-3.2591229167361635,51.48153662350835]]],[[[-3.237057524223203,51.446068427636085],[-3.2358170298131856,51.44483215442385],[-3.234605120056764,51.44531625379019],[-3.2333445807410204,51.444107296859904],[-3.233344583372018,51.44410729576024],[-3.2333444773505873,51.44410719766106],[-3.233344337003845,51.444107063112455],[-3.233344333496279,51.44410706476156],[-3.232050025563494,51.44291178146783],[-3.230865899213105,51.44342197746173],[-3.2321462651470436,51.444604413582425],[-3.233393252862521,51.44580040361382],[-3.2346069660164125,51.44701005082746],[-3.237057524223203,51.446068427636085]]],[[[-3.2365515225489503,51.54213850645678],[-3.235391517957285,51.54160499273779],[-3.2339256280284894,51.54282186082825],[-3.2350705342606267,51.54336793420153],[-3.2365515225489503,51.54213850645678]]],[[[-3.2321591832945487,51.473382509966434],[-3.231682269893089,51.472195465009555],[-3.23028943608304,51.472421795162006],[-3.2307602018478634,51.47359362730504],[-3.2321591832945487,51.473382509966434]]],[[[-3.2316724488500004,51.43949327825888],[-3.2302495188291838,51.43831674361598],[-3.23024975231354,51.4383169296514],[-3.2313894111305714,51.43776871352157],[-3.2299183508505047,51.436595467588376],[-3.2287941880055446,51.43715602012507],[-3.2302494484751874,51.43831668717475],[-3.2291097667682513,51.438864894087665],[-3.2305176154091706,51.44002898281338],[-3.2316724488500004,51.43949327825888]]],[[[-3.2288966829962744,51.47264833113297],[-3.22839983739442,51.471496949974],[-3.227013544195974,51.47173838810851],[-3.2275038207285123,51.472874625441214],[-3.2288966829962744,51.47264833113297]]],[[[-3.224767644434912,51.53845264061833],[-3.2224783465080478,51.53736028646684],[-3.2211330568264365,51.53843708352781],[-3.223391450016402,51.53955421834448],[-3.224767644434912,51.53845264061833]]],[[[-3.2228546747900397,51.47246282759343],[-3.2223537137837925,51.4713773161446],[-3.2209743473490446,51.471633756499074],[-3.2204507675337086,51.47056928472254],[-3.221822734375108,51.47029785728335],[-3.221261584536189,51.46922414022888],[-3.2212615862917398,51.46922413967881],[-3.2212615519017915,51.46922407744208],[-3.221261469437147,51.469223920338635],[-3.2212614650470943,51.4692239211652],[-3.220670424518067,51.4681564809583],[-3.219314520172112,51.46845763657092],[-3.218702537472338,51.46741172823163],[-3.220049795339183,51.46709584876533],[-3.219399394642824,51.466041718978026],[-3.2180611937949375,51.466372232298994],[-3.217391072935233,51.46534009497582],[-3.2173912055190357,51.46534028934622],[-3.2200486531632766,51.46465019635462],[-3.219330089712958,51.46359666665036],[-3.219330090590634,51.46359666637534],[-3.2193300676884133,51.463596634301304],[-3.219329942589129,51.463596450624514],[-3.21932993732249,51.463596452000324],[-3.218582226691537,51.462551113373884],[-3.221199324822041,51.46180348231821],[-3.220401073667647,51.460737849584824],[-3.2204010758613997,51.46073784876011],[-3.220401009815897,51.460737764056894],[-3.220400909415458,51.460737630008566],[-3.220400905465889,51.46073763110905],[-3.219573200679337,51.45968105982116],[-3.2208599886455422,51.45927894145164],[-3.2199913144436096,51.45821738932015],[-3.219991314882101,51.45821738904547],[-3.2199912919931606,51.45821736218319],[-3.219991135715262,51.45821717085239],[-3.219991130450426,51.45821717277683],[-3.2190931454248415,51.457165447523025],[-3.2190931476184472,51.457165446698326],[-3.219093079842704,51.457165370773296],[-3.219092973326023,51.45716524578062],[-3.2190929698163764,51.45716524715499],[-3.2181655913463683,51.45612325107662],[-3.2169143208597633,51.45656686209837],[-3.2178294777343317,51.45759515720279],[-3.2165659619136844,51.45802505360423],[-3.215663212703085,51.45701066887569],[-3.2156632131415965,51.45701066860104],[-3.2156631981811805,51.45701065270357],[-3.215663026554359,51.45701045945902],[-3.2156630212894695,51.45701046138328],[-3.2147321263902877,51.45600608124594],[-3.214732130777541,51.45600607959671],[-3.2147319719482024,51.45600591486776],[-3.2147319336673803,51.45600587347869],[-3.214731932790378,51.45600587402797],[-3.213773149956817,51.45501177438411],[-3.213773153027418,51.455011773010234],[-3.2137730364491177,51.455011656523745],[-3.2137729656175127,51.45501158334097],[-3.2137729638629637,51.45501158416521],[-3.212786395027806,51.45402787836607],[-3.211573998717852,51.454511738599486],[-3.2105740644040517,51.45355226369894],[-3.210574066597633,51.453552262874396],[-3.210573986112617,51.45355218859969],[-3.210573870874815,51.45355207814355],[-3.2105738678036944,51.45355207924304],[-3.209547328772832,51.452603646508074],[-3.2095473292113272,51.452603646233456],[-3.209547304145028,51.45260362403381],[-3.209547117233694,51.452603451363835],[-3.209547112408087,51.45260345328749],[-3.208494292364471,51.45166636049924],[-3.2084942945574886,51.45166635940044],[-3.2084942013370163,51.4516662793733],[-3.2084940760096394,51.45166616782525],[-3.2084940729391014,51.45166616919899],[-3.2074152642509497,51.45074067438179],[-3.2085706417019177,51.45020519676198],[-3.207450607298041,51.44927872602088],[-3.205170121382844,51.450374685501814],[-3.2040558515208724,51.44948559732132],[-3.2040558532748964,51.449485596222914],[-3.2040557657958746,51.44948552880598],[-3.2040556405061786,51.44948542904797],[-3.204055637874651,51.44948543042128],[-3.2029165095467773,51.44860843380539],[-3.2018075409708766,51.44918090731661],[-3.2006603197503742,51.448328465859184],[-3.1973817421719435,51.45008180917614],[-3.1984806995750334,51.45089843175063],[-3.199589749616724,51.450325995087056],[-3.2006812869478383,51.45116639889931],[-3.2017492479850427,51.452018587209324],[-3.202793362744441,51.45288234825914],[-3.203813268382303,51.453757386688956],[-3.2048086261253985,51.4546434145261],[-3.2057788886310448,51.45553993794342],[-3.204580081278935,51.45603687084318],[-3.205511828792294,51.456931030639964],[-3.206724351093332,51.45644723795537],[-3.2076440665881143,51.457364406268034],[-3.208538277423614,51.458291684413794],[-3.211015888706507,51.45737748344965],[-3.211908991950807,51.45834117369109],[-3.210657605441588,51.45878471585189],[-3.2115117584980277,51.459744613754204],[-3.2123389446780504,51.460713607034336],[-3.2131388546579993,51.46169132701663],[-3.213911516205531,51.462677812360454],[-3.2152094699642877,51.46228984902926],[-3.2159649117736486,51.463298486612736],[-3.214656291837813,51.46367225327342],[-3.215373344328747,51.46467485039148],[-3.2127355168776166,51.46539370727272],[-3.2127356327058587,51.4653938769744],[-3.2120389913361858,51.46441974133684],[-3.210730311210063,51.464793462738456],[-3.210017513649501,51.463841618746],[-3.21001751584358,51.46384161792148],[-3.210017453334732,51.46384153787291],[-3.2100173670460723,51.46384142273185],[-3.210017363534606,51.463841423557355],[-3.2092781095843206,51.46289748858452],[-3.2092781122169693,51.46289748748539],[-3.209278032111727,51.4628973893457],[-3.2092779678458743,51.46289730765223],[-3.2092779656512986,51.46289730820243],[-3.208512481491157,51.46196157069809],[-3.2085124823688647,51.461961570423156],[-3.2085124603655695,51.4619615449295],[-3.2085123239290727,51.46196137825587],[-3.208512319540509,51.461961379630566],[-3.207720688680207,51.461033946823875],[-3.206456982948715,51.46146373403768],[-3.2072367802978894,51.46237733312969],[-3.2059612218139666,51.46279327134985],[-3.2067040379295375,51.46370136132588],[-3.2074213477406417,51.46461734239864],[-3.208113015824939,51.46554104177424],[-3.2094217360862443,51.46516735347173],[-3.210097711803645,51.466112667856265],[-3.2107472365684484,51.46706525839169],[-3.2120760653477856,51.46672029605837],[-3.2127083388246165,51.46769431470514],[-3.2140466130703285,51.46736386638777],[-3.2146605372043173,51.468359066102366],[-3.213313212396006,51.4686748854972],[-3.2138908462999036,51.46966228961109],[-3.2152468185507366,51.46936120088914],[-3.2158049245166724,51.47036937654699],[-3.2171691142575733,51.470083091224105],[-3.2177067086587754,51.4711119145496],[-3.2182155892461592,51.472146627982305],[-3.2186955478799093,51.47318683378194],[-3.2191463559671916,51.47423204314056],[-3.220539301355141,51.474005848148586],[-3.2200819531552987,51.47294555024856],[-3.2228546747900397,51.47246282759343]],[[-3.2160623106845976,51.46568510555894],[-3.215373470277864,51.46467502639147],[-3.2153734914163175,51.46467505599896],[-3.216692377799592,51.46431560773848],[-3.2173910619232275,51.46534007880112],[-3.2160623106845976,51.46568510555894]],[[-3.2122544708886642,51.45692016085558],[-3.211321634019729,51.455952909112966],[-3.2125474048107225,51.45548234817416],[-3.2134932139931283,51.456463023865794],[-3.2122544708886642,51.45692016085558]],[[-3.212075935406302,51.46672009591977],[-3.2120759437753965,51.466720108805404],[-3.2114167044163513,51.46575331219462],[-3.21273565428584,51.46539390850213],[-3.213404746767085,51.466375114119174],[-3.212075935406302,51.46672009591977]],[[-3.207936659929306,51.455963242465764],[-3.206977860818762,51.45504316843368],[-3.208176621379437,51.4545462125776],[-3.2091491318266834,51.455479420237864],[-3.207936659929306,51.455963242465764]]],[[[-3.2082898244392952,51.55426799952838],[-3.2073714468029517,51.55357512370101],[-3.205573919666375,51.554484662782556],[-3.2037508957645775,51.55537459397858],[-3.2037508891697595,51.555374597000345],[-3.2019038232885015,51.556244216239435],[-3.2019038206450685,51.55624421432115],[-3.200032258377508,51.55709374103552],[-3.1991937307913423,51.55636256043175],[-3.1973188285519054,51.55718271088821],[-3.198136739450655,51.55792291972359],[-3.200032058757349,51.55709383140901],[-3.200031873207871,51.557093915738804],[-3.200870425488989,51.55782509437783],[-3.20276237154801,51.556966308406096],[-3.2027623785989823,51.556966314435755],[-3.2046298926255057,51.55608705991524],[-3.2046299027370906,51.55608705497095],[-3.204630279075828,51.556086877790015],[-3.204630274228266,51.55608687367898],[-3.20647243937091,51.55518759018252],[-3.2064724437775247,51.5551875937452],[-3.2064727580935117,51.55518743470581],[-3.206472814364504,51.555187407236446],[-3.20647281392299,51.555187406413886],[-3.2082898244392952,51.55426799952838]]],[[[-3.1834670793258306,51.489454550345286],[-3.183447789106558,51.48879580715414],[-3.183447790863676,51.488795806878926],[-3.183447787718081,51.488795753941325],[-3.183447785412053,51.488795671379236],[-3.183447783215202,51.48879567138036],[-3.183410081537282,51.4881372384998],[-3.181971795242058,51.48817717790403],[-3.182008583506829,51.48882000997791],[-3.1820273951968363,51.48946312586332],[-3.1834670793258306,51.489454550345286]]],[[[-3.170912905134363,51.44279030937587],[-3.1695922572869994,51.44227533550536],[-3.16884153530088,51.44304200412594],[-3.1701408959220196,51.4435486801411],[-3.170912905134363,51.44279030937587]]],[[[-3.166434163251002,51.503902294139046],[-3.165156302332199,51.50348773610735],[-3.165156273355822,51.503487770130455],[-3.165532446384321,51.50302635234888],[-3.1642432199462522,51.50262576573504],[-3.1638784641633917,51.50307316385167],[-3.1626006505033706,51.502658578194726],[-3.1622352116563617,51.50308807389397],[-3.160969203851092,51.5026596167747],[-3.160603964464455,51.503071343922954],[-3.1593501445363352,51.502629144049294],[-3.1593501225801575,51.502629167919835],[-3.15970314338235,51.50223122717605],[-3.1609691274479146,51.502659701556865],[-3.16132285915386,51.50224397831486],[-3.160045090554651,51.50182936448667],[-3.1603756121715914,51.501423998909765],[-3.1603756134905168,51.50142399945793],[-3.1603756551986955,51.501423946231235],[-3.160375675833936,51.50142392071513],[-3.1603756749547296,51.50142392044111],[-3.160694846761442,51.50101496262758],[-3.1606948063731513,51.50101501667688],[-3.161994960515691,51.501401542126125],[-3.162313327587757,51.50097483185002],[-3.1610025702051323,51.5006025333917],[-3.1610025517671194,51.500602557810026],[-3.161298690122779,51.50018683914412],[-3.1599777525543793,51.49982886366062],[-3.1599777450919446,51.499828874360524],[-3.160252396223737,51.49942445836995],[-3.158921679869077,51.49908091382819],[-3.158656835682787,51.49947087300566],[-3.1573359395087195,51.49911286772826],[-3.157590983963293,51.49873735444402],[-3.157590981326084,51.4987373538962],[-3.1578354803346955,51.498359122969966],[-3.1578354381988154,51.4983591918308],[-3.159175526768183,51.49868820403343],[-3.1594184468420536,51.49829263120896],[-3.1580693704694576,51.49797827268416],[-3.1580693489629295,51.4979783078005],[-3.158292565489817,51.497594941647286],[-3.1569349331684102,51.49729531356799],[-3.1567203122184644,51.49766389835231],[-3.155371273847953,51.49734950903615],[-3.155155318513068,51.49770112171516],[-3.1564953671686924,51.49803016402599],[-3.156260305429657,51.498393779121535],[-3.154929651301321,51.49805018977922],[-3.154694199594885,51.49839682620233],[-3.154449084376253,51.49874084930952],[-3.1541944183060364,51.49908210266194],[-3.1528943943930563,51.49869549362009],[-3.152641184828889,51.49901986332462],[-3.1523789158885602,51.49934145446833],[-3.1536565413964297,51.49975615444811],[-3.153373573942886,51.50008864684886],[-3.1533735748220195,51.500088647122936],[-3.1530813878576396,51.500417961546646],[-3.1527799491848594,51.50074413359162],[-3.154021091429138,51.50119999467992],[-3.153697688633696,51.501536237940755],[-3.1549259273173487,51.50200553958531],[-3.1545798750668363,51.5023515058572],[-3.1542242065214623,51.502693637618506],[-3.1538590203811787,51.503031842044486],[-3.1526718026063314,51.50252305736244],[-3.152311554921928,51.50284442603223],[-3.151942373674799,51.503161817668484],[-3.151564452057914,51.503475068660116],[-3.15117768983569,51.503784261236184],[-3.1534326576530667,51.50490274833297],[-3.153850270782524,51.50456887970895],[-3.1561362780308544,51.50566258426945],[-3.1565747215127558,51.50529913760247],[-3.157732880478225,51.50583343579204],[-3.158175931647806,51.50545249543023],[-3.157003008448506,51.50493089917231],[-3.1574207524225777,51.504558204666424],[-3.1574207528623037,51.504558204940594],[-3.1574207660386566,51.504558192593414],[-3.1574208393896126,51.504558127289485],[-3.1574208376309,51.504558126467124],[-3.157828093684679,51.50418093291619],[-3.1578280950036506,51.504180933464404],[-3.1578281376055504,51.50418089230738],[-3.1578281727423265,51.50418085993004],[-3.1578281718628762,51.504180859381705],[-3.158224813646989,51.50379928515358],[-3.1594398506557857,51.504281846966585],[-3.1598391589600547,51.5038825960436],[-3.1598391374419403,51.50388261854263],[-3.1610675027227852,51.50435185596321],[-3.161468561593266,51.503934802887976],[-3.1602272663634814,51.503479023013085],[-3.160603948656862,51.50307136175725],[-3.1606038946475685,51.50307142266825],[-3.161857737091403,51.503513611850586],[-3.1622351370166077,51.50308816306509],[-3.1635011690108192,51.50351661032978],[-3.1638784452851874,51.503073186899094],[-3.1638783895288443,51.5030732552182],[-3.165156222866676,51.503487829396505],[-3.164767225189314,51.50394504417278],[-3.166033305112411,51.50437346431948],[-3.166434163251002,51.503902294139046]],[[-3.1606948695894586,51.50101493189911],[-3.15939473612971,51.50062839503197],[-3.159394715934193,51.50062842109635],[-3.159691811793284,51.50023025071679],[-3.15969177886949,51.50023029708311],[-3.1610025113800164,51.500602612408],[-3.1606948695894586,51.50101493189911]],[[-3.1598392120971615,51.50388254116775],[-3.1586108694147015,51.50341329359112],[-3.1589859950204806,51.503023229693454],[-3.1577447493225352,51.50256742347759],[-3.158096281250813,51.50218700317485],[-3.159350075154611,51.50262921922786],[-3.15898592036845,51.50302331118223],[-3.1602271855611055,51.50347910615037],[-3.1598392120971615,51.50388254116775]],[[-3.1596918337426203,51.500230219988765],[-3.1583811195195293,51.49985789246412],[-3.1586568312929884,51.49947087931581],[-3.158656781250447,51.49947095284236],[-3.1599776937311495,51.499828945967984],[-3.1596918337426203,51.500230219988765]],[[-3.159086539384005,51.501023277042925],[-3.157797425541467,51.50062261945008],[-3.1580945627604335,51.50024192219617],[-3.1593946724691966,51.500628476243335],[-3.159086539384005,51.501023277042925]],[[-3.1578354829685433,51.498359119129034],[-3.1564954119426436,51.49803009461628],[-3.156720291590169,51.49766393374244],[-3.1567202678895265,51.49766397434508],[-3.1580693221892244,51.49797835114729],[-3.1578354829685433,51.498359119129034]],[[-3.154657243716079,51.50388767243048],[-3.153484401741777,51.5033660411248],[-3.153858954057102,51.50303190350421],[-3.153858944394056,51.50303191255851],[-3.1550461877345475,51.5035406887469],[-3.154657243716079,51.50388767243048]]],[[[-3.1641382723429836,51.5094901021202],[-3.1629950610631323,51.508943336649914],[-3.1624536326659687,51.50937626048888],[-3.1635813788297495,51.50993540069185],[-3.1641382723429836,51.5094901021202]]],[[[-3.1626337920594936,51.50616368135761],[-3.1602309302583724,51.50517229547427],[-3.159795429031146,51.505575667947646],[-3.1593487880733955,51.505974160859466],[-3.1605217608862954,51.50649573603794],[-3.160982798875079,51.50608438876556],[-3.162170200433427,51.50659309258112],[-3.1626337920594936,51.50616368135761]]],[[[-3.1618518771508217,51.508396559987624],[-3.1607087206054283,51.507849772133795],[-3.1601982231643952,51.50825794794715],[-3.161325914111156,51.50881710966524],[-3.1618518771508217,51.508396559987624]]],[[[-3.1595655918660763,51.50730297336307],[-3.158422490052593,51.506756163127605],[-3.1579429240920165,51.507139591555195],[-3.1590705598247677,51.50769877506078],[-3.1595655918660763,51.50730297336307]]],[[[-3.138807519993514,51.48919486740144],[-3.1387881794860824,51.48902273111605],[-3.1387881799254553,51.489022731115995],[-3.1387881772834434,51.48902271438425],[-3.1387881755203626,51.489022698201],[-3.1387881750809914,51.48902269820105],[-3.138764030293587,51.488850834106785],[-3.1387640307329585,51.48885083410673],[-3.1387640285320373,51.48885082231227],[-3.1387640254483067,51.488850798723185],[-3.1387640245695656,51.4888507987233],[-3.1387350737931015,51.48867919118255],[-3.137304635746914,51.48878112466332],[-3.1373309537232745,51.48893715201019],[-3.137352901508193,51.48909341275962],[-3.137370481698181,51.48924992200004],[-3.138807519993514,51.48919486740144]]],[[[-3.1365059987832664,51.41567619371163],[-3.1344351150502288,51.41554031421577],[-3.134435115488144,51.41554031119843],[-3.1344348264022814,51.415540295317236],[-3.1344346895357553,51.415540286278706],[-3.1344346890974992,51.41554028792456],[-3.1323603392632116,51.41542699195807],[-3.1323603383871115,51.415426997992746],[-3.130283578791366,51.41533633880275],[-3.1302835787907997,51.415336335236844],[-3.1302832765486555,51.415336325380835],[-3.1302831519667618,51.415336319902586],[-3.130283151528314,51.41533632127412],[-3.128204183964265,51.4152683028311],[-3.128204184402307,51.41526829734508],[-3.1261231549413537,51.41522292941053],[-3.12612315494126,51.41522292803902],[-3.12612304088842,51.415222926944864],[-3.126122783830641,51.415222921191436],[-3.1261227838308283,51.41522292393443],[-3.1240412361222627,51.415200241763166],[-3.1240412361222254,51.41520024011736],[-3.1240411093482527,51.41520024011849],[-3.1240408079858275,51.41520023682957],[-3.1240408079859026,51.41520024012117],[-3.1219590016963314,51.41520024012113],[-3.121959001257742,51.41520023682954],[-3.121958699895317,51.41520024011845],[-3.121958573121344,51.41520024011733],[-3.1219585731213066,51.41520024176312],[-3.119877082439141,51.415222923661545],[-3.119877082439272,51.415222921741446],[-3.119876907850546,51.41522292557699],[-3.1198766538636242,51.41522292831323],[-3.1198766543021015,51.41522293105622],[-3.1177960529791493,51.41526828913494],[-3.117796052540516,51.41526828886063],[-3.117796027975187,51.41526828968243],[-3.1177956818677273,51.415268297073155],[-3.1177956823059563,51.415268300913375],[-3.1157166577152005,51.41533632154817],[-3.1157166572767956,51.415336319902345],[-3.1157165208508464,51.41533632592847],[-3.1157162300140495,51.41533633551087],[-3.115716230452192,51.41533633880251],[-3.113639471295105,51.41542699799246],[-3.1136394704189487,51.4154269922321],[-3.1115651201460417,51.41554028792418],[-3.111565120146384,51.41554028655267],[-3.1115649955627567,51.41554029476952],[-3.111564693755397,51.41554031119805],[-3.1115646946319107,51.41554031448974],[-3.109494237293268,51.41567616578182],[-3.1094942364169005,51.415676162490115],[-3.1094939275871005,51.41567618604431],[-3.1094938104602625,51.4156761937112],[-3.1094938108985297,51.415676195082746],[-3.1074273908665644,51.41583458848441],[-3.1074273904281746,51.41583458766145],[-3.107427319800199,51.41583459368666],[-3.107427021935214,51.41583461668826],[-3.1074270228114345,51.41583461997997],[-3.1053648976527373,51.41601554120556],[-3.1053648989669584,51.41601554586886],[-3.103308598476535,51.416218859903275],[-3.1033085980388035,51.416218857708806],[-3.1033084050130455,51.41621887907175],[-3.1033081751380833,51.41621890179999],[-3.1033081760143726,51.416218904268845],[-3.1012578442152283,51.41644459113837],[-3.1012578424632555,51.41644458537774],[-3.0992132597174353,51.416692679369994],[-3.0992132614694454,51.416692684582046],[-3.097176671946912,51.41696291328817],[-3.097176671509003,51.41696291191656],[-3.0971765346293627,51.41696293163598],[-3.0971763086917377,51.41696296148487],[-3.097176309567709,51.41696296395376],[-3.0951475503239907,51.4172553414585],[-3.0951475481337414,51.41725533624628],[-3.093126453167258,51.4175698941883],[-3.09312645535747,51.41756989912624],[-3.091115247605313,51.41790629096694],[-3.091115245415108,51.417906286303236],[-3.0891132877917604,51.418264614404436],[-3.0891132860394213,51.418264611112335],[-3.089112999531949,51.418264665889424],[-3.089112877558907,51.41826468779813],[-3.089112877996585,51.41826468916975],[-3.087121550363728,51.41864470645149],[-3.0871215499254645,51.41864470590276],[-3.0871214880592754,51.418644718501604],[-3.087121194088331,51.41864477436873],[-3.0871211958405427,51.418644777660866],[-3.085140744418041,51.41904643427169],[-3.0851407435417744,51.419046432899904],[-3.0851406167347357,51.41904646001462],[-3.085140338551583,51.41904651643048],[-3.085140340303664,51.41904651972263],[-3.083171417671951,51.41946968147659],[-3.0831714172342,51.419469680379244],[-3.083171315434587,51.419469703385815],[-3.0831710131102685,51.419469768292096],[-3.0831710153009313,51.41946977158443],[-3.0812141692538506,51.419914320757506],[-3.0812141679394727,51.419914318836945],[-3.081213993294879,51.41991436074252],[-3.0812137655576968,51.41991441222964],[-3.0812137673100297,51.419914414973256],[-3.0792695874099834,51.420380217157536],[-3.079269585657749,51.42038021441388],[-3.0792693535221165,51.42038027302738],[-3.0792691894054536,51.420380312465284],[-3.0792691907197645,51.42038031438587],[-3.0773382165909204,51.42086724122364],[-3.077338214400882,51.42086723765688],[-3.0773379023894916,51.420867320373794],[-3.0773378699161285,51.42086732859012],[-3.077337870354573,51.420867328864595],[-3.0754207413252233,51.42137522107457],[-3.075420740448918,51.42137521997701],[-3.0754206491679703,51.42137524544981],[-3.075420347682157,51.42137532514859],[-3.0754203503110804,51.42137532844126],[-3.0735176992298525,51.4219040166257],[-3.0735176970391724,51.42190401388179],[-3.0735174539069163,51.42190408482271],[-3.073517305133264,51.42190412617913],[-3.073517306447673,51.42190412782549],[-3.0716296561123735,51.422453465890364],[-3.0716296543602035,51.422453463420894],[-3.0716294243853457,51.42245353326648],[-3.071629270339405,51.42245357818408],[-3.0716292716537534,51.42245357983045],[-3.06975719674653,51.4230234014352],[-3.0697571949941183,51.42302339924],[-3.0697570031943675,51.42302346004737],[-3.069756809641573,51.42302351920813],[-3.069756811393975,51.423023521403316],[-3.0679008318412544,51.42361366816667],[-3.067900829212743,51.42361366487384],[-3.067900519774322,51.42361376731637],[-3.0679005009010316,51.42361377334209],[-3.0679005013394525,51.42361377361659],[-3.066061227588075,51.42422405403822],[-3.066061225835801,51.42422405184297],[-3.0660610449924897,51.42422411456969],[-3.0660608496680304,51.42422417920948],[-3.066060851859053,51.424224181404945],[-3.064238895354478,51.42485439084827],[-3.0642388949160706,51.42485439057375],[-3.0642388747237748,51.42485439796971],[-3.0642385196120534,51.424854520677826],[-3.0642385231168197,51.424854524794064],[-3.0624343887582803,51.42550448822299],[-3.062434385691291,51.4255044849298],[-3.062434090696159,51.42550459559433],[-3.0624340156318177,51.42550462271119],[-3.062434016508253,51.425504623534536],[-3.0606481935018834,51.42617416565318],[-3.060648193063488,51.426174165378654],[-3.060648160138627,51.42617417797891],[-3.0606478809383937,51.426174282887054],[-3.060647884005661,51.42617428590597],[-3.058880971421853,51.42686318432133],[-3.0588809701070527,51.426863183223404],[-3.0588808629850903,51.42686322650411],[-3.0588806061607032,51.42686332675717],[-3.058880609228294,51.426863329501856],[-3.0571332010021375,51.427571351145595],[-3.0571331957438463,51.42757134620524],[-3.055405405185291,51.428298450596166],[-3.055405404747308,51.428298450047315],[-3.055405376646567,51.428298462374585],[-3.0554050491059446,51.42829860015824],[-3.0554050530497863,51.42829860372642],[-3.0536981210683076,51.42904426854378],[-3.05369811887681,51.42904426689669],[-3.053697974852726,51.429044332094776],[-3.05369776935974,51.42904442194343],[-3.053697771988783,51.42904442441368],[-3.0520118138945165,51.42980859522501],[-3.0520118099503857,51.42980859193104],[-3.0520115284716716,51.4298087242471],[-3.052011513980936,51.42980873082151],[-3.052011514419311,51.429808731096074],[-3.050347093055807,51.430591154326656],[-3.050347092617426,51.430591154052074],[-3.0503470732949247,51.43059116336628],[-3.050346748331622,51.430591316223826],[-3.050346752714076,51.430591319792434],[-3.0487044152569194,51.43139173803631],[-3.0487044108745147,51.431391734467645],[-3.0487041109149584,51.43139188596498],[-3.048704080612403,51.43139190075793],[-3.0487040810503405,51.4313919013068],[-3.0470842803972866,51.43221009277488],[-3.047084279958911,51.43221009250029],[-3.0470842681001185,51.43221009880149],[-3.0470839479269713,51.43221026043063],[-3.047083952748162,51.43221026399964],[-3.0454871897972757,51.43304597649941],[-3.045487186729157,51.433045974302985],[-3.045486994781834,51.43304607840974],[-3.0454868586222834,51.43304614963747],[-3.0454868608136687,51.43304615128471],[-3.0439135742301873,51.43389915673372],[-3.043913568093967,51.433899152340786],[-3.0423636822785993,51.43476950566762],[-3.0423636910454905,51.43476951143394],[-3.0408389127031827,51.43565625361315],[-3.0408389056897964,51.43565624894516],[-3.0393387522614588,51.43655965463052],[-3.0393387518230885,51.436559654355904],[-3.039338736445148,51.43655966394539],[-3.039338442078913,51.43655984120676],[-3.0393384473393263,51.4365598445021],[-3.037863989814463,51.43747926943261],[-3.0378639884988505,51.43747926888305],[-3.037863938846032,51.43747930093998],[-3.0378636883951904,51.437479457108495],[-3.037863693217741,51.43747945985499],[-3.0364150313500495,51.43841483731598],[-3.0364150247740156,51.43841483347094],[-3.034992395043782,51.43936602003794],[-3.034992392851941,51.439366018664785],[-3.034992287376781,51.43936609154912],[-3.034992102363455,51.43936621539332],[-3.0349921058704004,51.43936621759035],[-3.0335964849397348,51.44033255882307],[-3.0335964818711525,51.440332556900636],[-3.0335963284780707,51.4403326670518],[-3.0335961953099573,51.44033275911465],[-3.033596197940172,51.44033276076246],[-3.0322277175617933,51.44131415924787],[-3.0322277153699315,51.44131415787467],[-3.0322276116333775,51.44131423487232],[-3.032227434059168,51.44131436228377],[-3.032227438005594,51.441314364206924],[-3.03088651043798,51.44231052606743],[-3.0308865051764218,51.442310523320316],[-3.0308862682289828,51.44231070581712],[-3.030886235260582,51.442310730203815],[-3.0308862361373223,51.4423107307531],[-3.029573234659122,51.44332138100627],[-3.029573233343446,51.443321380456624],[-3.0295731898185108,51.44332141498358],[-3.029573002098388,51.443321559663715],[-3.0295730064832394,51.443321561861595],[-3.028288370897634,51.44434636523035],[-3.028288368266814,51.444346363856724],[-3.0282882605407293,51.44434645319108],[-3.0282881084155395,51.44434657430821],[-3.028288111923687,51.444346575956835],[-3.0270322733986723,51.4453851889261],[-3.027032271644581,51.44538518810176],[-3.027032211839418,51.445385239346656],[-3.027032013087563,51.445385403763154],[-3.0270320179114485,51.4453854059615],[-3.0258053220272974,51.446437541722936],[-3.0258053189574627,51.44643754034889],[-3.0258051949351166,51.44643765078842],[-3.025805069602292,51.446437758209576],[-3.025805072672116,51.44643775958361],[-3.024607891964175,51.44750310199446],[-3.0246078867012143,51.44750309979565],[-3.0246076931684667,51.4475032784759],[-3.024607645228385,51.447503321226236],[-3.02460764654412,51.44750332177595],[-3.0234401064949226,51.44858176733241],[-3.023440112196346,51.44858176980594],[-3.022303021974518,51.449672577283735],[-3.0223030167114104,51.449672575084826],[-3.0223028372082967,51.44967275377327],[-3.0223027866165464,51.44967280255496],[-3.0223027883713187,51.44967280310507],[-3.0211963129045363,51.45077580483063],[-3.0211963111503546,51.450775804006206],[-3.021196257467294,51.450775859916476],[-3.0211960867551553,51.450776029833285],[-3.0211960915799323,51.45077603175757],[-3.0201205406380924,51.45189092082567],[-3.020120533180996,51.45189091807613],[-3.019075806499497,51.45301781867827],[-3.0190758130792856,51.45301782115279],[-3.0180630630349374,51.4541554958575],[-3.0180630590867596,51.45415549448248],[-3.0180629494714983,51.454155623030275],[-3.0180628543947945,51.45415572964723],[-3.018062857465539,51.454155730747175],[-3.017082017535748,51.45530423544836],[-3.017082011393517,51.455304233522725],[-3.0170818387983993,51.45530444430218],[-3.0170818154653527,51.455304471710924],[-3.0170818163428184,51.45530447198602],[-3.0161331598763677,51.45646348899236],[-3.0161331581214084,51.45646348844216],[-3.016133115845517,51.45646354244038],[-3.016132964817053,51.45646372690544],[-3.016132970081915,51.456463728556024],[-3.0152167886124377,51.45763290451675],[-3.0152167846633975,51.457632903415934],[-3.0152166868828325,51.45763303361768],[-3.0152165996838987,51.457633145176885],[-3.0152166031938727,51.45763314627732],[-3.014333152279017,51.458812158512046],[-3.0143331465748595,51.45881215686098],[-3.0143330069227487,51.458812351757516],[-3.0143329945887145,51.45881236847827],[-3.014332995466232,51.45881236875338],[-3.0134823972900895,51.46000107136012],[-3.0134824047494173,51.46000107356148],[-3.0126652935886855,51.4611985826867],[-3.0126652856900926,51.46119858048488],[-3.0118815513288473,51.4624050601992],[-3.0118815486961408,51.462405059373815],[-3.0118814962354445,51.462405144082176],[-3.011881390451146,51.46240530718922],[-3.011881395278098,51.462405308565295],[-3.011131601895308,51.46361989273845],[-3.011131598384296,51.463619891912224],[-3.011131528711649,51.463620010616744],[-3.0111314471490163,51.46362014302483],[-3.0111314510984895,51.4636201441258],[-3.0104156490836242,51.464842744304235],[-3.0104156482060165,51.46484274402909],[-3.0104156340914434,51.46484276925094],[-3.0104155207552883,51.46484296307073],[-3.0104155264607244,51.4648429644477],[-3.0097339563004426,51.46607317935943],[-3.0097339505948675,51.46607317798243],[-3.009733848667316,51.46607337318403],[-3.0097338164659484,51.46607343102976],[-3.0097338182212,51.466073431580064],[-3.009086707331591,51.467310851138556],[-3.0090867055763066,51.46731085058825],[-3.009086678651412,51.46731090514734],[-3.0090865736298396,51.46731110610561],[-3.0090865793355426,51.467311107482615],[-3.0084741098163734,51.46855538681505],[-3.008474106743521,51.46855538626346],[-3.0084740594955983,51.46855548853036],[-3.0084739831295573,51.468555643708285],[-3.008473987519252,51.46855564453546],[-3.0078963468850355,51.469806409123535],[-3.0078963411783644,51.46980640802074],[-3.0078962594524308,51.4698065972059],[-3.007896228098944,51.469806665200956],[-3.0078962302934986,51.469806665751705],[-3.007353581461888,51.47106356927846],[-3.0073535739989667,51.47106356789962],[-3.0068459089359627,51.472326675571914],[-3.0068459168382873,51.47232667695122],[-3.0063737943213984,51.473594600456416],[-3.00637379168746,51.4735945999052],[-3.006373762038436,51.473594686553724],[-3.0063736970276884,51.473594860942285],[-3.006373702296273,51.473594861770415],[-3.0059370584534792,51.474867737519965],[-3.00593705055004,51.474867736414886],[-3.0055359412421305,51.476145437856474],[-3.0055359359732674,51.4761454370283],[-3.005535884113406,51.47614561910982],[-3.005535858427053,51.476145700824716],[-3.005535861061834,51.47614570110164],[-3.0051705641827775,51.47742734920199],[-3.00517056330496,51.4774273489268],[-3.0051705553169947,51.47742738046296],[-3.0051704990227353,51.47742757762619],[-3.0051705047310038,51.477427578454815],[-3.004841064469899,51.47871301120441],[-3.004841063592064,51.47871301092923],[-3.004841056484314,51.47871304164336],[-3.0048409965771783,51.478713275832874],[-3.004841003164145,51.478713276662404],[-3.0045475307537903,51.48000206766459],[-3.0045475246052207,51.4800020671098],[-3.004547481877461,51.48000228184135],[-3.0045474703252992,51.48000233230038],[-3.0045474720817302,51.48000233257645],[-3.0042900500609426,51.481294124771125],[-3.0042900483044623,51.48129412449506],[-3.004290039828198,51.48129417440856],[-3.004289996654443,51.481294390785315],[-3.0042900028031876,51.48129439134013],[-3.0040687125209327,51.48258879087798],[-3.0040687081285453,51.48258879059923],[-3.0040686857556325,51.48258894720019],[-3.0040686670192076,51.482589056900025],[-3.0040686700936643,51.48258905717744],[-3.0038835774573496,51.48388570664252],[-3.003883569990297,51.48388570608634],[-3.0037346840297303,51.48518467285818],[-3.003734693254334,51.48518467341614],[-3.003622179368038,51.48648452925868],[-3.0036221701424584,51.48648452897499],[-3.003545988185696,51.48778568018257],[-3.0035459837928133,51.487785679903794],[-3.0035459794658586,51.48778582253375],[-3.0035459721092566,51.48778594760563],[-3.0035459756234197,51.4877859478835],[-3.0035061824751157,51.489087485287605],[-3.0035061802789706,51.48908748501106],[-3.003506180088958,51.48908755769951],[-3.003506174804134,51.489087730501126],[-3.003506179636514,51.48908773078034],[-3.003502776584867,51.490389510136474],[-3.00350277131153,51.4903895104054],[-3.0035027760915183,51.49038969885213],[-3.003502775903644,51.49038977071769],[-3.003502778100569,51.49038977071992],[-3.003535768908331,51.49169137400431],[-3.0035357653931514,51.49169137400074],[-3.003535772097318,51.49169149881255],[-3.0035357756977428,51.49169163431877],[-3.0035357796523203,51.4916916343228],[-3.0036051712617025,51.49299293999603],[-3.003605179611209,51.49299293973023],[-3.0037109265508866,51.49429303043156],[-3.003710916442737,51.49429303096987],[-3.003853031589563,51.4955920308687],[-3.003853028512804,51.495592031139864],[-3.0038530431775685,51.49559213703321],[-3.0038530599143676,51.49559229093053],[-3.0038530643094337,51.4955922906607],[-3.004031450745502,51.49688928529471],[-3.004031447229209,51.49688928556545],[-3.00403146799851,51.49688941011709],[-3.0040314865455815,51.49688954426685],[-3.004031490501324,51.496889543996566],[-3.0042461681112513,51.49818465637838],[-3.004246175583496,51.49818465583735],[-3.0044969964154626,51.499476973033374],[-3.004496993777918,51.499476973305],[-3.0044970159320905,51.49947707317124],[-3.004497046724203,51.49947723147131],[-3.004497051119638,51.49947723120145],[-3.004783984706357,51.50076661799472],[-3.004783976354019,51.50076661880921],[-3.005107067571535,51.50205319704142],[-3.0051070768038057,51.502053195953515],[-3.005465971464113,51.503335544665326],[-3.005465967067608,51.503335545209495],[-3.005466015886256,51.50333570325298],[-3.005466043323461,51.50333580120417],[-3.0054660459612257,51.50333580093252],[-3.0058607673236866,51.50461404380062],[-3.0058607585304404,51.50461404488904],[-3.0062912751136364,51.50588804656769],[-3.006291274673403,51.50588804684155],[-3.0062912781651514,51.505888056445386],[-3.0062913610509163,51.50588830147415],[-3.0062913680855616,51.505888300658256],[-3.006757379567831,51.507157163508346],[-3.0067573751702756,51.50715716432688],[-3.006757431511622,51.50715730591939],[-3.0067574725456203,51.5071574173242],[-3.006757475623836,51.50715741677866],[-3.007258928876922,51.508421008663994],[-3.007258926677741,51.50842100921042],[-3.0072589550815607,51.50842107534374],[-3.0072590288950827,51.50842126166345],[-3.007259034171867,51.50842126084577],[-3.007795779085525,51.50967919632883],[-3.007795774687741,51.509679197147406],[-3.007795844194858,51.50967934972412],[-3.0077958861459906,51.50967944796322],[-3.0077958892243677,51.50967944741764],[-3.0083678791758683,51.51093159348532],[-3.085721607630666,51.49668609583448],[-3.085534903930499,51.496278893308926],[-3.0994120682283004,51.49388051416615],[-3.0993016140812153,51.493622861846006],[-3.099198410762993,51.49336411918249],[-3.103398943518404,51.49273541999051],[-3.103319893861589,51.49252141637747],[-3.1061314668265543,51.49213277352662],[-3.106068838473009,51.491948633187],[-3.1074798215268378,51.49176963219103],[-3.1074271324862717,51.491600228534196],[-3.1073791934442374,51.49143029499218],[-3.110219405923146,51.491133941482786],[-3.11025863174745,51.491272956703064],[-3.1102586308685907,51.49127295697727],[-3.110258636575666,51.49127297508145],[-3.1102586392093503,51.49127298468211],[-3.1102586396488223,51.491272984407864],[-3.1103017544779674,51.491411578987794],[-3.1131236436537173,51.49105345787023],[-3.113160192442249,51.49116087102929],[-3.113160193321094,51.491160870755074],[-3.113199732011858,51.491267847745014],[-3.113199731572405,51.49126784801927],[-3.113199735085616,51.49126785707134],[-3.1131997394769715,51.49126786914075],[-3.1131997399163622,51.4912678691408],[-3.113242263698251,51.49137439898637],[-3.1132422632588543,51.49137439898634],[-3.113242263698076,51.49137439980927],[-3.113242272042189,51.491374420382186],[-3.113242272481582,51.49137442038222],[-3.113287768199214,51.49148047071215],[-3.1132877677598176,51.49148047071211],[-3.1132877734692883,51.49148048333021],[-3.11328777698265,51.4914804918337],[-3.1132877774220438,51.49148049183373],[-3.1133362310408197,51.49158603027644],[-3.1119556443943748,51.49184118398437],[-3.111900261014936,51.49172054402985],[-3.1105127401346624,51.4919606003754],[-3.110454245439207,51.4918242296087],[-3.1103995656818846,51.49168722559484],[-3.108999464567051,51.49189688930239],[-3.108942982317381,51.49174403253319],[-3.1075372241849064,51.4919383929414],[-3.107599362021003,51.492106570029314],[-3.1089994755427184,51.4918969197506],[-3.1089994720305487,51.49189690987551],[-3.1090602109023635,51.49204910743664],[-3.1090602104629568,51.49204910743658],[-3.109060214853795,51.492049117860375],[-3.109060223196234,51.49204913815929],[-3.1090602236357197,51.49204913788505],[-3.1091252174135775,51.4922006710197],[-3.110512751990988,51.4919606278063],[-3.110512746282304,51.49196061491376],[-3.110575054630414,51.492096348861644],[-3.111955655373469,51.49184120839779],[-3.112014391827769,51.491961202669756],[-3.112014391388378,51.491961202669714],[-3.1120143944627894,51.49196120843024],[-3.1120144032464587,51.491961226534606],[-3.11201440412526,51.49196122653469],[-3.1120764985090177,51.492080586640014],[-3.112076499827294,51.492080586365844],[-3.112141909122689,51.49219922808627],[-3.1121419086832205,51.49219922836051],[-3.112141917028424,51.492199242899005],[-3.11214192229905,51.492199252225554],[-3.1121419227385134,51.4921992519513],[-3.112210639501384,51.49231716293728],[-3.1122106390619875,51.492317162937255],[-3.112210643893544,51.4923171708923],[-3.1122106531174074,51.49231718625373],[-3.112210653556812,51.49231718625377],[-3.1122826571658453,51.49243433056485],[-3.110942914251402,51.492763615600246],[-3.1108618977396683,51.49263180181812],[-3.1108618973004867,51.492631800995184],[-3.1107845786478037,51.49249912350576],[-3.109427231679689,51.49279900320246],[-3.109345461160283,51.49265066988601],[-3.109267850409344,51.49250146775067],[-3.1078945557916953,51.492771576017255],[-3.1079799228672367,51.4929356993],[-3.1066143679823885,51.49322071307639],[-3.106712502753809,51.49339875136104],[-3.1094272483683434,51.4927990331027],[-3.1094272430982075,51.49279902377601],[-3.109513137409393,51.49294642380115],[-3.10951313696998,51.49294642380111],[-3.1095131431187317,51.49294643395078],[-3.109513154098398,51.49294645287848],[-3.1095131549772144,51.492946452878584],[-3.1096031696010136,51.493092914665674],[-3.110942930063076,51.49276364220862],[-3.1110276031738087,51.49289452753764],[-3.111027602734328,51.49289452781189],[-3.111027611079876,51.49289454015609],[-3.111027619864479,51.49289455387179],[-3.1110276203038807,51.49289455387184],[-3.111115957946114,51.493024522809776],[-3.1124364802057536,51.49266624617111],[-3.1125182074347215,51.49278087755416],[-3.1125182069952526,51.49278087782842],[-3.1125182170985672,51.492780891269845],[-3.112518223687561,51.49278090059651],[-3.11251822412703,51.492780900322245],[-3.1126031438443698,51.49289462373392],[-3.1126031434049026,51.492894624008166],[-3.1126031587798098,51.492894643484576],[-3.1126031609761724,51.49289464650204],[-3.1126912477226867,51.49300742709758],[-3.1126912472832124,51.49300742737183],[-3.112691257826229,51.493007439990386],[-3.112691265293982,51.493007449865715],[-3.112691265733456,51.49300744959145],[-3.112782510741484,51.49311927584258],[-3.1140597669658536,51.49270435224554],[-3.1141423159865456,51.49280129510805],[-3.1141423151076757,51.49280129538228],[-3.1142275793233707,51.492897343359246],[-3.1142275793233103,51.49289734363355],[-3.1142275845951737,51.492897349119865],[-3.1142275964566575,51.49289736256128],[-3.1142275968960664,51.4928973625613],[-3.1143155161326046,51.49299244761687],[-3.114315515693143,51.49299244789114],[-3.114315528433442,51.4929924616069],[-3.114315533705383,51.49299246681891],[-3.1144061163208048,51.49308659854815],[-3.115633876542257,51.4926170513709],[-3.115713748450191,51.4926968609599],[-3.1157137515255724,51.49269686397734],[-3.1157137642663435,51.49269687687007],[-3.1157137647057835,51.4926968765958],[-3.115795856044871,51.49277580358002],[-3.1157958551660108,51.492775803854265],[-3.1158801580347846,51.49285384027402],[-3.115880157595375,51.492853840274],[-3.115880166382326,51.492853848229124],[-3.1158801747299454,51.49285385563562],[-3.1159666465182667,51.49293096143637],[-3.1159666473970873,51.492930961436414],[-3.116055243296585,51.49300709793493],[-3.1160552472508196,51.493007100952426],[-3.116055261310087,51.493007113296585],[-3.1160552617495387,51.49300711302232],[-3.116145974296314,51.4930822730817],[-3.1161459734174506,51.493082273355945],[-3.116238810964011,51.493156463006315],[-3.1173657291669477,51.49259699616331],[-3.1172883793241954,51.49253518440412],[-3.117212763691344,51.49247253415488],[-3.1171389099449476,51.49240906873551],[-3.1170668628959,51.49234482627878],[-3.1182535241904508,51.49183578514585],[-3.118311161978717,51.491887177439004],[-3.1183111646148656,51.49188717990778],[-3.1183111734020423,51.49188718786273],[-3.118311173841476,51.49188718758845],[-3.1183702394358965,51.49193794409019],[-3.1183702389964707,51.491937944364466],[-3.118430727566413,51.49198805986084],[-3.1184307271269858,51.49198806013512],[-3.118492607040256,51.492037508564565],[-3.1173657137892334,51.49259698381924],[-3.117444779830608,51.49265794309504],[-3.1174447793911932,51.492657943095026],[-3.117444791254102,51.49265795214736],[-3.1174447956477747,51.49265795543912],[-3.1174447956478035,51.49265795516484],[-3.11752553790783,51.49271803177931],[-3.117525537468389,51.49271803205358],[-3.117607963857595,51.49277723203821],[-3.117607970887547,51.49277723697586],[-3.117607980114318,51.49277724383369],[-3.117607980553769,51.49277724355941],[-3.1176920497730727,51.49283553646187],[-3.1198152769407304,51.491621150555254],[-3.1198666788066394,51.491655563518655],[-3.1198666783672384,51.49165556351865],[-3.119866686715422,51.491655569004806],[-3.119866688912319,51.49165557037634],[-3.1198666889123405,51.49165557010205],[-3.119919055372082,51.491689424600615],[-3.119919055811481,51.49168942460062],[-3.1199723499574206,51.49172269621975],[-3.1189631077216053,51.492363744718126],[-3.1190354110359495,51.49240733589196],[-3.1190354105965215,51.492407336166245],[-3.119035422020482,51.492407342749736],[-3.1190354250961483,51.492407344669914],[-3.1190354255355768,51.49240734439563],[-3.1191089220418386,51.492450132698735],[-3.119108922041818,51.49245013297303],[-3.1191089255568945,51.492450134893225],[-3.1191089365414975,51.49245014120241],[-3.1191836332693157,51.492492130747216],[-3.1191836337087384,51.49249213047294],[-3.119259477491818,51.4925332908086],[-3.119259477052389,51.492533291082886],[-3.119336475798596,51.49257362741908],[-3.1193364753591935,51.49257362741906],[-3.1193364911771675,51.49257363564845],[-3.1193364916165995,51.492573635374164],[-3.1194145908406723,51.492613118631546],[-3.1194145904012687,51.492613118631525],[-3.1194145943557796,51.49261312055172],[-3.11941460621929,51.492613126586605],[-3.1194146062193147,51.49261312631231],[-3.1194937980106796,51.49265175292259],[-3.119493797571251,51.492651753196874],[-3.11957407270101,51.492689518220274],[-3.1195740766555344,51.49268952014047],[-3.119574088958514,51.492689525901056],[-3.1195740893979225,51.49268952590106],[-3.119655392061327,51.492726403275626],[-3.1188191962237304,51.493458114275654],[-3.1189221405698264,51.49350311538499],[-3.1189221410092793,51.49350311511071],[-3.1190262857026214,51.49354697043439],[-3.1190262852631823,51.49354697070867],[-3.1190263067938298,51.49354697921258],[-3.119131662375724,51.49358969313648],[-3.1191316619363074,51.493589693136464],[-3.119131674239564,51.49358969779991],[-3.119131683027565,51.49358970164036],[-3.119131683467002,51.49358970136608],[-3.1192382174171565,51.493631260993986],[-3.1192382169777213,51.49363126126827],[-3.1192382284022213,51.49363126538308],[-3.119238238508462,51.493631269497854],[-3.119238238947902,51.49363126922356],[-3.1193459187455965,51.49367166193368],[-3.1193459183061574,51.49367166220797],[-3.1193459358823374,51.49367166851733],[-3.11934593983699,51.49367166988893],[-3.119345940276404,51.493671669888954],[-3.1194547334005143,51.49371088305953],[-3.119454732961105,51.493710883059514],[-3.1194547347187287,51.493710883608145],[-3.1194547549313585,51.493710891014764],[-3.119454754931383,51.49371089074046],[-3.119564627542091,51.49374891229838],[-3.1195646271026503,51.493748912572656],[-3.119564637648412,51.49374891613883],[-3.1195646499518035,51.49374892025364],[-3.119564649951825,51.49374891997933],[-3.1196755690876548,51.4937857389488],[-3.1196755686482143,51.49378573922309],[-3.1196755857851457,51.49378574443521],[-3.1196755910580287,51.49378574635542],[-3.119675591058046,51.49378574608112],[-3.1197875233177492,51.49382135121214],[-3.1197875277118374,51.49382135258374],[-3.1197875452881805,51.493821358344434],[-3.119787545727616,51.49382135807016],[-3.1199004563913113,51.493855738112764],[-3.119900456391292,51.49385573838706],[-3.1199004691342003,51.49385574195325],[-3.1199004788012084,51.493855744970766],[-3.12001433402743,51.493888889498045],[-3.120014334027411,51.49388888977234],[-3.120014356437378,51.493888896081735],[-3.120014356876813,51.493888895807444],[-3.120129143915413,51.493920801524816],[-3.1207033379123437,51.49309654693362],[-3.1206114982673543,51.49307101990689],[-3.120520400504735,51.493044500419714],[-3.120430047704979,51.4930169890225],[-3.120340500510174,51.49298850464474],[-3.121005386766693,51.492191259055964],[-3.121072544204528,51.49221262128215],[-3.12107254420452,51.49221262155644],[-3.1210725551894596,51.492212624848186],[-3.1210725573864364,51.492212625671115],[-3.121072557825857,51.492212625396824],[-3.12114030239919,51.49223325275383],[-3.1211403023991826,51.49223325302812],[-3.121140309868943,51.49223325522261],[-3.1211403155811266,51.492233256868474],[-3.1211403160205267,51.49223325686848],[-3.12120862707518,51.49225314277187],[-3.1212086266357684,51.49225314304616],[-3.1212086305903552,51.4922531441434],[-3.1212086406965316,51.492253146886526],[-3.1212774966993675,51.49227228530049],[-3.1207033190179208,51.49309654144733],[-3.1207958473724235,51.493121060924636],[-3.1207958469329777,51.493121061473225],[-3.1208890653102173,51.49314457367378],[-3.1208890653102266,51.49314457339948],[-3.1209828897782916,51.493167057473684],[-3.1209828893388623,51.493167057747975],[-3.1209829007634746,51.49316706021682],[-3.120982908233399,51.49316706213703],[-3.1209829086728225,51.49316706186275],[-3.121077365590741,51.493188524666984],[-3.1210773660301636,51.493188524392686],[-3.121172390360008,51.49320895083815],[-3.121172389920581,51.49320895111245],[-3.1211724083757617,51.49320895495288],[-3.1211724092545876,51.493208954952905],[-3.1212679895660327,51.49322834256936],[-3.1212679891266117,51.49322834284365],[-3.1212679922024753,51.493228343392296],[-3.1212680089000404,51.493228346684084],[-3.121268009339467,51.49322834640979],[-3.1213641170650397,51.49324668998389],[-3.121364117065029,51.49324669025818],[-3.1213641240955967,51.49324669135547],[-3.121364135959661,51.493246693824304],[-3.121364136399086,51.49324669355001],[-3.121460742971178,51.49326398704555],[-3.1214607429711703,51.49326398731985],[-3.121460762305238,51.49326399061166],[-3.1215578382772224,51.49328022908972],[-3.1215578378378086,51.49328022908972],[-3.1215578448683883,51.49328023018699],[-3.1215578571718923,51.493280232381515],[-3.1215578576113154,51.493280232107224],[-3.1216553722181684,51.493295410354676],[-3.121655372218161,51.493295410628974],[-3.121655374415218,51.4932954109033],[-3.121655391552268,51.49329541364644],[-3.1216553919916903,51.49329541337217],[-3.1217533162258846,51.49330952699888],[-3.121753316225878,51.49330952727316],[-3.121753334681185,51.49330952974204],[-3.1217533359994256,51.49330952974204],[-3.1218516395350644,51.49332257408365],[-3.1218516395350577,51.493322574357954],[-3.121851646126244,51.49332257518089],[-3.121851659748031,51.493322576826806],[-3.121851659748036,51.493322576552515],[-3.121950313137895,51.493334548041965],[-3.1219503131378903,51.49333454831626],[-3.121950316653194,51.49333454859059],[-3.121950332472051,51.493334550510795],[-3.121950332911472,51.493334550236504],[-3.1220493067082202,51.49334544503253],[-3.1220493062687993,51.49334544530682],[-3.122148609253928,51.493355264231575],[-3.1221486092539363,51.49335526368299],[-3.1222481320066957,51.49336399576311],[-3.1222481399161426,51.49336399631175],[-3.122248151780308,51.49336399740901],[-3.122347903521418,51.49337164346685],[-3.122184886883168,51.49426467901235],[-3.1223098511418943,51.49427287825511],[-3.1223098511418907,51.4942728785294],[-3.1223098687187916,51.494272879626685],[-3.1223098770678193,51.49427288017533],[-3.122309877067822,51.49427287990103],[-3.1224350268247516,51.49427971521048],[-3.122435026385326,51.49427971548477],[-3.1224350373708942,51.494279716033425],[-3.122435051432422,51.49427971658208],[-3.122435051432425,51.494279716307794],[-3.1225603989802693,51.49428518850629],[-3.122560398980275,51.4942851879577],[-3.1226858555444523,51.494289292655665],[-3.122685855544451,51.494289292929956],[-3.122685879712715,51.49428929347863],[-3.1226858805915616,51.49428929347862],[-3.12281143253873,51.49429203067567],[-3.1228114448425752,51.494292030949985],[-3.122811457585844,51.4942920312243],[-3.122811457585845,51.49429203095],[-3.122937067114364,51.494293399822894],[-3.122937079418211,51.494293399822915],[-3.1229370921614805,51.494293400097206],[-3.122937092161481,51.494293399822915],[-3.123062719711991,51.494293399822915],[-3.1230627197119913,51.494293400097206],[-3.123062745198531,51.49429339982291],[-3.123062745637954,51.49429339982291],[-3.1231883542876275,51.494292031224305],[-3.12318836747032,51.49429203094999],[-3.123188379334743,51.494292030949964],[-3.1233139312819125,51.49428929375292],[-3.1233139563290235,51.49428929320427],[-3.1233139563290213,51.49428929292997],[-3.1234394128932,51.494285188232],[-3.1234394128932026,51.494285188506296],[-3.123564760441053,51.49427971685639],[-3.123564760880477,51.49427971685639],[-3.12356478548815,51.49427971575908],[-3.123564785488146,51.49427971548478],[-3.1236899356845003,51.49427288017533],[-3.123689949746021,51.49427287935235],[-3.1236899607315847,51.4942728788037],[-3.123814925869152,51.49426467901236],[-3.123814925869148,51.49426467873806],[-3.123939617173582,51.49425512104925],[-3.1239396417812095,51.49425511885468],[-3.1240640473771624,51.49424420381794],[-3.1240640473771695,51.49424420409224],[-3.1241881782393097,51.494231930611235],[-3.1241881782392937,51.49423193006263],[-3.1243118976967943,51.494218311580234],[-3.1243119130765296,51.49421830993429],[-3.1243119223043685,51.494218308837],[-3.1244352413321734,51.49420334398287],[-3.12443524133218,51.49420334425716],[-3.1244352615455275,51.49420334178825],[-3.1244352668185686,51.4942033409653],[-3.124558148494905,51.49418703522711],[-3.124558153328521,51.494187034404156],[-3.124558173102429,51.494187031935226],[-3.1245581731024226,51.494187031660935],[-3.1246805809450797,51.49416938942931],[-3.1246805972035996,51.49416938696041],[-3.1246806051131553,51.49416938586312],[-3.124802500882473,51.49415041262604],[-3.124802507913176,51.49415041152874],[-3.124802525050521,51.49415040878553],[-3.124923871825316,51.49413011030541],[-3.124923889841463,51.49413010701356],[-3.1249238959933185,51.49413010591628],[-3.125044680581216,51.49410848411512],[-3.125044680581203,51.49410848384081],[-3.1251648172861417,51.49408555408254],[-3.125164817725573,51.49408555435683],[-3.125164837938753,51.49408555024202],[-3.1251648423329246,51.49408554941906],[-3.1252843192812962,51.49406131417449],[-3.125284319720731,51.49406131444878],[-3.125284341252119,51.494061309785316],[-3.1252843434492092,51.49406130951098],[-3.1254031492070085,51.494035770976744],[-3.1249224647379217,51.49318852082655],[-3.125016903200688,51.49316706213706],[-3.1250169036401143,51.493167062411345],[-3.1250169225346345,51.49316705774798],[-3.125110746563282,51.49314457367379],[-3.125110750517953,51.49314457285084],[-3.1251107650183854,51.49314456928472],[-3.125203946485453,51.493121066136624],[-3.1252039579100117,51.49312106311915],[-3.125203964940522,51.49312106147324],[-3.1252964739611544,51.49309654693365],[-3.1252964792340268,51.49309654556207],[-3.1252964928556057,51.49309654199595],[-3.1253883034998444,51.49307102292438],[-3.1259854558755276,51.49388889608176],[-3.126099333072272,51.493855744970794],[-3.1260993387846083,51.493855743324865],[-3.1260993563610118,51.49385573811278],[-3.1260993559215926,51.49385573811278],[-3.1262122652670707,51.49382135861881],[-3.126212265706485,51.49382135861879],[-3.126212283722244,51.49382135285808],[-3.1262122885557533,51.49382135148646],[-3.126324242346455,51.49378573949745],[-3.126324242346429,51.49378573922314],[-3.1264351619216804,51.49374892025366],[-3.1264351685127862,51.49374891805911],[-3.1264351847708345,51.493748912572705],[-3.1264351843314206,51.49374891257271],[-3.1265450573815015,51.49371089046619],[-3.1265450578209375,51.49371089074047],[-3.1266538940067243,51.49367166193369],[-3.126653894006696,51.4936716616594],[-3.1267615738044254,51.49363126922359],[-3.1267615878653094,51.4936312637372],[-3.1267615944563554,51.49363126126833],[-3.126868128845918,51.49358970164039],[-3.1268681446643773,51.493589695331046],[-3.126868150376612,51.49358969313651],[-3.1269735046402736,51.493546979486936],[-3.12697350507969,51.49354697948692],[-3.126973516943494,51.49354697454918],[-3.126973526610303,51.49354697070871],[-3.126973526170861,51.493546970434416],[-3.1270776770158446,51.49350311291617],[-3.1270776717430775,51.49350311538502],[-3.1278933040324315,51.49424382103262],[-3.12801681233699,51.49418982964678],[-3.128016812776445,51.49418982992104],[-3.1280168307918497,51.49418982169139],[-3.128016837822271,51.494189818673846],[-3.128138794088192,51.494134500728634],[-3.128138794527641,51.49413450100292],[-3.1282592334623613,51.49407784004386],[-3.1282592330228707,51.49407783949529],[-3.128378020166217,51.49401989889564],[-3.1283780206056706,51.49401989916993],[-3.128495195060072,51.49396066028066],[-3.1284952056054904,51.49396065479425],[-3.128495217469103,51.49396064875917],[-3.1286107172764,51.493900142034924],[-3.1286107168369495,51.49390014176066],[-3.1287244839949158,51.493838398753255],[-3.128724484434371,51.49383839902753],[-3.1288365523341723,51.49377540081389],[-3.128836551894715,51.49377540053961],[-3.1289467957486643,51.49371121707641],[-3.1289467961881092,51.493711217350686],[-3.1290552520248105,51.49364582834326],[-3.1290552599336667,51.49364582340552],[-3.1290552726757315,51.49364581572456],[-3.129161861405694,51.493579268635244],[-3.1291618618451436,51.49357926890951],[-3.1292665957711057,51.49351155633667],[-3.129266596210553,51.49351155661094],[-3.1292666133461813,51.49351154508958],[-3.1292666155430675,51.49351154371798],[-3.129369419092669,51.49344271476969],[-3.1293694252439086,51.49344271065491],[-3.129369440182596,51.49344270050514],[-3.1293694397431446,51.49344270023087],[-3.1294703023726838,51.49337276231876],[-3.1294703028121327,51.49337276259302],[-3.129569233749774,51.493301707766946],[-3.1295692333103267,51.49330170749268],[-3.1296661218374293,51.493229615584006],[-3.1296661235948795,51.49322961421243],[-3.129666142048219,51.493229600496555],[-3.129666141608772,51.493229600222286],[-3.1297610013488217,51.493156462457776],[-3.1308879475797986,51.49371591841969],[-3.130996234366492,51.493629380756026],[-3.1309962348059597,51.4936293810303],[-3.1311020874903326,51.49354167520558],[-3.1311020989134013,51.49354166533012],[-3.131102107261081,51.49354165847214],[-3.1312054696121696,51.49345283085289],[-3.1312054775203566,51.493452823720624],[-3.1312054907007894,51.49345281247356],[-3.131205490261332,51.493452812199294],[-3.1313063513026616,51.49336287376468],[-3.1313063583320915,51.49336286718108],[-3.1313063719517387,51.493362855111066],[-3.131306371512274,51.4933628548368],[-3.1314047035726778,51.49327182973328],[-3.1314047040121324,51.49327183000755],[-3.1314047171921735,51.493271817114675],[-3.1314047224642736,51.49327181245127],[-3.131500494358918,51.493179729488524],[-3.131500496116212,51.49317972756832],[-3.131500513689598,51.49317971083498],[-3.1315005132501317,51.493179710560725],[-3.1315937140045818,51.49308658044333],[-3.130365951586848,51.49261703600936],[-3.1304435794679284,51.49253636850831],[-3.1304435803467863,51.49253636878255],[-3.1305189571792935,51.49245485078034],[-3.1305189668444586,51.492454840082154],[-3.1305189712376995,51.49245483514455],[-3.1305920566111256,51.49237250834111],[-3.130592055732277,51.49237250806687],[-3.1306628276894433,51.49228939907468],[-3.13066282725,51.49228939880042],[-3.130731251533199,51.49220554739885],[-3.1307312620765964,51.492205533957616],[-3.1307312642731393,51.49220553121452],[-3.130797333423695,51.492120947008495],[-3.130797344845489,51.49212093137284],[-3.130797346602767,51.49212092945265],[-3.130861040861948,51.49203563823131],[-3.1308610500872076,51.492035625613056],[-3.1308610527229557,51.492035621772736],[-3.1309223523325516,51.491949649325115],[-3.130922356725416,51.4919496427417],[-3.130922364632723,51.491949631769316],[-3.130981250274758,51.49186300580439],[-3.132311543730971,51.492206870451604],[-3.1322428463646843,51.49230793489321],[-3.1321713104311417,51.492408268515014],[-3.1321713042811203,51.492408276744385],[-3.132096981599967,51.492507804380004],[-3.133396651776342,51.49289464732495],[-3.133481589504118,51.49278090032221],[-3.133481592139686,51.49278089648181],[-3.133481605757203,51.49278087837703],[-3.133481605317725,51.492780878102785],[-3.1335633325467125,51.49266624671974],[-3.1348838548063522,51.49302452335841],[-3.134972210018151,51.49289452836053],[-3.134972209139261,51.49289452808632],[-3.1350568822497618,51.492763641934395],[-3.135056883128654,51.4927636422086],[-3.1351378996404784,51.492631828426504],[-3.135137907546159,51.492631814710855],[-3.1351379158913284,51.49263180126947],[-3.135215233665418,51.49249912460303],[-3.1338579036299072,51.49219922918348],[-3.133923313364639,51.49208058718872],[-3.133923318195901,51.49208057813649],[-3.133923326540861,51.49208056277511],[-3.1339854077485425,51.49196122763199],[-3.1339854086274057,51.4919612279062],[-3.134044168358293,51.491841185355895],[-3.134099540758506,51.4917205689919],[-3.134099547785013,51.49172055308204],[-3.134099551737405,51.49172054402989],[-3.134151542980507,51.491599342884534],[-3.1341515434197693,51.491599342335896],[-3.1341515530808866,51.49159931929409],[-3.1342001473825376,51.49147757012907],[-3.1342001482613355,51.49147757012899],[-3.134245341255938,51.49135528474366],[-3.134245345646712,51.49135527185131],[-3.1342453495986344,51.49135526115339],[-3.1342871079396164,51.4912325273297],[-3.1356980578350555,51.49141157926218],[-3.1357411731039013,51.49127298577938],[-3.135741178371507,51.491272967400946],[-3.1357411814444354,51.491272957251645],[-3.135780407708055,51.49113394175702],[-3.1357804120972266,51.491133924750166],[-3.1357804147309007,51.4911339151495],[-3.1358157480735684,51.49099449328225],[-3.1358157502678297,51.49099448368163],[-3.1358157550957535,51.49099446448035],[-3.135847184579423,51.490854679035415],[-3.1358471867729794,51.49085466696612],[-3.1358471902839375,51.490854652153736],[-3.1358747067284223,51.49071454537686],[-3.135874707607201,51.49071454537677],[-3.135898307976797,51.49057413345455],[-3.1358983079766403,51.49057413290594],[-3.1358983128019307,51.490574104652886],[-3.1358983119231567,51.490574104652985],[-3.135917979144606,51.490433483867676],[-3.1359179804627653,51.49043348386753],[-3.1359337193940267,51.490292614173285],[-3.1344966146486963,51.49023789412658],[-3.134507101521728,51.49011259310411],[-3.1345071024004945,51.49011259310403],[-3.134514087313831,51.489987173102804],[-3.1345140877481685,51.48998715307912],[-3.1345140881860996,51.48998714731886],[-3.1345175645933527,51.489861670056825],[-3.1345175637145917,51.48986167005692],[-3.134517532099787,51.48973619807396],[-3.1345175325391663,51.48973619807393],[-3.1345175320958476,51.48973618243907],[-3.1345175320932905,51.489736172290094],[-3.1345139924893917,51.489610721769694],[-3.13451399292877,51.48961072176966],[-3.134513992046628,51.48961070832922],[-3.134513991604141,51.48961069598592],[-3.134513991164763,51.48961069598595],[-3.134506944042587,51.48948527707672],[-3.13450694360321,51.48948527707677],[-3.134496391204284,51.48935995259175],[-3.133059342530923,51.48941495765974],[-3.133068574257639,51.489524637885715],[-3.133074736541886,51.48963436418012],[-3.1330778302433604,51.489744150258176],[-3.1330778544579987,51.489853981582485],[-3.1330778553367598,51.48985398158241],[-3.13307481002128,51.4899637621492],[-3.133068695155808,51.490073502107236],[-3.133059512031456,51.4901831789636],[-3.133047268954163,51.49029270027895],[-3.1316119178574917,51.490222295850394],[-3.131598792207131,51.490316079868094],[-3.131583051683248,51.49040967782691],[-3.131564693197446,51.49050310673242],[-3.1315437268304094,51.49059631638638],[-3.131543726391278,51.49059631775789],[-3.1315201595908215,51.49068927524282],[-3.1314939984888497,51.49078195861302],[-3.1314652443871434,51.4908743621064],[-3.131433917031324,51.49096642180863],[-3.13143391615305,51.49096642455166],[-3.1314000172848275,51.491058134974615],[-3.1313635525985006,51.491149479109296],[-3.1313245528233873,51.491240381519646],[-3.13128300608701,51.491330870730806],[-3.131238944438079,51.491420873775006],[-3.1311923590788187,51.49151041067369],[-3.131143297434631,51.491599391177054],[-3.1297860212758817,51.49129944859093],[-3.1297860203973005,51.49129944996246],[-3.129826916492083,51.49122528332687],[-3.129826915613253,51.49122528305263],[-3.1298657235177987,51.49115070041643],[-3.1299024476333557,51.49107568971237],[-3.1299024489510723,51.491075686695034],[-3.1299024546614342,51.491075675174244],[-3.1299370686420067,51.49100029099081],[-3.129969576450602,51.49092452592363],[-3.1299695777683154,51.49092452290629],[-3.129969582599855,51.49092451138556],[-3.129999960966633,51.490848418925545],[-3.129999962284339,51.49084841590821],[-3.1299999671156997,51.49084840329028],[-3.1300282134155717,51.49077199166814],[-3.1300282147331915,51.4907719881022],[-3.1300282186860064,51.49077197713011],[-3.130054324584209,51.49069526911447],[-3.130054325023345,51.49069526746866],[-3.13005432985446,51.490695253479245],[-3.130078286577377,51.490618274033025],[-3.130078287894903,51.49061826991851],[-3.1300782914081777,51.49061825812355],[-3.1301000928181,51.49054102836924],[-3.1301000950137983,51.490541020414526],[-3.130100096770282,51.49054101355699],[-3.1301197358514044,51.490463557908626],[-3.1301197362903608,51.49046355516563],[-3.1301197398034035,51.49046354199918],[-3.1301372099793223,51.49038588404773],[-3.130137211735451,51.49038587499583],[-3.1301372130527074,51.49038586923553],[-3.1301525103835286,51.49030803284597],[-3.13016563400029,51.490230010887466],[-3.130165633121522,51.49023001088752],[-3.130176569867096,51.49015188866784],[-3.130176571183264,51.49015187605013],[-3.130176571622259,51.490151873581425],[-3.1301853219460813,51.49007364424373],[-3.1301853219457794,51.49007364232366],[-3.1301853237010673,51.490073628060124],[-3.130191885421149,51.489995315468825],[-3.130191886297754,51.48999530175394],[-3.130191886297538,51.48999530038246],[-3.130196258110623,51.48991692785319],[-3.13019625898688,51.489916911943936],[-3.130198439148164,51.48983848880313],[-3.130198438269403,51.48983848880319],[-3.130198426359207,51.4897600685388],[-3.130198425917322,51.48976005262963],[-3.1301962215092334,51.489681645939264],[-3.130196221068689,51.489681638533284],[-3.1301962206279277,51.48968162975584],[-3.1301918241759723,51.48960325803446],[-3.1301918241757574,51.489603256662974],[-3.130191823294843,51.4896032429482],[-3.1301918228554655,51.48960324294823],[-3.130185236571678,51.48952493088214],[-3.1301852370110557,51.48952493088212],[-3.130176460907912,51.48944668642555],[-3.1301764591487253,51.4894466757281],[-3.13017645870866,51.489446671339394],[-3.1301654985180236,51.489368550448],[-3.1301654971989947,51.48936854468785],[-3.1301654958792775,51.48936853453896],[-3.130152350732398,51.48929053008049],[-3.1301523502930246,51.48929053008051],[-3.130137029436193,51.48921269554146],[-3.1301370285566725,51.489212690604184],[-3.130137026358217,51.489212680455346],[-3.13011953200066,51.489135024886544],[-3.1301195324400326,51.48913502488653],[-3.130119528922995,51.489135011720506],[-3.130119528483195,51.48913500897757],[-3.1300998619552254,51.48905754088114],[-3.130099861515853,51.489057540881184],[-3.130078032500266,51.4889802978341],[-3.1300780320608954,51.488980297834125],[-3.1300540524375777,51.488903320156055],[-3.1300540498002056,51.4889033127502],[-3.130054047602208,51.488903305344344],[-3.1300279191402853,51.488826600714184],[-3.1300279147448085,51.48882658919399],[-3.130027913426064,51.488826585079615],[-3.129999645366348,51.48875017763348],[-3.1299996431687473,51.48875017269627],[-3.1299996392127785,51.48875016199896],[-3.129969238598704,51.488674073678595],[-3.1299692390380303,51.488674073404276],[-3.1299367102746007,51.4885983129853],[-3.129936703681705,51.488598297350784],[-3.1299020678764258,51.488522917495125],[-3.129902068315753,51.48852291722079],[-3.1299020617231665,51.48852290350636],[-3.1299020612837114,51.4885229029578],[-3.129865324598517,51.48844791189211],[-3.129865325037842,51.48844791161778],[-3.1298653184454452,51.48844789900054],[-3.129865317126931,51.48844789625765],[-3.1298264901195654,51.488373317843184],[-3.1298264874827573,51.48837331372889],[-3.1298264817693227,51.488373302483076],[-3.1297855754362067,51.48829915756367],[-3.1297855706019213,51.48829914906076],[-3.1297855670861443,51.488299143300715],[-3.129742585391733,51.48822544010288],[-3.1283940868254545,51.48854028298517],[-3.128428475237811,51.48859925433022],[-3.128461206921602,51.488658585344474],[-3.1284612073610374,51.48865858589304],[-3.128492268247675,51.4887182507947],[-3.1285216636049578,51.48877825973378],[-3.128549375847772,51.48883857650523],[-3.128575397938433,51.48889918767003],[-3.128599720201454,51.48896006799446],[-3.1286223364775383,51.48902120349078],[-3.1286432410463956,51.48908257825102],[-3.1272324243040246,51.489261833907925],[-3.1272167497584613,51.48921581081119],[-3.12719978789457,51.48916995645047],[-3.1271997870156203,51.489169954256134],[-3.1271997843787216,51.489169947124516],[-3.127181547066223,51.4891242935915],[-3.127181543550533,51.48912428591132],[-3.1271815431110577,51.48912428481415],[-3.127162032111454,51.489078836771235],[-3.127162032111407,51.489078836222646],[-3.127162028156245,51.48907882744529],[-3.127141249625552,51.48903359888074],[-3.1271412465493187,51.48903359202344],[-3.127141245670398,51.489033590103396],[-3.127119206203914,51.48898859500543],[-3.127095907562927,51.488943838036356],[-3.12709590272903,51.488943828984745],[-3.127071361176405,51.48889934141301],[-3.127071358539759,51.48889933675007],[-3.1270713563425603,51.48889933291],[-3.127045569244885,51.4888551103462],[-3.1256970335291974,51.48916992218554],[-3.125679025393634,51.489140638154836],[-3.1256790240754047,51.48914063623479],[-3.1256790218783155,51.48914063239468],[-3.125660197421946,51.48911154916462],[-3.125660197861306,51.48911154889032],[-3.1256405557671325,51.48908266344329],[-3.125640555327778,51.48908266371759],[-3.1256201171282028,51.48905400787108],[-3.12559887227869,51.48902556818442],[-3.125576844508289,51.48899737537782],[-3.1255768423112515,51.48899737208631],[-3.1255768401142636,51.48899736989198],[-3.1255540228330276,51.488969415736285],[-3.125530432299887,51.488941719980005],[-3.1255304283452685,51.488941715042756],[-3.125530427905877,51.488941714768465],[-3.125506061485446,51.48891427439395],[-3.1255060614854657,51.48891427466825],[-3.1254809376334207,51.48888710997256],[-3.1254809358758346,51.48888710805252],[-3.125480932360675,51.48888710448674],[-3.1254550528355014,51.48886021738946],[-3.125455051956715,51.48886021656658],[-3.1254550475627747,51.488860212177926],[-3.125428420274459,51.48883361118156],[-3.1278568315450177,51.487867672624134],[-3.1278020851092627,51.487815049436335],[-3.127802083351643,51.48781504779063],[-3.1278020741241765,51.48781503928781],[-3.1277458762318497,51.48776303137994],[-3.127745874034821,51.48776302918566],[-3.127745864807373,51.48776302068283],[-3.1277458643680136,51.48776302068285],[-3.127688222052132,51.48771163353847],[-3.1276882115065336,51.48771162421281],[-3.1276882101883463,51.487711623115665],[-3.127629139269813,51.48766087099548],[-3.127629139269786,51.48766087072118],[-3.127629132239453,51.48766086496123],[-3.127629127845466,51.48766086112124],[-3.1275686476600364,51.48761076075443],[-3.1275686476600084,51.48761076048013],[-3.127568637114546,51.48761075197735],[-3.127568634917553,51.487610750057364],[-3.1275067634823923,51.487561315978795],[-3.1275067577703006,51.487561311590255],[-3.127506751618806,51.48756130665315],[-3.12750675117944,51.48756130665317],[-3.1274435073902582,51.487512554220544],[-3.127443507390231,51.487512553946246],[-3.1274434955267134,51.4875125451692],[-3.127443494208535,51.48751254407207],[-3.1273788846577633,51.487464478768864],[-3.126284181807121,51.488048249452795],[-3.1262347342529315,51.48801274012036],[-3.1262347241470825,51.48801273298893],[-3.126184281551368,51.4879777612837],[-3.126184281112006,51.487977761283716],[-3.126132879065221,51.48794335106728],[-3.1260805017499376,51.48790949246413],[-3.1260805017499598,51.48790949273842],[-3.126027197058929,51.48787621701582],[-3.125018128615079,51.48851731967911],[-3.1249819839750317,51.488495530453044],[-3.1249819787024835,51.488495527161575],[-3.1249819765056,51.488495526064426],[-3.1249452291051765,51.488474134018524],[-3.1249452247114036,51.48847413154993],[-3.1249452216357474,51.4884741296299],[-3.1249078811411697,51.48845314107226],[-3.124907876308027,51.48845313832937],[-3.124907874111131,51.48845313695792],[-3.1248699523853785,51.488432557922316],[-3.124869947112878,51.48843255545373],[-3.124869944915988,51.48843255408228],[-3.1248314463526023,51.48841238758535],[-3.124831445913252,51.48841238785966],[-3.12479239819261,51.48839264816382],[-3.1247923907232438,51.48839264459808],[-3.1247923902838473,51.48839264404949],[-3.1247527964811956,51.48837333307425],[-3.124752796481188,51.48837333279995],[-3.1247126526417226,51.48835444835043],[-3.124712652202354,51.48835444835044],[-3.124672002262975,51.488336010997706],[-3.1246719961117586,51.488336008529124],[-3.1246719947936326,51.488336007706245],[-3.124630829966318,51.48831801388404],[-3.124630835238783,51.48831801607833],[-3.126261659272035,51.486836509805485],[-3.126178333395262,51.48680142407029],[-3.126178333834598,51.486801423795995],[-3.1260940226833163,51.48676724402912],[-3.126094022683334,51.48676724430342],[-3.126008804021832,51.486734001770564],[-3.1260088044611747,51.486734001770564],[-3.1260087895229067,51.486733996285],[-3.1260087864473647,51.48673399491361],[-3.1259226501670745,51.4867016854986],[-3.1259226440160384,51.48670168330438],[-3.1259226343501076,51.48670167973878],[-3.1258356076880114,51.48667031331364],[-3.1258356002189047,51.48667031084515],[-3.125835589674271,51.486670307005255],[-3.125747701624542,51.486639894539216],[-3.125747687565079,51.4866398898765],[-3.125747683610848,51.4866398885051],[-3.12565895921309,51.48661043822455],[-3.1256589592130712,51.48661043795026],[-3.1256589429568473,51.48661043273899],[-3.125658940760071,51.486610432190446],[-3.125569404174945,51.48658195232186],[-3.1255694024175242,51.48658195177331],[-3.125569388358086,51.48658194711058],[-3.1255693879187576,51.486581947384884],[-3.125479069018301,51.4865544472519],[-3.125479069457652,51.48655444725189],[-3.1254790505653576,51.48655444176636],[-3.125387979221365,51.48652793069264],[-3.125387972631038,51.486527928772695],[-3.12538796076844,51.486527925207085],[-3.12529616201952,51.48650241059642],[-3.1252961620195046,51.486502410322124],[-3.125296143566651,51.48650240565944],[-3.1252961431272865,51.48650240538515],[-3.125203645526629,51.486477894641304],[-3.1252036455266166,51.486477894367006],[-3.1251104552201916,51.48645438940834],[-3.1251104385247874,51.48645438529418],[-3.125016624925238,51.4864319042214],[-3.1250166161382027,51.486431902301476],[-3.1250166055937445,51.48643189955869],[-3.124922180118822,51.48641044483879],[-3.1254027042424464,51.48556317585685],[-3.1252839183908896,51.48553764203285],[-3.1252839047712446,51.48553763929015],[-3.1252838942270005,51.48553763709599],[-3.1251644372603433,51.485513406621735],[-3.1251644328669186,51.48551340579892],[-3.1251644126571465,51.485513401684834],[-3.125164412657158,51.485513401959125],[-3.1250442937924037,51.485490475929616],[-3.1250442942317305,51.485490475655304],[-3.12492350643015,51.48546885379436],[-3.1245388153990183,51.48633498545667],[-3.1246354340479967,51.48635228129501],[-3.12473156074133,51.486370628165695],[-3.1248271304611666,51.48639001345328],[-3.1248271313398646,51.48639001345325],[-3.124922160348008,51.486410440450385],[-3.1244416236848225,51.487257708163156],[-3.124370364600638,51.48724239064986],[-3.1243703501018243,51.487242387632755],[-3.124298658761945,51.48722784579167],[-3.124226585249872,51.48721408977049],[-3.124226572947869,51.48721408757624],[-3.1242265720691593,51.487214087576255],[-3.1241541247293054,51.48720111874563],[-3.1241541190176645,51.4872011176485],[-3.1241541097911694,51.48720111600281],[-3.1240813132240937,51.487188939024904],[-3.124081310587959,51.48718893875064],[-3.124081298285974,51.48718893655637],[-3.1240081718198396,51.487177554447634],[-3.1240081603965817,51.487177552801946],[-3.124008156881733,51.48717755225338],[-3.1239347088607423,51.48716696638459],[-3.1238609757478057,51.48715718251513],[-3.123786994005715,51.48714820503299],[-3.123786986536676,51.48714820421014],[-3.1237869786282833,51.487148203387314],[-3.123712743859724,51.48714003174341],[-3.1237127438597296,51.487140032017706],[-3.123638307026083,51.48713267197155],[-3.1238510908375745,51.48624372821205],[-3.123751564387951,51.48623499583566],[-3.1237515494501817,51.48623499473857],[-3.1237515437386785,51.486234994190006],[-3.1236518060173784,51.48622734931648],[-3.123814765339417,51.485334310776025],[-3.123689808989137,51.485326111752556],[-3.1236898252446137,51.48532611257536],[-3.1238277929046734,51.48443143427727],[-3.123677584675481,51.48442323047772],[-3.1235646492875637,51.48531927585145],[-3.123689799323716,51.48532611120403],[-3.1235518315353117,51.48622078947678],[-3.123651788443536,51.48622734794511],[-3.1234888271480354,51.48712038639662],[-3.12356365054929,51.487126121602756],[-3.123638291648666,51.48713267060015],[-3.1234255048338206,51.48802161411234],[-3.12347515068624,51.48802652273288],[-3.123524631355044,51.48803196950298],[-3.1235739635377318,51.48803795579427],[-3.123286940267649,51.48891872796369],[-3.1232622734985367,51.488915734623596],[-3.123237532919668,51.488913011460525],[-3.123237532040925,51.48891301146052],[-3.1232375276472073,51.488913010911936],[-3.123212709743186,51.48891055682866],[-3.123187831649066,51.48890837429378],[-3.123187828573466,51.48890837401949],[-3.123187826376609,51.4889083737452],[-3.1231628863344776,51.48890646193578],[-3.1231379006006392,51.48890482249756],[-3.1231128687352787,51.48890345543051],[-3.123112863462823,51.48890345515622],[-3.123087797328527,51.48890236100888],[-3.1230627092272427,51.488901540055515],[-3.1230627039547874,51.488901540055515],[-3.123037596082923,51.48890099257043],[-3.1230124671219137,51.488900718827885],[-3.122987339479245,51.488900718827885],[-3.1229622210631462,51.48890099257043],[-3.1229371079188266,51.48890154005551],[-3.122937104403856,51.48890154032981],[-3.122937103525113,51.4889015403298],[-3.122912014984458,51.488902361008876],[-3.12288694841079,51.48890345515621],[-3.1228619112729743,51.48890482277186],[-3.1228369264178792,51.48890646221009],[-3.1228119854970062,51.48890837374519],[-3.1227870972973424,51.48891055737724],[-3.122762284226404,51.48891301091193],[-3.122762279832688,51.48891301146052],[-3.122762278953945,51.48891301146052],[-3.1227375383750746,51.48891573489789],[-3.122712867212249,51.48891872851228],[-3.1226882931454623,51.48892198956084],[-3.1226638043112684,51.48892551886648],[-3.1226394231172274,51.48892931396067],[-3.122615156592888,51.48893337319771],[-3.1225910025410086,51.48893769685194],[-3.122566971945516,51.488942283277716],[-3.122566969748653,51.488942283826304],[-3.122566967991162,51.4889422841006],[-3.1225430691997422,51.48894713192654],[-3.1225193153932227,51.488952237861234],[-3.1225193105601203,51.488952238958404],[-3.122495703495629,51.48895760300192],[-3.1194708770566177,51.483906176616024],[-3.1196361286298773,51.48386862860101],[-3.119802426711322,51.48383288196254],[-3.1199697084941382,51.483798950958],[-3.120137882176659,51.48376685341025],[-3.120306932400832,51.48373659205811],[-3.1204768495200756,51.483708169366274],[-3.1206474648525404,51.4836816130316],[-3.1206474666098374,51.483681612757344],[-3.1208188614501493,51.48365691043495],[-3.1209909022635713,51.48363408159424],[-3.1211635095528716,51.483613136380114],[-3.1213367303460986,51.48359406875625],[-3.121510451758136,51.483576891610454],[-3.1216846079117833,51.48356161179717],[-3.1218591614860425,51.48354823178282],[-3.122034084385796,51.48353675458266],[-3.122209260212788,51.48352718705168],[-3.1223847351174006,51.483519526720336],[-3.1225603720536945,51.4835137804442],[-3.122736127990358,51.48350994877102],[-3.1229119752723156,51.483508032797474],[-3.1230878493417045,51.48350803279745],[-3.1232637058493733,51.48350994904527],[-3.1232637062886925,51.48350994904528],[-3.1234394402593786,51.48351378016991],[-3.123439439820062,51.4835137804442],[-3.1236150890573096,51.483519527268875],[-3.1237905516609623,51.483527186777394],[-3.1237905521002776,51.48352718650309],[-3.123965755165132,51.483536755953914],[-3.124103712026366,51.48264207733103],[-3.1243036046707187,51.48265519324993],[-3.1365059987832664,51.41567619371163]],[[-3.1302039527534284,51.492775807694734],[-3.130119654717541,51.492853840274044],[-3.1289329639157364,51.492344813660445],[-3.1290032029535113,51.49227979718695],[-3.1290032148159432,51.49227978594019],[-3.1290032161339694,51.49227978456865],[-3.1290716269545595,51.49221401273482],[-3.1302860476072603,51.49269687741873],[-3.1302039527534284,51.492775807694734]],[[-3.129743051037995,51.49137316905033],[-3.129698042670074,51.491446384629775],[-3.129698039155753,51.4914463903902],[-3.1296509759560083,51.49151912577501],[-3.1296509763954408,51.49151912604928],[-3.1296019022856565,51.49159131458049],[-3.129550808032845,51.491662971342414],[-3.128240585146908,51.491290306251955],[-3.12828145405201,51.491232992379125],[-3.128281455369964,51.491232990459],[-3.1282814623991246,51.49123298058401],[-3.128320722093336,51.49117523091238],[-3.1283207278043856,51.49117522186034],[-3.128320730001003,51.49117521884297],[-3.128358369506353,51.491117049283844],[-3.1283583699457687,51.49111704955813],[-3.1283943919032238,51.491058455449895],[-3.1284287563410693,51.49099950152983],[-3.1297860133689004,51.4912994628548],[-3.129743051037995,51.49137316905033]],[[-3.1275792466164907,51.493267150210485],[-3.127481619107194,51.493316506470656],[-3.127382589554813,51.49336480967802],[-3.127282262098212,51.49341200853183],[-3.127180601149621,51.493458120310734],[-3.127077691515993,51.49350310660686],[-3.1262620817083384,51.49276239683965],[-3.1263444035546337,51.492726410682124],[-3.1263444101455344,51.492726407664684],[-3.1263444202515993,51.492726403275654],[-3.1264257229149814,51.492689525626794],[-3.1264257233544095,51.49268952590108],[-3.126505998044764,51.4926517606034],[-3.126505998484191,51.492651760877685],[-3.1265852047754312,51.49261312686097],[-3.12658520521486,51.49261312713525],[-3.1266633211357586,51.492573635648476],[-3.1266633281659755,51.492573632082404],[-3.1266633360749707,51.49257362796771],[-3.1267403194426087,51.4925332995866],[-3.1276754922924574,51.493216730751215],[-3.1275792466164907,51.493267150210485]],[[-3.127313404627256,51.492181705771024],[-3.1273134041878223,51.49218170549674],[-3.127246149132767,51.492228338880814],[-3.1261845463566664,51.49162114369757],[-3.126133133945719,51.49165556379297],[-3.1260807569408726,51.49168942487493],[-3.1271077633058844,51.49231938167306],[-3.1270366914099164,51.492363752947504],[-3.1269644012770046,51.49240733616628],[-3.12689087533205,51.49245014147675],[-3.126816193982716,51.492492122517874],[-3.1268161935432888,51.49249212224358],[-3.126740334821127,51.49253329108292],[-3.125805185983083,51.49184985457688],[-3.125747436631474,51.491880106719805],[-3.1256888391240736,51.49190973044058],[-3.12562943432473,51.49193870543912],[-3.1255692398099773,51.49196702321061],[-3.125508250308322,51.49199468677125],[-3.1254464983358075,51.49202168103279],[-3.1246309409576787,51.4912809597352],[-3.1246721009853786,51.49126296695722],[-3.1246721014247836,51.49126296723152],[-3.1247127604943112,51.49124452542314],[-3.1247529058628722,51.491225639522405],[-3.1247925085304877,51.49120632324511],[-3.124831557951515,51.49118658207789],[-3.124831561466581,51.491186580157745],[-3.1248315654210432,51.4911865782376],[-3.1248700646707848,51.491166410535165],[-3.124907986507146,51.491145830561884],[-3.124907987825286,51.49114582973898],[-3.124907993537265,51.49114582672163],[-3.1249453419144353,51.49112483255796],[-3.1249820891511098,51.4911034390169],[-3.1249820895905214,51.49110343929119],[-3.125018241837988,51.49108164417882],[-3.1250537784452157,51.491059458742214],[-3.1250886901852577,51.49103688929091],[-3.1250886963365634,51.49103688517636],[-3.1251229717855913,51.49101393856851],[-3.125156592929274,51.490990627148356],[-3.1251565968836674,51.49099062440533],[-3.125156599519926,51.4909906224852],[-3.1251895707521977,51.49096694323595],[-3.125221867468275,51.49094291398788],[-3.125253494940953,51.490918530627],[-3.1252844351562494,51.49089380714331],[-3.12531468591775,51.49086874518318],[-3.1253442195454837,51.49084336723999],[-3.125373044388096,51.49081766673098],[-3.1253730505392614,51.49081766124495],[-3.12540115253753,51.49079165051428],[-3.125428523344113,51.490765337242976],[-3.125455154172432,51.49073872993486],[-3.125481032281696,51.490711841756976],[-3.1255061598695675,51.49068467024106],[-3.1255305233166646,51.490657229651326],[-3.125554116033552,51.49062952739441],[-3.125554117790993,51.4906295254743],[-3.125554120866491,51.49062952163407],[-3.1255769309914947,51.49060157224837],[-3.1255769327489054,51.49060156977966],[-3.125576935385054,51.490601566762344],[-3.125598965555389,51.490573367231],[-3.1256201990766,51.49054493757848],[-3.1256202021520645,51.490544933463966],[-3.125620203030766,51.49054493209246],[-3.1256406390254092,51.490516275610744],[-3.1256406421008482,51.49051627094764],[-3.1256406429795627,51.490516269850445],[-3.1256602783733123,51.490487389557295],[-3.1256790995475874,51.490458305202765],[-3.1256971082611122,51.490429014592834],[-3.1257142957283293,51.49039953199147],[-3.1257306557997917,51.49036986699958],[-3.127096056505803,51.490655026713405],[-3.1270715193239638,51.4906995206436],[-3.127045742553713,51.49074373976607],[-3.127018725752461,51.49078768325712],[-3.1269904882476007,51.49083132066834],[-3.1269610423374434,51.4908746325234],[-3.1269303774751767,51.49091763473093],[-3.126898520896893,51.4909602880647],[-3.1268654800688926,51.491002583745995],[-3.12683125542793,51.49104452040236],[-3.126795868938994,51.49108607169957],[-3.1267593298262555,51.49112722776163],[-3.1267216323757574,51.4911679929764],[-3.1267216319363893,51.4911679932507],[-3.1266828134912745,51.49120832784291],[-3.126642861747696,51.49124824525234],[-3.126601814049324,51.49128770762384],[-3.126559652820089,51.491326732237425],[-3.126516424630856,51.491365275477406],[-3.126472114541977,51.49140335188077],[-3.126426749792755,51.491440936484516],[-3.126380330382068,51.49147802956173],[-3.1263328892616835,51.491514605052075],[-3.1262844339000786,51.49155065719389],[-3.127379332481326,51.492134355935484],[-3.127313404627256,51.492181705771024]],[[-3.1238153796279047,51.48905875878696],[-3.1237945518873502,51.489049988847626],[-3.1237945518873382,51.48904998857333],[-3.123773473716186,51.48904144328078],[-3.123752168401165,51.48903313223511],[-3.1237306253970782,51.4890250513218],[-3.123708867990579,51.48901720959239],[-3.123708866672457,51.4890172090438],[-3.1237088631574625,51.48901720794663],[-3.1236868904695876,51.4890096043038],[-3.1236647042575836,51.489002239844616],[-3.1236647025000845,51.489002239296035],[-3.123664699424469,51.48900223847316],[-3.123642314626833,51.48899511813475],[-3.1236423106724653,51.48899511676329],[-3.1236197299251676,51.48898824136841],[-3.123619727288925,51.48898824081983],[-3.1236197250920523,51.48898823999696],[-3.123596951909809,51.488981610642675],[-3.123574001231027,51.48897523144326],[-3.123550870858553,51.48896910212433],[-3.1235508673435666,51.48896910130145],[-3.123550866025449,51.48896910102716],[-3.1235275722157727,51.488963225702946],[-3.1235041136504598,51.48895760409909],[-3.1234805013134928,51.488952238958404],[-3.1234804964803877,51.48895223786124],[-3.1234567426738655,51.48894713165225],[-3.1239135623745575,51.48809476210294],[-3.1239610788751766,51.48810497625254],[-3.124008302352811,51.48811570633722],[-3.1240552152342187,51.48812694851732],[-3.124101808733402,51.488138700598924],[-3.1241480661557435,51.488150958193835],[-3.124193984866315,51.48816372130247],[-3.124193985305678,51.48816372130247],[-3.124239526641361,51.48817697867946],[-3.12428470026939,51.48819073306813],[-3.1243294697233326,51.48820497349743],[-3.1243738512608914,51.48821970517927],[-3.124373851700261,51.48821970517926],[-3.124417799188705,51.488234913028336],[-3.124461327128173,51.48825060143367],[-3.12446132756755,51.48825060170795],[-3.124504396855019,51.48826675695571],[-3.124504399930627,51.48826675832714],[-3.1245470215512157,51.48828338453211],[-3.1245891691434653,51.488300471546154],[-3.124630826890709,51.48831801251259],[-3.1238153796279047,51.48905875878696]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231441772096526,51.48980028534266],[-3.122999906539917,51.48979949951172]],[[-3.1229999305420684,51.48979950396072],[-3.1229999270270317,51.48979950341212],[-3.1229999388902834,51.4897995056065],[-3.1230119937179746,51.48980187881897],[-3.122999906539917,51.48979949951172],[-3.122999916921297,51.48979950149206],[-3.122999906539917,51.48979949951172],[-3.1229999208757118,51.489799502314945],[-3.12299992570889,51.48979950313783],[-3.1229999243907502,51.489799502863534],[-3.1229999199969525,51.489799502040654],[-3.123085014730475,51.48981423419909],[-3.1229999305420684,51.48979950396072]],[[-3.122999921754475,51.48979950313783],[-3.1229999164819127,51.48979950204065],[-3.122999918678813,51.48979950258924],[-3.1229999274664078,51.489799504509314],[-3.123013353599122,51.4898028064895],[-3.122999915163776,51.48979950176635],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230681939447127,51.489814596007136],[-3.122999921754475,51.48979950313783]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230677080275564,51.48983966643075],[-3.122999906539917,51.48979949951172]],[[-3.122999919118189,51.489799506155094],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123063133628804,51.48983203742552],[-3.122999919118189,51.489799506155094]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230611876261722,51.48984124939929],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12306033253123,51.489795201330665],[-3.122999906539917,51.48979949951172]],[[-3.122999914285011,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.123057303855442,51.48977099713692],[-3.122999914285011,51.48979949545753]],[[-3.122999917800053,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.1230555577837613,51.48978986434651],[-3.122999917800053,51.48979949737761]],[[-3.1229999186788127,51.489799499023384],[-3.122999906539917,51.48979949951172],[-3.123033219280841,51.4897982273802],[-3.1229999186788127,51.489799499023384]],[[-3.122999906539917,51.48979949951172],[-3.1230170452638766,51.48978822433985],[-3.122999906539917,51.48979949951172],[-3.1230072347928504,51.4897948436634],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999151637724,51.48979949436035],[-3.12303114056406,51.48978284565736],[-3.122999906539917,51.48979949951172]],[[-3.1229999147243905,51.489799491343085],[-3.122999912527493,51.48979949326316],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999116487335,51.48979949408605],[-3.12303024290257,51.48976977186469],[-3.1229999147243905,51.489799491343085]],[[-3.122999915163772,51.489799495183235],[-3.1229999226332272,51.48979949161739],[-3.1230227501715087,51.489788946561504],[-3.122999915163772,51.489799495183235]],[[-3.1229999169212954,51.489799491343085],[-3.122999914285013,51.48979949326316],[-3.122999916481918,51.48979949189168],[-3.1229999125274976,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229999156031574,51.48979949189168],[-3.123022085386839,51.48978270247667],[-3.1229999169212954,51.489799491343085]],[[-3.1229999248301312,51.48979948640575],[-3.122999915163775,51.489799492988865],[-3.1230172812104544,51.48978723906687],[-3.1229999248301312,51.48979948640575]],[[-3.1229999195575715,51.48979949161739],[-3.12299992878455,51.48979948585716],[-3.1230162122004783,51.48979017129634],[-3.1229999195575715,51.48979949161739]],[[-3.122999912088113,51.48979949408605],[-3.1229999147243905,51.489799491343085],[-3.1230160338103983,51.48978484967046],[-3.122999912088113,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011906274105,51.48977420888779],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230117920385596,51.48978638408544],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011124621572,51.48979003469729],[-3.122999906539917,51.48979949951172]],[[-3.1229999182394312,51.4897994976519],[-3.122999916042529,51.4897994979262],[-3.1230111127602544,51.48979794815059],[-3.1229999182394312,51.4897994976519]],[[-3.1229999388902834,51.4897995056065],[-3.1229999305420684,51.48979950396072],[-3.1230089518906006,51.48980117223153],[-3.1229999388902834,51.4897995056065]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999125274976,51.489799494634646],[-3.1229999134062574,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.1229999147243985,51.489799493537454],[-3.1229999248301312,51.48979948640575],[-3.123007590251068,51.489794264074916],[-3.122999906539917,51.48979949951172]],[[-3.12299992878455,51.48979948585716],[-3.122999922633235,51.48979948942301],[-3.1230072800490234,51.4897951308518],[-3.12299992878455,51.48979948585716]],[[-3.122999908133694,51.48979949216598],[-3.1230022008176466,51.48979176962301],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.489799492988865],[-3.1230003106056703,51.48979758086815],[-3.122999907694314,51.48979949216598],[-3.123004957045847,51.489778401235625],[-3.122999908133694,51.48979949216598]],[[-3.1229999098912127,51.48979949216598],[-3.1229999094518357,51.489799492988865],[-3.122999909451834,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123004641572434,51.48979012356979],[-3.1229999098912127,51.48979949216598]],[[-3.122999915163774,51.48979948503426],[-3.122999912088114,51.48979948969731],[-3.1229999138456344,51.48979948640575],[-3.1230043010533075,51.48979253408722],[-3.122999915163774,51.48979948503426]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12300323248147,51.489791470091234],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230026129561934,51.48979625327317],[-3.122999906539917,51.48979949951172]],[[-3.1229999107699746,51.48979949189168],[-3.122999915163774,51.48979948503426],[-3.123001164760169,51.489797601988954],[-3.1229999107699746,51.48979949189168]],[[-3.1229999076943153,51.489799488051524],[-3.1230008721330726,51.48979323656057],[-3.1229999072549353,51.489799492988865],[-3.1229999072549353,51.48979949134308],[-3.1230010909441535,51.4897900997061],[-3.1229999076943153,51.489799488051524]],[[-3.1229999098912145,51.48979949244028],[-3.122999909451835,51.489799493263156],[-3.1229999098912127,51.48979949216598],[-3.1230007245015274,51.48979805622395],[-3.1229999098912145,51.48979949244028]],[[-3.1229999138456344,51.48979948640575],[-3.122999909451834,51.489799493537454],[-3.1229999098912145,51.48979949244028],[-3.1230006265198194,51.48979829623335],[-3.1229999138456344,51.48979948640575]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123000507887263,51.48979958268381],[-3.122999906539917,51.48979949951172]],[[-3.1229999217544746,51.4897994902459],[-3.1229999186788144,51.48979949189168],[-3.122999922633235,51.48979948942301],[-3.1229999217544746,51.4897994902459]],[[-3.1229999160425312,51.489799493537454],[-3.1229999156031574,51.489799493537454],[-3.1229999160425326,51.489799493263156],[-3.1229999173606724,51.48979949271457],[-3.1229999195575715,51.48979949161739],[-3.1229999160425312,51.489799493537454]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999916042529,51.4897994979262],[-3.122999906539917,51.48979949951172]],[[-3.1229999147243985,51.489799493537454],[-3.1229999134062574,51.48979949408605],[-3.122999915163775,51.489799492988865],[-3.1229999147243985,51.489799493537454]],[[-3.1229999107699746,51.48979949189168],[-3.122999909451834,51.489799493537454],[-3.122999912088114,51.48979948969731],[-3.1229999107699746,51.48979949189168]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999912088113,51.48979949408605],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.489799492988865],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999072549353,51.48979949134308],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999895831057,51.489799496829015],[-3.1229998927553995,51.489799496006135],[-3.1229998905584972,51.489799495457525],[-3.1229998874828397,51.489799494634646],[-3.1229998852859393,51.48979949408605],[-3.122999882210276,51.489799493263156],[-3.122999873422678,51.48979949106878],[-3.1229998747408247,51.48979949134308],[-3.1229998694682615,51.48979948997161],[-3.12299986287756,51.48979948832582],[-3.122941914400083,51.48978375795726],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999894952295,51.48979949161739],[-3.1229492103217305,51.48976496097176],[-3.122999906539917,51.48979949951172],[-3.122999894952295,51.48979949161739]],[[-3.1229681462482786,51.48978637585286],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229681462482786,51.48978637585286]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229916108825924,51.48980495642574],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999041792746,51.48979950780087],[-3.122994971697943,51.48982289788397],[-3.122999906539917,51.48979949951172],[-3.1229999041792746,51.48979950780087]],[[-3.1229924259265953,51.48984048330501],[-3.1229999041792746,51.48979950780087],[-3.122999906539917,51.48979949951172],[-3.1229924259265953,51.48984048330501]],[[-3.122960212324923,51.489835554190925],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122960212324923,51.489835554190925]],[[-3.122999906539917,51.48979949951172],[-3.122986771548975,51.4898146012379],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229869165456785,51.48981006739152],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924418256484,51.48980908703235],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229072623680896,51.48973855305286],[-3.122999894952295,51.48979949161739],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229624527361866,51.48982168740776],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229606082235644,51.489815737093764],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986576584587,51.48980044479762],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229598230830873,51.489779594967146],[-3.1229998971491995,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229598230830873,51.489779594967146]],[[-3.122999896270432,51.48979949408605],[-3.122918057886959,51.4897558589742],[-3.1229998967098176,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999896270432,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.1228162207129846,51.489754328833186],[-3.12299986815013,51.489799489697305],[-3.122999878695241,51.48979949244027],[-3.1229998800133814,51.48979949271457],[-3.122999883967803,51.48979949381175],[-3.1229998870434654,51.489799494634646],[-3.1229998892403574,51.489799495183235],[-3.122999892316016,51.48979949600612],[-3.122999894512919,51.489799496554724],[-3.1229998975885747,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122959947401993,51.48980882591958],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122959947401993,51.48980882591958]],[[-3.1229998967098176,51.48979949408605],[-3.1229749728922496,51.48978572796623],[-3.122999890119119,51.48979949024589],[-3.1229998945129163,51.48979949271457],[-3.122999897149196,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.1229998967098176,51.48979949408605]],[[-3.1229998909978773,51.48979949436035],[-3.1229057381014367,51.48976758020198],[-3.1229998914372556,51.48979949408605],[-3.1229998980279565,51.489799496554724],[-3.122999906539917,51.48979949951172],[-3.1229998909978773,51.48979949436035]],[[-3.122959627963948,51.48981879357904],[-3.1229998980279605,51.48979950313784],[-3.122999906539917,51.48979949951172],[-3.122959627963948,51.48981879357904]],[[-3.122999893634158,51.48979949984627],[-3.122937028473216,51.48980121335949],[-3.122999906539917,51.48979949951172],[-3.122999893634158,51.48979949984627]],[[-3.1229448657048597,51.489791250092594],[-3.1229998962704384,51.4897994979262],[-3.122999897149198,51.4897994982005],[-3.1229448657048597,51.489791250092594]],[[-3.122999894512919,51.489799496554724],[-3.1229998936341525,51.48979949628042],[-3.122999895831057,51.489799496829015],[-3.122999896709813,51.48979949710331],[-3.122999894512919,51.489799496554724]],[[-3.122999894073538,51.48979950012057],[-3.122986491228696,51.48980030572855],[-3.122999890558498,51.48979950012057],[-3.122969522815412,51.48980099201517],[-3.122999893634158,51.48979949984627],[-3.1229998953916778,51.48979949984627],[-3.122999894073538,51.48979950012057]],[[-3.122999883967803,51.48979949381175],[-3.122999883089041,51.489799493537454],[-3.1229998852859393,51.48979949408605],[-3.122999883967803,51.48979949381175]],[[-3.122974544053588,51.48979294114054],[-3.12299986287756,51.48979948832582],[-3.12299986815013,51.489799489697305],[-3.122974544053588,51.48979294114054]],[[-3.121452685494926,51.491315592437516],[-3.121410544643387,51.49129850787115],[-3.1213688761885265,51.49128096165535],[-3.12132770253982,51.49126296339125],[-3.1212870434702946,51.491244521582864],[-3.121246914359014,51.49122564336267],[-3.121207303343075,51.491206322970804],[-3.1211682543614465,51.49118658180356],[-3.121129750717854,51.49116641190668],[-3.121091821851361,51.49114582836745],[-3.1210544778680056,51.49112483667252],[-3.121054475671094,51.491124835575285],[-3.1210177148135654,51.491103434627995],[-3.120981570474977,51.49108164390451],[-3.121990752578969,51.490440575977786],[-3.122008824731046,51.49045147118664],[-3.122008828246099,51.490451473381036],[-3.122027205784428,51.490462172193354],[-3.122045876406348,51.49047266692861],[-3.122045878603252,51.49047266802582],[-3.1220458799213953,51.49047266884873],[-3.122064840551154,51.49048295868385],[-3.122084090309944,51.49049304224723],[-3.122084089870549,51.49049304224723],[-3.1221036186525017,51.49050291460132],[-3.122123420306185,51.49051257272864],[-3.122123419866796,51.49051257272864],[-3.1221434921951747,51.49052201553188],[-3.122163817622831,51.490531234507586],[-3.122163818501593,51.49053123478189],[-3.122163821577272,51.49053123615339],[-3.1221844058160206,51.49054023404443],[-3.122205233926676,51.49054900454174],[-3.122226308545368,51.490557548468104],[-3.121452685494926,51.491315592437516]],[[-3.1219555540230166,51.489180792585145],[-3.12195555446238,51.489180792859436],[-3.1219384199298075,51.48919226323679],[-3.1219216061273682,51.48920392068477],[-3.1219216048092258,51.48920392150764],[-3.121921602612314,51.48920392315341],[-3.121905120085229,51.48921575971766],[-3.1218889679547766,51.48922777649551],[-3.1218731510542432,51.489239969921286],[-3.121857683443972,51.48925232902339],[-3.1218576830045843,51.48925232929768],[-3.1218576803682847,51.489252331492025],[-3.1218425576545594,51.489264859562105],[-3.121827790822095,51.48927754782292],[-3.1218133776741213,51.489290397646066],[-3.1218133745984185,51.489290400388995],[-3.121799325680315,51.48930340299722],[-3.121799323043998,51.48930340546587],[-3.121785639674102,51.48931655921353],[-3.114500576057561,51.48641865225391],[-3.1145963856589227,51.48632656543363],[-3.114694739369331,51.48623555148799],[-3.1147956486056376,51.486145598342404],[-3.1148990483262433,51.4860567660568],[-3.1150049086446487,51.485969079035],[-3.1151132168118663,51.48588254796713],[-3.1152238998815958,51.48579723126678],[-3.1153369802587334,51.48571311109946],[-3.115452381484195,51.485630245604284],[-3.115570068403935,51.48554865808742],[-3.1156900401366237,51.48546835046211],[-3.1158122228637786,51.4853893723645],[-3.121973009725091,51.489169508729695],[-3.1219555540230166,51.489180792585145]],[[-3.1197153691860575,51.49155064978761],[-3.119666923051284,51.491514604777755],[-3.119619473582859,51.49147802270406],[-3.1196194731434623,51.49147802270405],[-3.1195730717469456,51.491440943890765],[-3.119573072186339,51.49144094389077],[-3.1195277030434183,51.491403355721054],[-3.119483392954486,51.49136527986628],[-3.119440159492904,51.49132673168881],[-3.1206267683642825,51.49081766618239],[-3.1206555932068585,51.49084336723998],[-3.1206555936462617,51.49084336696569],[-3.120685126834623,51.49086874463458],[-3.120685126834609,51.49086874490888],[-3.120715371444887,51.49089380193154],[-3.1207153714448714,51.49089380220584],[-3.1207153753992287,51.49089380522319],[-3.1207153771567153,51.490893806868996],[-3.1207153775961016,51.490893806869],[-3.1207463178113857,51.49091853090129],[-3.1207463182507853,51.490918530627],[-3.1207779391328647,51.490942908501836],[-3.1207779386934624,51.49094290877611],[-3.120777943087222,51.49094291179346],[-3.1207779452841016,51.49094291343928],[-3.1208102428789224,51.49096694323596],[-3.1197153691860575,51.49155064978761]],[[-3.118142570246891,51.491731124190686],[-3.1180893107628185,51.491677909297195],[-3.1180893098841085,51.49167790847427],[-3.1180375537640677,51.49162412856915],[-3.1179873001258684,51.491569783654356],[-3.1179385753266766,51.49151490198545],[-3.117891386392349,51.49145948959916],[-3.1178457627543312,51.491403582980034],[-3.1178017096804087,51.491347188164646],[-3.1177592359526947,51.49129031694988],[-3.119069435716578,51.49091763445663],[-3.119101285265359,51.490960279012675],[-3.1191012848259594,51.490960279012675],[-3.119101287901348,51.49096028312721],[-3.1191012914160807,51.49096028779037],[-3.1191012918554932,51.490960287516096],[-3.119134335319519,51.491002587037634],[-3.1191343357589174,51.49100258703764],[-3.1191685568850374,51.49104452012803],[-3.1191685573244534,51.49104451985375],[-3.119203938541156,51.49108606539058],[-3.1192039381017658,51.49108606539056],[-3.1192039411772092,51.49108606895652],[-3.1192039455707254,51.49108607389399],[-3.1192039455707534,51.4910860736197],[-3.119240483365523,51.49112722721305],[-3.1192404829261133,51.49112722748733],[-3.1192404846835493,51.49112722913316],[-3.119240490395137,51.49112723544216],[-3.11927817334696,51.49116798474727],[-3.1192781729075683,51.49116798474726],[-3.119278180815968,51.4911679929764],[-3.1192781808159893,51.4911679927021],[-3.119316997064299,51.49120832537415],[-3.119316996624906,51.49120832537415],[-3.11931700321527,51.491208331957466],[-3.11931700453335,51.491208333328984],[-3.119317004972742,51.491208333329],[-3.1193569426568315,51.49124823674889],[-3.118142570246891,51.491731124190686]],[[-3.11501855105639,51.49186298742573],[-3.1149620960635844,51.49177573236063],[-3.1149080690729054,51.49168784298702],[-3.114856522345861,51.49159940352086],[-3.1148074435706494,51.491510392569396],[-3.1147608722672846,51.49142088227847],[-3.114716808422366,51.49133087374816],[-3.1146752678347944,51.49124039934945],[-3.1160627441104203,51.4910002904422],[-3.1160973580910736,51.49107567407704],[-3.11609735765168,51.49107567407701],[-3.1161340813278575,51.491150684506756],[-3.1161340835240834,51.49115068944421],[-3.1161340887952726,51.4911506995935],[-3.1161340892347065,51.49115069931922],[-3.116172904167127,51.491225298139334],[-3.1161729046065183,51.49122529813935],[-3.116213791476621,51.491299447493724],[-3.1162137910371865,51.49129944776799],[-3.1162137971871924,51.49129945791732],[-3.1162137998228743,51.49129946258051],[-3.116256753807262,51.491373155335026],[-3.116256753367818,51.49137315560931],[-3.1162567595179347,51.491373165210035],[-3.1162567621535766,51.49137317014751],[-3.116256762593013,51.49137316987324],[-3.1163017705217793,51.4914463838069],[-3.116301769642987,51.491446383806846],[-3.116348826692445,51.49151911041382],[-3.11501855105639,51.49186298742573]]],[[[-3.1359960800914215,51.49366826085557],[-3.134696363719542,51.49328144950848],[-3.134597229114516,51.493408379820565],[-3.135885933818873,51.49380929558898],[-3.1359960800914215,51.49366826085557]]],[[[-3.135933439502529,51.4893049589914],[-3.135917624376946,51.489164119902625],[-3.135917623056111,51.48916411030239],[-3.1359176212936557,51.489164092747615],[-3.135917620854282,51.48916409274766],[-3.1358978743843555,51.489023476265935],[-3.1358978748237276,51.489023476265885],[-3.13589787306291,51.48902346447133],[-3.135897870421875,51.48902344746523],[-3.135897869982503,51.48902344746528],[-3.1358741913217805,51.488883040422486],[-3.1344437409582686,51.48898493900848],[-3.134464787871743,51.48910976627852],[-3.1344823384034437,51.48923477409727],[-3.134496394286398,51.48935997837532],[-3.135933439502529,51.4893049589914]]],[[[-3.132499718421823,51.487698910843434],[-3.132439527237054,51.48759570777596],[-3.1310910658219915,51.48791058169967],[-3.131142655618859,51.48799904206223],[-3.132499718421823,51.487698910843434]]],[[[-3.130555430681313,51.48111042694562],[-3.1303114096626596,51.481029431845364],[-3.1303114096625704,51.48102943129678],[-3.130311367048747,51.48102941785888],[-3.130311359140986,51.4810294151164],[-3.1300651121749614,51.48095109101875],[-3.1300651117357536,51.48095109156738],[-3.1298167068843306,51.480875460398295],[-3.129197107665537,51.48168675357173],[-3.12896944835394,51.48162048291694],[-3.1289694452787202,51.4816204820942],[-3.128969401786242,51.48162046947877],[-3.128969401346979,51.48162046975308],[-3.12873992474268,51.481556689360005],[-3.128739925181947,51.48155668908568],[-3.1287398961871404,51.48155668140678],[-3.12873987773589,51.48155667647034],[-3.1285086540993876,51.481495406074444],[-3.1285086545386216,51.48149540552583],[-3.1282756996540817,51.481436650053595],[-3.1282757000933463,51.481436649779276],[-3.128275678567098,51.48143664484291],[-3.1282756587980214,51.48143663963215],[-3.1282756583587514,51.48143663990648],[-3.128041145722413,51.48138044295332],[-3.128041146161685,51.481380442679004],[-3.1280411149706695,51.48138043554864],[-3.1280410973982558,51.48138043143492],[-3.1280410973982846,51.48138043170922],[-3.12780505728885,51.48132680012204],[-3.1282854741283215,51.48047951859153],[-3.1280241714713446,51.480423351052366],[-3.1280241714712846,51.48042335050377],[-3.1280241336915187,51.48042334282508],[-3.1280241178767243,51.4804233395342],[-3.127761285236171,51.4803700274538],[-3.1273285135646507,51.48122726070879],[-3.1275674738568195,51.48127573087511],[-3.1278050080862974,51.481326789426475],[-3.1273245782738868,51.4821740694141],[-3.127537083147253,51.48222235353679],[-3.1277481701841947,51.48227293703608],[-3.12722066227404,51.483109231398934],[-3.1274070297580843,51.483156237092935],[-3.127592059670627,51.48320526740165],[-3.127775703266382,51.483256309167096],[-3.1279578612762515,51.48330933524456],[-3.128138541187366,51.483364347286376],[-3.128138541187337,51.483364347012085],[-3.1283176138536737,51.48342130580642],[-3.1284951034555877,51.48348021903977],[-3.1286709010538933,51.48354105024306],[-3.1288449965592102,51.483603796407095],[-3.1290172788329293,51.48366841749775],[-3.1291877549180387,51.48373491599126],[-3.129356327732144,51.48380325377345],[-3.1295229893788425,51.483873428109945],[-3.1303382560745545,51.48313264314459],[-3.1301507819505,51.48305370607472],[-3.130150767012844,51.483053700041104],[-3.130150743288247,51.48305368989358],[-3.1301507432882874,51.483053690167864],[-3.129961130226932,51.4829768233164],[-3.129961127590878,51.482976822219364],[-3.1299610915648985,51.48297680768376],[-3.1299610911256663,51.48297680823238],[-3.129769359760873,51.48290201899385],[-3.1305213957061815,51.48213560733901],[-3.1303059847880887,51.4820548103654],[-3.130305984348825,51.482054810639724],[-3.1300884320735425,51.48197640307291],[-3.130088432512799,51.48197640279859],[-3.130088405713769,51.48197639347412],[-3.1300883877012557,51.48197638689208],[-3.130088387261991,51.481976387166405],[-3.129868683501744,51.48190036350914],[-3.130555430681313,51.48111042694562]]],[[[-3.124566883305163,51.377450850228676],[-3.121432924188351,51.377450850228605],[-3.121445429640383,51.37834964804971],[-3.121445617237832,51.3783496480522],[-3.118338230354304,51.3783835092924],[-3.118338230354583,51.37838350654937],[-3.1183379660517887,51.37838351229919],[-3.118337590856195,51.37838351639877],[-3.118337590855777,51.378383520513296],[-3.1152311623106796,51.37845124250721],[-3.1152936625614394,51.3793492228829],[-3.1183750999919946,51.37928204575988],[-3.1184501213563207,51.38107909168671],[-3.121483133037339,51.38104604094982],[-3.1245168589958525,51.38104604094749],[-3.1245418719110556,51.37924844573091],[-3.1214585698318387,51.37924844573919],[-3.121446069137296,51.378349648058204],[-3.124554377853022,51.378349648049785],[-3.124566883305163,51.377450850228676]]],[[[-3.122999908133694,51.48979949216598],[-3.122999907694315,51.489799493263156],[-3.1229999076943145,51.489799493537454],[-3.122999908133694,51.48979949216598]]],[[[-3.1229999076943145,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999076943145,51.489799493537454]]],[[[-3.116839290108119,51.34244236994253],[-3.1167644049146093,51.340645306678354],[-3.1126090965429376,51.340735895277675],[-3.112609096105171,51.34073589445473],[-3.112609008951894,51.34073589746433],[-3.112608355961136,51.34073591167011],[-3.1126083568354277,51.340735918802075],[-3.108457036809773,51.34087174077086],[-3.108457036372688,51.34087173802777],[-3.1084567766623006,51.34087174951622],[-3.108456182790471,51.34087176891795],[-3.108456183664294,51.340871775501334],[-3.1043085108287762,51.34105283970798],[-3.104532987455573,51.34284500835409],[-3.1086314257775705,51.34266609334691],[-3.1127338058973444,51.34253187246651],[-3.116839290108119,51.34244236994253]]],[[[-3.1166303936596518,51.49344271476967],[-3.1165294932441996,51.49337275024874],[-3.1164305798813787,51.49330170776698],[-3.1153355943280308,51.4938853732],[-3.1154509905723553,51.49396825519023],[-3.1154509901329392,51.49396825519021],[-3.1154509936478885,51.493968257659105],[-3.115451012980056,51.49396827164945],[-3.1154510134195257,51.49396827137518],[-3.115568709777844,51.494049883404664],[-3.1166303936596518,51.49344271476967]]],[[[-3.105355103670705,51.49369858663016],[-3.1052487956276598,51.49350571066617],[-3.1051479174242025,51.49331174454942],[-3.103774573675688,51.49358180454003],[-3.1038832277568744,51.493790734314146],[-3.1038832290752425,51.49379073404006],[-3.1039976863385292,51.49399840644913],[-3.105355103670705,51.49369858663016]]],[[[-3.10511849079626,51.49560852278291],[-3.1049588195365763,51.49541279648975],[-3.1048046779238545,51.49521540118926],[-3.1048046783632874,51.49521540118933],[-3.104656049653335,51.49501631468251],[-3.1045130128454996,51.49481564123519],[-3.104375631999799,51.494613472767064],[-3.1042439347209205,51.49440985181821],[-3.1041179090892066,51.49420475865637],[-3.102769055920801,51.494519303824816],[-3.102904050519799,51.49473900376908],[-3.102904049201278,51.49473900431743],[-3.1030451670079264,51.49495719980194],[-3.103045166568372,51.49495720007614],[-3.103045180621015,51.49495722092505],[-3.103045195551555,51.49495724396848],[-3.1030451959911063,51.49495724369425],[-3.103192365059988,51.49517382551497],[-3.101871697013353,51.495531994903125],[-3.1020351416274408,51.495761317755175],[-3.102035140748429,51.49576131802933],[-3.10203516138953,51.495761345188335],[-3.1020351741247723,51.49576136356846],[-3.1020351750037722,51.495761363294314],[-3.102204973762725,51.495988824839095],[-3.102204972444284,51.49598882511315],[-3.102381154847421,51.496214463181396],[-3.1023811416713505,51.49621444726991],[-3.09980338918575,51.49701606049501],[-3.100008680070667,51.49726774210943],[-3.1025636318136396,51.49643816033024],[-3.1023811785641495,51.496214492260954],[-3.103670018480145,51.4958136613458],[-3.103841072680285,51.49602334852734],[-3.10511849079626,51.49560852278291]]],[[[-3.101871728191938,51.495532040990504],[-3.1017147026419343,51.49530094382131],[-3.1015641707289774,51.49506818209262],[-3.100224273395027,51.495397344543456],[-3.1003841949900126,51.49564463651731],[-3.1003841941110015,51.49564463679143],[-3.1003842112366597,51.4956446617557],[-3.100384227044134,51.49564468644541],[-3.1003842279231457,51.49564468617128],[-3.1005510078269998,51.49589014939911],[-3.099230298380219,51.496248288728346],[-3.099414179770218,51.49650630688449],[-3.099414160887279,51.49650628137116],[-3.098103638473964,51.49687874118078],[-3.0983053366313595,51.49714896552021],[-3.09830529535161,51.49714891257237],[-3.097005358990612,51.49753557962034],[-3.0972255471474193,51.49781761668421],[-3.097225546268346,51.49781761695833],[-3.097225564713006,51.497817639180354],[-3.0972255910612474,51.49781767319885],[-3.097225592379773,51.497817672924846],[-3.0974536355674367,51.49809726811677],[-3.098731169194348,51.49768251208477],[-3.0985144959389017,51.49741686639784],[-3.0983053375096636,51.497148966617566],[-3.099605249677745,51.496762282393846],[-3.0994141990926054,51.49650633239792],[-3.100724696630659,51.496133855452825],[-3.1005510425189162,51.49589019768189],[-3.101871728191938,51.495532040990504]]],[[[-3.0992303330691646,51.496248340577345],[-3.099053678302795,51.49598833248067],[-3.0977231420431086,51.496332012782595],[-3.0979096046775574,51.49660646803166],[-3.0992303330691646,51.496248340577345]]],[[[-2.980213526673043,51.388735553249596],[-2.978313961333622,51.38738684876769],[-2.9754767579690973,51.38897882875258],[-2.9745083651843673,51.38831491917296],[-2.9716974364708664,51.38994822115232],[-2.9697239785309812,51.3886416653298],[-2.966922698003525,51.39032704526599],[-2.9659179471010826,51.389684608151605],[-2.963146124840082,51.39141130239555],[-2.9631461226517324,51.39141130129535],[-2.9631460114769688,51.39141137301059],[-2.963145559342688,51.39141165464969],[-2.963145567655759,51.39141165959847],[-2.960422124385757,51.3931682918305],[-2.9625021164818444,51.39440858838486],[-2.965190638837996,51.39267443035236],[-2.9662132092163263,51.39330579729653],[-2.9689317214190423,51.391612242981545],[-2.969936550639735,51.39225464553275],[-2.9726836234040004,51.39060181572634],[-2.9736704222078907,51.391255068024776],[-2.9764446191488187,51.38964306996215],[-2.977413062319294,51.39030695460549],[-2.980213526673043,51.388735553249596]]],[[[-2.9621236327990546,51.39077989997481],[-2.961101171092082,51.390148489939534],[-2.958342733891123,51.39192764279143],[-2.95626295978024,51.390687260364565],[-2.953519957056795,51.39251911841267],[-2.953520137721494,51.392518993318326],[-2.9524631514146886,51.39191021541305],[-2.9497548040764077,51.39378316191064],[-2.9497547975119818,51.39378315860931],[-2.949754473489413,51.39378339073767],[-2.9497542422551395,51.39378355058768],[-2.949754247067812,51.39378355333781],[-2.9470988894774597,51.395685329627966],[-2.947098885537486,51.39568532797624],[-2.9470987144829386,51.39568545472089],[-2.94709833898966,51.39568572379523],[-2.9470983468664476,51.39568572792159],[-2.9444962224933278,51.39761615115773],[-2.9444962124271794,51.39761614620496],[-2.9444957475433835,51.39761650373401],[-2.9444956886152673,51.39761654725811],[-2.944495689927548,51.39761654808302],[-2.941947072343839,51.39957543513915],[-2.9430694231061256,51.40013669943609],[-2.945602195616372,51.39818995548639],[-2.9467087263477545,51.398763351285446],[-2.9492790270400646,51.396856469196024],[-2.950369401655996,51.39744182040396],[-2.952976010980551,51.39557486363059],[-2.955633647681258,51.39373689781867],[-2.9566907146759047,51.394345640349286],[-2.9593821670198537,51.392548127275255],[-2.9593821705195924,51.39254812947455],[-2.9621236327990546,51.39077989997481]],[[-2.9519024644024925,51.39497748962225],[-2.9519024578377335,51.39497748632104],[-2.9519021487654786,51.39497770777937],[-2.951901909180243,51.39497787338172],[-2.9519019139931713,51.394977876131755],[-2.949279383659595,51.39685620420128],[-2.949279559109824,51.39685607416836],[-2.9481892123477187,51.39627070782518],[-2.950828290773348,51.394380558450955],[-2.9535195847388698,51.39251937599161],[-2.9545766021812048,51.393128141840876],[-2.9519024644024925,51.39497748962225]]],[[[-2.9433897383651297,51.39704272611546],[-2.9422832915324766,51.39646929552312],[-2.939702452356745,51.39845287468851],[-2.9408247486144155,51.39901416031434],[-2.9433897383651297,51.39704272611546]]]]} \ No newline at end of file From eef1c7c1380ac829297e6be35a4ef6fa3b878a0b Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Fri, 9 Jan 2026 14:35:01 -0300 Subject: [PATCH 18/27] ci: bump Rust version to 1.92 Just an excuse to bump the CI cache for the Rust tests. --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8c6678f..9fc044e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,7 +15,7 @@ concurrency: env: CARGO_TERM_COLOR: always - RUST_VERSION: 1.90.0 + RUST_VERSION: 1.92.0 RUST_BACKTRACE: 1 jobs: From 7fa4d43fdf94b4520f43a3a65b90c2f71f5c9914 Mon Sep 17 00:00:00 2001 From: Thomas Buckley-Houston Date: Fri, 9 Jan 2026 16:45:29 -0300 Subject: [PATCH 19/27] fix: forward longest lines precedence over backward lines This is just about the edge case of handling equally long lines from different angles. We always want the first angle to find the line to win. The CPU kernel does this already. But the Vulkan kernel had problems because of how forward and backward lines take it in turns per sector. --- crates/kernels/vulkan-and-cpu/kernel.spv | Bin 16120 -> 16516 bytes .../kernels/vulkan-and-cpu/src/elevations.rs | 23 +++++++- crates/kernels/vulkan-and-cpu/src/kernel.rs | 53 +++++++++++++++--- crates/total-viewsheds/src/los_pack.rs | 3 +- crates/total-viewsheds/src/output/viewshed.rs | 4 +- crates/total-viewsheds/src/run/compute.rs | 37 ++---------- crates/total-viewsheds/src/run/serial.rs | 28 +++++++-- 7 files changed, 97 insertions(+), 51 deletions(-) diff --git a/crates/kernels/vulkan-and-cpu/kernel.spv b/crates/kernels/vulkan-and-cpu/kernel.spv index ed3776559b7a63c515c180a1ef3f66d50fdf0826..cc0ddc7b683acbc86d8b9426ff6460002c7bdd40 100644 GIT binary patch delta 5206 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 K{6F-0A@pC?4bABQ delta 4842 zcmZ9PYm8Ra6^75587>11P=*l!DGpPd=)~xN2oz-m2J9#xA{YdTpePpuVzo)zq&cOf zwvhg54@hl8js8#z6|@5tF9Ez?@%~4RQGYa6i6Y(xib|j7o3qHl6V~i^z3Z~~T6^#F z9oDZ)kNm2xx~i#H(lbqxWI(d}!Mb;98}k~JBx!3&YLfE+o6wIR&n^pnb6(r0dFZ@u zujE)#olL@OKKhZQDw*He(dS@QdV4;u?%s4>{%+l|G|%7a-vaJ2U@U(p4(Lkfb+!)d zO4CjGnS++|_fLbm(k=Oh`bi^}kYzpD#;~9{NzbGaycAA-N&Z3oauRe59-l7D*A1@E zuE)}bMd@N4E75)a$I7*>KyE->m*ai#Q?M@wFGG&P8>3y{vM&Es(yQXX3fxYdKE|5s zA4$(XmG=AvWmP_+VMwEB0!x`g*eKj*fcG#?XVi9kKEGjX!xqrpu#1pcg)GgtHZ-MM zIv;O1RGqHQ9~@ert-)<0fr_>L6y3+#wB3x{gt&IcsBJBHHDWEsXxF!_%SUaufZNHd zkFn-rzW&J{nb^k(Z|S^zSZA7U?(A{e&f4_WeD~<)5esk(`>kLPgq#yD=sY_5jg)OZ z(EK7pe#e=|_`CTmlzeGR8-}}DwC6uNds2SEIrC}_HW1fynz9{L-8CrTi!GD45N=*s_j|iImFI8PUXf~^7G)D zys@=@;tL?Pu)L@R4{!Vo#9grKFTrcm?_%@=`GM9U*~>5oO6)7(i0&w&eZ#y8uPv&6 z4Q$4Xu&pIRpV!gle@kuZZ-C`40spSx-b9!84R%}7BdaX!Z3xSlh9hK!dk@_SL{gU35Mbv^_#2CaXJcRnVau?YbtWUY>I&`bk zH}dp{E9Y@e{njN}ccOtPI+g^gtNabfzLjx-`J z#4%3TD6nPsMl3A&rV7u+)ZilGjQ((=bHVBVSkciIu)prU zj`&olbomZ0uKaZ7ul(j(Q7eRx73rWp2C*VXI}|rw+n!>Av0xYLBu-$f|4O{PoVK`E z6TsSHF_nw?HwX=q8dtLbU*&CZ+8!<@x~R}i8VRQq+$Q{-+_~@r^-pV56<+Q~j=Yq9G)pqFb=yRFBLTZevufkbl zRK2j!%T+HbxN_B3!|7|)=7_2ngY~y+ec~788t~$bKfdwfCuIq`23z$&(e|ZadB0~o zC)a^}?3gz7Wr!VfEO$(szr;7As1*quVr>U%5oHqH$m8%6=1n&-%7CD0&H=> z?xaJ(Uj`rV$~E|T;Jg_w_UB-q*k1KtATE|MJ888VV}E}MHd%Rp?_yGUIc>2(yQr_r zXT}_HW)6b&pX>Wyr+6uR0@hf5Cwz)7KMjd9aR@9QXW}r}#{;KL{d2@NJC-}9EzU&t zB}yC$6M86oCwv9g7H8sXuw1mS3oKVY6Zg}h;5`#=WiL3NxC!dL5f{dI^8RZysPTJ2 z>Z6Jv$8t5=;`W>mwo@CC=+t;P`RLR{a4cxN`!Dfh#1%P~lWU7sT>y?wnJ_waAy`{< zYO*#YI@Jc2D|c!adWFvbwkp0?+tIyRepJL~<#hD;tn{^e1~&a7W(L^S%LjKcx|5hE zUd=y2*H>HkWgRF^&|C_>1YKvpVj}obbbYnip^@0^*y)UAUEWVOe@ABGYjOG*Z#QFG zW`m#LYd6`IFP_}8Vj-&O<}ljuD+#*-?ElrhJh<}z(dr6kTBr2?u*Ud**Rn3J9yuMq JrGpcY{{#7In#%wH diff --git a/crates/kernels/vulkan-and-cpu/src/elevations.rs b/crates/kernels/vulkan-and-cpu/src/elevations.rs index 485fad2..34094b2 100644 --- a/crates/kernels/vulkan-and-cpu/src/elevations.rs +++ b/crates/kernels/vulkan-and-cpu/src/elevations.rs @@ -69,7 +69,7 @@ impl Elevations { Direction::Backward => self.chocolate_box_id -= 1, } - let elevation = elevations[self.chocolate_box_id]; + let elevation = self.current_elevation(elevations); if Self::is_valid(elevation) { self.last_valid_elevation = elevation; @@ -79,6 +79,27 @@ impl Elevations { } } + #[inline] + #[must_use] + /// Return the current elevation. + pub fn current_elevation(&self, elevations: &[f32]) -> f32 { + elevations[self.chocolate_box_id] + } + + #[inline] + #[must_use] + /// Are we moving forward through the elevations? + pub const fn is_forward(&self) -> bool { + matches!(self.direction, crate::elevations::Direction::Forward) + } + + #[inline] + #[must_use] + /// Are we moving backward through the elevations? + pub const fn is_backward(&self) -> bool { + matches!(self.direction, crate::elevations::Direction::Backward) + } + /// Is the elevation valid. fn is_valid(elevation: f32) -> bool { let is_nodata = elevation <= NODATA; diff --git a/crates/kernels/vulkan-and-cpu/src/kernel.rs b/crates/kernels/vulkan-and-cpu/src/kernel.rs index b25cdad..8a8b87e 100644 --- a/crates/kernels/vulkan-and-cpu/src/kernel.rs +++ b/crates/kernels/vulkan-and-cpu/src/kernel.rs @@ -161,18 +161,26 @@ impl Kernel { // Save the longest line of sight for the given TVS ID. if buffers.constants.is_longest_lines() { - #[expect( - clippy::as_conversions, - reason = "This needs to run on the GPU where fallibility isn't possible" - )] - let current_longest = buffers.longest_lines[runner.rotated_tvs_id as usize]; + let current_longest = buffers.longest_lines[runner.original_tvs_id]; if runner.longest_line > current_longest.abs() { - if matches!( - runner.elevations.direction, - crate::elevations::Direction::Backward - ) { + if runner.elevations.is_backward() { runner.longest_line = -runner.longest_line; } + + buffers.longest_lines[runner.original_tvs_id] = runner.longest_line; + } + + #[expect( + clippy::float_cmp, + reason = "They are both from the same bits in memory" + )] + // For consistency with the CPU kernel we always want the first ever occurrence + // of a longest line to take precedence. However in this kernel we interleave the + // forward lines (0-179°) angles with the backward lines (180-359°). This means we + // have to have this awkward check here where a forward lines takes precedence over + // an equally long backward line. + let is_same_length_line = runner.longest_line == current_longest.abs(); + if runner.elevations.is_forward() && is_same_length_line { buffers.longest_lines[runner.original_tvs_id] = runner.longest_line; } } @@ -265,10 +273,26 @@ impl Kernel { buffers.constants.cosine, ) .anti_rotate_chocolate_id_to_dem_id(); + angle_to_debug.to_radians().cos() == buffers.constants.cosine && angle_to_debug.to_radians().sin() == buffers.constants.sine && original_pov_id == pov_id } + + #[cfg(not(target_arch = "spirv"))] + #[expect(dead_code, clippy::float_cmp, reason = "Used for debugging")] + /// Get the angle from the trigonometry values. + fn debug_angle(buffers: &Buffers) -> f32 { + for sector in 0..180u16 { + let angle = f32::from(sector) + ANGLE_SHIFT; + if angle.to_radians().cos() == buffers.constants.cosine + && angle.to_radians().sin() == buffers.constants.sine + { + return angle; + } + } + f32::NAN + } } #[expect( @@ -473,6 +497,17 @@ mod test { expect_tvs(&tvs_id, &lines, 1.0); } + #[gtest] + fn invocation_at_id6_46_degrees_forward() { + let tvs_id = TvsId::Forward(6); + let angle = 46.0; + let (surfaces, rings, lines) = invoke_default(&tvs_id, angle); + + expect_tvs(&tvs_id, &surfaces, 0.17453301); + expect_ring_data(&tvs_id, angle, &rings, vec![4]); + expect_tvs(&tvs_id, &lines, 4.0); + } + #[gtest] fn invocation_at_id5_0_degrees_backward() { let tvs_id = TvsId::Backward(5); diff --git a/crates/total-viewsheds/src/los_pack.rs b/crates/total-viewsheds/src/los_pack.rs index 01f185e..bde1384 100644 --- a/crates/total-viewsheds/src/los_pack.rs +++ b/crates/total-viewsheds/src/los_pack.rs @@ -48,12 +48,13 @@ impl LineOfSightPacked { (self.to_u32() >> 10u32) & U22_MAX } - #[cfg(test)] /// The angle of the line of sight from the point of view. pub fn angle(&self) -> Result { Ok((self.to_u32() & U10_MAX).try_into()?) } + /// Get the raw f32 value. It doesn't represent any useful data, it's just the f32 view of the + /// packed data. pub const fn as_f32(&self) -> f32 { self.0 } diff --git a/crates/total-viewsheds/src/output/viewshed.rs b/crates/total-viewsheds/src/output/viewshed.rs index 09fceca..5c91809 100644 --- a/crates/total-viewsheds/src/output/viewshed.rs +++ b/crates/total-viewsheds/src/output/viewshed.rs @@ -514,7 +514,7 @@ mod test { match backend { crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { - assert_viewshed(&viewshed, expected) + assert_viewshed(&viewshed, expected); } crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { panic!("We're not testing these.") @@ -572,7 +572,7 @@ mod test { match backend { crate::config::Backend::VulkanCPU | crate::config::Backend::CPU => { - assert_viewshed(&viewshed, expected) + assert_viewshed(&viewshed, expected); } crate::config::Backend::Vulkan | crate::config::Backend::Cuda => { panic!("We're not testing these.") diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index 310cc59..88c7af6 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -353,10 +353,10 @@ pub mod test { .map(|los| los.angle().unwrap()) .collect::>(), [ - 0, 0, 0, 0, - 0, 0, 12, 0, - 0, 180, 0, 0, - 0, 0, 0, 0 + 0, 0, 0, 0, + 0, 0, 12, 0, + 0, 46, 0, 0, + 0, 0, 0, 0 ] ); } @@ -398,34 +398,7 @@ pub mod test { #[gtest] fn longest_lines() { - let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem, Backend::CPU); - - #[rustfmt::skip] - expect_eq!( - compute.longest_lines.iter() - .map(|los| los.distance() as f32) - .collect::>(), - [ - 0.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 4.0, 0.0, - 0.0, 4.0, 4.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ] - ); - - #[rustfmt::skip] - expect_eq!( - compute.longest_lines.iter() - .map(|los| los.angle().unwrap()) - .collect::>(), - [ - 0, 0, 0, 0, - 0, 0, 12, 0, - 0, 46, 0, 0, - 0, 0, 0, 0 - ] - ); + super::longest_lines(crate::config::Backend::CPU); } #[gtest] diff --git a/crates/total-viewsheds/src/run/serial.rs b/crates/total-viewsheds/src/run/serial.rs index e4b37e5..5738522 100644 --- a/crates/total-viewsheds/src/run/serial.rs +++ b/crates/total-viewsheds/src/run/serial.rs @@ -161,18 +161,34 @@ impl super::compute::Compute<'_> { /// Check to see if this angle increases the current longest line of sight for the point. pub fn increment_longest_lines(&mut self, longest_lines: &[f32], sector: u16) -> Result<()> { - for (left, right) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { + for (existing, candidate) in self.longest_lines.iter_mut().zip(longest_lines.iter()) { + let angle = if *candidate >= 0.0 { + sector + } else { + sector + 180 + }; + #[expect( clippy::as_conversions, clippy::cast_sign_loss, clippy::cast_possible_truncation, reason = "Distances always fit in u32" )] - let current = right.abs() as u32; - if current > left.distance() { - let angle = if *right >= 0.0 { sector } else { sector + 180 }; - let packed = crate::los_pack::LineOfSightPacked::new(current, angle)?; - *left = packed; + let absolute = candidate.abs() as u32; + + if absolute > existing.distance() { + let packed = crate::los_pack::LineOfSightPacked::new(absolute, angle)?; + *existing = packed; + } + + // For consistency with the CPU kernel we always want the first ever occurrence + // of a longest line to take precedence. However in thie Vulkan kernel we interleave + // the forward lines (0-179°) angles with the backward lines (180-359°). This means + // we have to have this awkward check here where a forward line takes precedence over + // an equally long backward line. + if absolute == existing.distance() && candidate > &0.0 && existing.angle()? >= 180 { + let packed = crate::los_pack::LineOfSightPacked::new(absolute, sector)?; + *existing = packed; } } From 30a2e4ed476322ae7bfe5cd23c646ceef73a99e0 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sat, 10 Jan 2026 01:35:00 -0800 Subject: [PATCH 20/27] chore: remove mod.rs, delete unneeded script, fix constant --- Cargo.toml | 1 - crates/total-viewsheds/src/{cpu/mod.rs => cpu.rs} | 2 ++ crates/total-viewsheds/src/cpu/unrolled_los.rs | 4 ++-- scripts/apt_init.sh | 8 -------- 4 files changed, 4 insertions(+), 11 deletions(-) rename crates/total-viewsheds/src/{cpu/mod.rs => cpu.rs} (99%) delete mode 100644 scripts/apt_init.sh diff --git a/Cargo.toml b/Cargo.toml index 8553c6d..b8b169d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,6 @@ multiple_inherent_impl = "allow" upper_case_acronyms = "allow" struct_field_names = "allow" self_named_module_files = "allow" -mod_module_files = "allow" # I just personally prefer the `match` syntax for if-let matching. option_if_let_else = "allow" diff --git a/crates/total-viewsheds/src/cpu/mod.rs b/crates/total-viewsheds/src/cpu.rs similarity index 99% rename from crates/total-viewsheds/src/cpu/mod.rs rename to crates/total-viewsheds/src/cpu.rs index fe1fb80..d3708a8 100644 --- a/crates/total-viewsheds/src/cpu/mod.rs +++ b/crates/total-viewsheds/src/cpu.rs @@ -1,3 +1,5 @@ + + /// los contains all the traits necessary for implementing a line of sight algorithm mod los; diff --git a/crates/total-viewsheds/src/cpu/unrolled_los.rs b/crates/total-viewsheds/src/cpu/unrolled_los.rs index 0449d21..9ea9e4c 100644 --- a/crates/total-viewsheds/src/cpu/unrolled_los.rs +++ b/crates/total-viewsheds/src/cpu/unrolled_los.rs @@ -5,7 +5,7 @@ use std::simd::prelude::SimdFloat as _; use std::simd::{LaneCount, Simd, SupportedLaneCount}; /// `EARTH_RADIUS_SQUARED` is the radius of the earth in meters -const EARTH_RADIUS_SQUARED: f32 = 12_742_000.0; +const EARTH_DIAMETER: f32 = 12_742_000.0; /// `generate_distances` generates the distance from #[expect( @@ -19,7 +19,7 @@ fn generate_distances(max_los: usize, refraction: f32, scale: f32) -> (Vec, (1..=max_los) .map(|step| { let distance = (step as f32) * scale; - let adjustment = (distance * distance * adjusted_refraction) / EARTH_RADIUS_SQUARED; + let adjustment = (distance * distance * adjusted_refraction) / EARTH_DIAMETER; (distance, adjustment) }) diff --git a/scripts/apt_init.sh b/scripts/apt_init.sh deleted file mode 100644 index 583a86f..0000000 --- a/scripts/apt_init.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -sudo apt install -y git clang -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -source ~/.bashrc - -git clone https://github.com/AllTheLines/CacheTVS -cd CacheTVS && git checkout rberger/cpu-clean From 8ef3a49759143b20fce7b6d4629460313bfdb93b Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 11 Jan 2026 17:14:08 -0800 Subject: [PATCH 21/27] chore: update benchmark to use 48-wide Cardiff --- benchmarks/cardiff-viewshed.json | 2 +- benchmarks/cardiff.bt | Bin 0 -> 557824 bytes benchmarks/cardiff_50km_aeqd_100m.bt | Bin 508288 -> 0 bytes benchmarks/run.sh | 2 +- benchmarks/vulkan-gpu-cardiff.json | 2 +- crates/total-viewsheds/src/cpu.rs | 2 -- .../src/cpu/vector_intrinsics.rs | 6 +++--- 7 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 benchmarks/cardiff.bt delete mode 100644 benchmarks/cardiff_50km_aeqd_100m.bt diff --git a/benchmarks/cardiff-viewshed.json b/benchmarks/cardiff-viewshed.json index 586b472..e4e80c9 100644 --- a/benchmarks/cardiff-viewshed.json +++ b/benchmarks/cardiff-viewshed.json @@ -1 +1 @@ -{"type":"MultiPolygon","coordinates":[[[[-3.3094191503227353,51.537805687256515],[-3.3080861950594076,51.537463838364076],[-3.306727827211244,51.53947352597819],[-3.308051058273181,51.53982984856007],[-3.3094191503227353,51.537805687256515]]],[[[-3.306753259767571,51.537121974309194],[-3.3054203448873842,51.53678009509157],[-3.304081701264982,51.538760430152735],[-3.3027585322286264,51.53840406658388],[-3.301374398918508,51.54035555259508],[-3.302687438404083,51.540726281574734],[-3.3040816466048053,51.53876051115403],[-3.3040814266499603,51.53876083653272],[-3.3054046163772046,51.53911718872748],[-3.306753259767571,51.537121974309194]]],[[[-3.3029270496767653,51.518692137219354],[-3.2987401157244753,51.51802335260638],[-3.2979272999420255,51.519934165320386],[-3.302095047375707,51.52064847489421],[-3.3029270496767653,51.518692137219354]]],[[[-3.3027545746040157,51.53609629117254],[-3.301421719201514,51.53575436647194],[-3.3001122499938713,51.53769129298249],[-3.296142986493151,51.53662202133393],[-3.2948097779509293,51.53850132698207],[-3.293496868714028,51.538130513549575],[-3.2921217127488474,51.539980731992706],[-3.290819361872167,51.5395956565048],[-3.2894033481877227,51.54141661827218],[-3.2879366745638854,51.54322162260466],[-3.2853765744136023,51.54239514854331],[-3.283882536067869,51.54415660436867],[-3.2838825395909574,51.54415660546101],[-3.282339851678222,51.545900902540744],[-3.28074797221739,51.547628648631566],[-3.283235389872956,51.548537641591906],[-3.284852041569154,51.54678290474464],[-3.2873645639655407,51.54766460720754],[-3.2889559306360443,51.54586504553069],[-3.2902243346871054,51.54629212010233],[-3.2917766921582965,51.544461605653495],[-3.2930568523259134,51.54487478505424],[-3.294568961971407,51.543013606565005],[-3.295860475704014,51.54341276165879],[-3.29733105561984,51.541521284534184],[-3.298633524792727,51.54190629336518],[-3.3000613750456163,51.53998480726176],[-3.300061380770213,51.53998480889891],[-3.3000615246982865,51.539984605978],[-3.300061648970923,51.539984438745066],[-3.300061644566992,51.539984437380234],[-3.3014350999499125,51.5380480845858],[-3.30143510919627,51.538048087040394],[-3.3014353309152016,51.538047758921024],[-3.3014353816581825,51.53804768752723],[-3.3014353798966694,51.53804768698133],[-3.3027545746040157,51.53609629117254]]],[[[-3.301208722409343,51.5225946750359],[-3.2998262756281984,51.52234149135683],[-3.29889242941714,51.52426348014983],[-3.3002676332859204,51.5245316905347],[-3.301208722409343,51.5225946750359]]],[[[-3.3004294656913147,51.47112200993406],[-3.299876677384729,51.469191353618704],[-3.2984622968050146,51.46935727724915],[-3.299010605380308,51.47127249480664],[-3.3004294656913147,51.47112200993406]]],[[[-3.29786084119259,51.46744908188175],[-3.297205950202842,51.46554697406928],[-3.295801802604603,51.465743593967076],[-3.2964512325005937,51.46763000824523],[-3.292222719510826,51.46817377926274],[-3.2928047852994196,51.47002118087201],[-3.294219203863755,51.46985532906596],[-3.2947539688803182,51.47172384694776],[-3.2961728571934694,51.47157341331338],[-3.295633616122785,51.469689459915664],[-3.297048021635288,51.46952357314759],[-3.2964512702446824,51.46763011763434],[-3.2964513572780603,51.467630369859855],[-3.29786084119259,51.46744908188175]]],[[[-3.2943977831549955,51.46594058277743],[-3.2937014270047307,51.46407644155403],[-3.290904591469731,51.464500134586466],[-3.291589425816347,51.46633373216906],[-3.2943977831549955,51.46594058277743]]],[[[-3.291390352528371,51.470187016168005],[-3.2908133024632997,51.46835535395864],[-3.2908133094860372,51.46835535285139],[-3.2908132233687626,51.468355102814826],[-3.2908131918191854,51.4683550024669],[-3.290813188746984,51.4683550030199],[-3.290185092852138,51.46652990562812],[-3.2873766614104056,51.466922960950804],[-3.2867093778353538,51.465135914860944],[-3.2881078442375964,51.46492412961486],[-3.287384307828217,51.463128685485074],[-3.284599728582866,51.46358265342966],[-3.28383955205724,51.461825978481606],[-3.281068123361807,51.46231014994493],[-3.2818150958397605,51.46403655493796],[-3.280422760944378,51.46426348046717],[-3.2811153937417465,51.465982887602465],[-3.282513907975336,51.46577116965338],[-3.283164064246226,51.46751277691071],[-3.2845683147468008,51.467316312248684],[-3.2851750825832897,51.469080064954014],[-3.289403762704736,51.468536557200395],[-3.289975909501156,51.47035283412505],[-3.291390352528371,51.470187016168005]]],[[[-3.29064172489306,51.52265350386954],[-3.2892666324094573,51.52238518359205],[-3.2883329348954895,51.52419172062168],[-3.284230761283992,51.52334184161902],[-3.285141451499796,51.52158012653426],[-3.2837664232321413,51.52131174201648],[-3.28286321781917,51.5230588761151],[-3.282863219579885,51.52305887666129],[-3.2819115821666003,51.52479521054492],[-3.279193103324289,51.524198805208904],[-3.2782097777804067,51.525895310716265],[-3.2768590741964596,51.52558232141153],[-3.2758372643862335,51.52725321036185],[-3.274495497165674,51.526925536548774],[-3.2734363639178623,51.52857044469752],[-3.2707715613138504,51.52788591573298],[-3.2696859693225377,51.52949010491792],[-3.2683633368454683,51.52913335243156],[-3.2672428645065748,51.53071143598461],[-3.2698678503007117,51.53145364285105],[-3.2686824380524055,51.53304746378794],[-3.269984412591749,51.53343278812932],[-3.2687437216405684,51.535027357183914],[-3.267458175855701,51.53660857592273],[-3.268737889279492,51.537022019238314],[-3.2700346181893254,51.535426990342316],[-3.27003462391315,51.53542699225521],[-3.270034788166378,51.535426781391095],[-3.2700348683350082,51.535426682544546],[-3.2700348656925597,51.53542668145069],[-3.271286413517139,51.533818099089196],[-3.271286418800108,51.5338181007283],[-3.2712865584876716,51.533817912934154],[-3.2712866710473656,51.53381776823857],[-3.271286667084688,51.533817766872104],[-3.2724929263063762,51.53219579225835],[-3.2738054958825256,51.53256684490226],[-3.2725884421507354,51.53420339748822],[-3.2738904874865877,51.53458868004833],[-3.2751183223548668,51.532937565997074],[-3.273805729254254,51.532566530809014],[-3.2738056281111776,51.532566666714956],[-3.274976472697673,51.53091730432068],[-3.274976480181149,51.53091730650535],[-3.274976664858383,51.53091703361699],[-3.2749767125700986,51.53091696635294],[-3.2749767108091796,51.53091696580663],[-3.2761010334410265,51.5292552594935],[-3.2800985143983157,51.53028186086298],[-3.2789447471539908,51.53198730450525],[-3.281590354348405,51.53270055973821],[-3.28036867048651,51.53442188858964],[-3.2829940875132038,51.53516380239003],[-3.284236051273684,51.533413757138646],[-3.284236059637604,51.53341375932152],[-3.2842362608956757,51.533413461983635],[-3.284236305970159,51.5334133982853],[-3.284236304209027,51.53341339773911],[-3.2854287691503012,51.531650450898844],[-3.2867613826717603,51.531992560246074],[-3.2855589393284546,51.533770335890864],[-3.2868818401292423,51.53412689724825],[-3.2880942650784646,51.53233428598342],[-3.2867616294007402,51.531992194815146],[-3.2867613909804447,51.53199254706832],[-3.287914041853699,51.53020158683503],[-3.2852301782179234,51.52954649959239],[-3.286314194281958,51.527773291014135],[-3.286314199563788,51.52777329237825],[-3.286314310136183,51.52777310131491],[-3.2863144176853214,51.52777292561633],[-3.286314412843219,51.52777292425158],[-3.287348566845087,51.52598817930192],[-3.288707909001126,51.52628629951636],[-3.2897003720648517,51.52447498408071],[-3.28970035974289,51.524474981355254],[-3.29064172489306,51.52265350386954]],[[-3.2827638334243563,51.530965827371276],[-3.2814312780953006,51.53062367530687],[-3.2825461799365505,51.528891682521106],[-3.283888061424182,51.52921926716902],[-3.2827638334243563,51.530965827371276]],[[-3.2761012552451505,51.52925491523813],[-3.2747688086151756,51.52891269013807],[-3.2747685828092923,51.5289130236986],[-3.2758372394569806,51.52725325099],[-3.27583706889154,51.52725352989602],[-3.2771788465921095,51.527581189730896],[-3.2761012552451505,51.52925491523813]],[[-3.2736539943173266,51.53056027305275],[-3.2723312984980417,51.530203565091234],[-3.2734361556596867,51.5285707678098],[-3.2734361460348524,51.52857078290837],[-3.2747685797474206,51.52891302863987],[-3.2736539943173266,51.53056027305275]]],[[[-3.2873849446390686,51.520062103650176],[-3.286002651213735,51.51980875697753],[-3.2851412755963887,51.52158048994455],[-3.286516318291593,51.52184886163007],[-3.2873849446390686,51.520062103650176]]],[[[-3.2823914115684207,51.521043341095854],[-3.2810164160715094,51.52077492432191],[-3.2801285573888856,51.522492172328086],[-3.2814958791177147,51.522775532059164],[-3.2823914115684207,51.521043341095854]]],[[[-3.2680396831925735,51.51311436482631],[-3.265249056060226,51.51266769380948],[-3.2658645786577507,51.511114385682426],[-3.2644632983860014,51.51090626142737],[-3.263853765822226,51.51244433380263],[-3.261063233325782,51.51199756506659],[-3.260423443347411,51.51349871485534],[-3.2618122805111174,51.51373727782669],[-3.261123879626819,51.51524596029654],[-3.260393272749762,51.51674704392488],[-3.265892375893139,51.51782159440757],[-3.2666520078550154,51.516260491077844],[-3.266652009174778,51.51626049135053],[-3.266652034062208,51.51626043673523],[-3.2666521537488142,51.516260190819814],[-3.2666521471500007,51.51626018945641],[-3.267367797556608,51.51469136899998],[-3.26736780459397,51.51469137008851],[-3.267367911506347,51.514691118702096],[-3.267367944252315,51.51469104734492],[-3.2673679424921094,51.51469104679849],[-3.2680396831925735,51.51311436482631]]],[[[-3.2650473310878594,51.50454806461506],[-3.2636264040000524,51.50440143074512],[-3.2631989785724564,51.50593135810521],[-3.2617823346630095,51.505769248425246],[-3.2613167668855607,51.507279186160446],[-3.2641406601681333,51.5076342152336],[-3.2646155394582945,51.50609376814527],[-3.2646155456143466,51.50609376896073],[-3.264615605606256,51.50609355466305],[-3.2646156373718394,51.50609345121508],[-3.2646156347329236,51.50609345066967],[-3.2650473310878594,51.50454806461506]]],[[[-3.2642427150166373,51.520917443892735],[-3.2615246935339397,51.52032062797242],[-3.2606518416315335,51.52182553464595],[-3.263352827634872,51.52245187919668],[-3.2642427150166373,51.520917443892735]]],[[[-3.25977397473073,51.49046503033606],[-3.2597695143614946,51.48897446308675],[-3.2554505521288806,51.48900295568605],[-3.255454734024047,51.490446175263514],[-3.249695758463545,51.49042116937618],[-3.2496609834579524,51.49180173692147],[-3.251100372499474,51.491823703741105],[-3.2510262280907285,51.493219077029025],[-3.255342053394861,51.4933319087125],[-3.2554185610970126,51.491889497377436],[-3.256857964451723,51.49191139353024],[-3.2568944791674337,51.490452662746875],[-3.25977397473073,51.49046503033606]]],[[[-3.259122917614719,51.48153662350733],[-3.2588689797496144,51.48005450883925],[-3.2545792652579495,51.48036465218287],[-3.254825000570702,51.481799677356996],[-3.251959734596905,51.48197516156117],[-3.252160820762438,51.48338168963368],[-3.253595733065658,51.4833095817601],[-3.2537592937148005,51.48473346058398],[-3.2580695469448218,51.48456396617922],[-3.257900455990234,51.4830931525121],[-3.2579004608218853,51.48309315223224],[-3.257900436151322,51.48309298000202],[-3.2579004235259696,51.48309287002338],[-3.2579004204515742,51.483092870301206],[-3.2576902981494813,51.48162442399049],[-3.259122917614719,51.48153662350733]]],[[[-3.2370575251010716,51.44606842763524],[-3.235817030691038,51.444832154423],[-3.2346051209346167,51.44531625378936],[-3.2333445816188453,51.44410729685909],[-3.233344584249853,51.44410729575941],[-3.233344478228426,51.44410719766023],[-3.2333443378816793,51.44410706311163],[-3.233344334374127,51.44410706476072],[-3.232050026441311,51.44291178146702],[-3.2308659000909272,51.44342197746092],[-3.2321462660248956,51.4446044135816],[-3.233393253740388,51.445800403613],[-3.2346069668943076,51.44701005082663],[-3.2370575251010716,51.44606842763524]]],[[[-3.236551522548902,51.54213850645678],[-3.2353915179572375,51.54160499273779],[-3.2339256280284436,51.54282186082824],[-3.235070534260578,51.54336793420153],[-3.236551522548902,51.54213850645678]]],[[[-3.232159184172945,51.473382509965624],[-3.2316822707714614,51.472195465008745],[-3.230289436961422,51.4724217951612],[-3.2307602027262665,51.47359362730424],[-3.232159184172945,51.473382509965624]]],[[[-3.2316724497277467,51.43949327825806],[-3.230249519706913,51.43831674361517],[-3.2302497531912717,51.43831692965058],[-3.2313894120082867,51.437768713520754],[-3.2299183517281986,51.43659546758759],[-3.2287941888832434,51.437156020124284],[-3.230249449352911,51.438316687173945],[-3.229109767645987,51.43886489408686],[-3.2305176162869276,51.44002898281259],[-3.2316724497277467,51.43949327825806]]],[[[-3.2288966838746616,51.47264833113217],[-3.2283998382727814,51.4714969499732],[-3.227013545074338,51.47173838810773],[-3.2275038216069003,51.47287462544043],[-3.2288966838746616,51.47264833113217]]],[[[-3.2247676444348734,51.53845264061834],[-3.2224783465080047,51.53736028646684],[-3.22113305682639,51.53843708352781],[-3.2233914500163614,51.53955421834448],[-3.2247676444348734,51.53845264061834]]],[[[-3.222854675668419,51.47246282759268],[-3.2223537146621535,51.47137731614384],[-3.2209743482274087,51.471633756498335],[-3.2204507684120505,51.47056928472181],[-3.2218227352534448,51.4702978572826],[-3.2212615854145104,51.46922414022814],[-3.2212615871700576,51.469224139678076],[-3.2212615527801085,51.46922407744133],[-3.221261470315464,51.469223920337896],[-3.2212614659254077,51.46922392116446],[-3.220670425396369,51.468156480957575],[-3.2193145210504084,51.4684576365702],[-3.2187025383506174,51.467411728230914],[-3.2200497962174612,51.4670958487646],[-3.219399395521085,51.4660417189773],[-3.2180611946732083,51.466372232298276],[-3.2173910738134768,51.465340094975126],[-3.217391206397278,51.46534028934551],[-3.2200486540415056,51.4646501963539],[-3.2193300905911664,51.463596666649636],[-3.2193300914688447,51.46359666637462],[-3.2193300685666175,51.46359663430059],[-3.2193299434673417,51.46359645062379],[-3.219329938200689,51.4635964519996],[-3.2185822275697196,51.46255111337318],[-3.2211993257002156,51.46180348231748],[-3.220401074545805,51.46073784958409],[-3.2204010767395497,51.46073784875937],[-3.2204010106940517,51.46073776405616],[-3.2204009102936184,51.46073763000784],[-3.220400906344048,51.46073763110831],[-3.2195732015574703,51.45968105982043],[-3.220859989523671,51.459278941450904],[-3.2199913153217143,51.458217389319415],[-3.2199913157602102,51.45821738904475],[-3.2199912928712595,51.458217362182474],[-3.2199911365933724,51.45821717085166],[-3.2199911313285248,51.45821717277611],[-3.2190931463029275,51.45716544752231],[-3.2190931484965284,51.457165446697616],[-3.2190930807207927,51.45716537077257],[-3.2190929742041154,51.4571652457799],[-3.2190929706944695,51.45716524715427],[-3.218165592224435,51.456123251075915],[-3.216914321737841,51.45656686209767],[-3.2178294786124226,51.457595157202086],[-3.2165659627917944,51.45802505360353],[-3.2156632135811702,51.457010668875],[-3.2156632140196777,51.45701066860035],[-3.2156631990592617,51.457010652702884],[-3.21566302743244,51.45701045945832],[-3.215663022167555,51.457010461382566],[-3.2147321272683524,51.45600608124525],[-3.2147321316556083,51.45600607959602],[-3.2147319728262755,51.45600591486708],[-3.214731934545449,51.45600587347801],[-3.214731933668439,51.456005874027284],[-3.2137731508348693,51.45501177438343],[-3.213773153905464,51.45501177300956],[-3.2137730373271616,51.45501165652308],[-3.2137729664955623,51.45501158334028],[-3.2137729647410156,51.45501158416453],[-3.2127863959058396,51.454027878365395],[-3.2115739995958883,51.45451173859882],[-3.2105740652820556,51.45355226369828],[-3.2105740674756498,51.45355226287375],[-3.210573986990637,51.453552188599026],[-3.2105738717528265,51.4535520781429],[-3.2105738686817156,51.45355207924237],[-3.2095473296508286,51.45260364650744],[-3.209547330089328,51.45260364623282],[-3.209547305023036,51.45260362403315],[-3.2095471181116992,51.452603451363196],[-3.209547113286091,51.45260345328685],[-3.2084942932424547,51.45166636049859],[-3.2084942954354663,51.4516663593998],[-3.2084942022149994,51.45166627937266],[-3.208494076887619,51.45166616782461],[-3.2084940738170857,51.45166616919835],[-3.207415265128915,51.45074067438116],[-3.208570642579866,51.45020519676134],[-3.2074506081759795,51.44927872602025],[-3.2051701222608044,51.45037468550119],[-3.2040558523988056,51.44948559732072],[-3.204055854152838,51.4494855962223],[-3.204055766673815,51.44948552880538],[-3.20405564138412,51.449485429047364],[-3.2040556387525916,51.44948543042068],[-3.2029165104246995,51.44860843380479],[-3.2018075418488006,51.44918090731601],[-3.200660320628291,51.4483284658586],[-3.197381743049896,51.45008180917558],[-3.1984807004529907,51.45089843175007],[-3.1995897504946837,51.4503259950865],[-3.2006812878258133,51.45116639889873],[-3.2017492488630404,51.45201858720873],[-3.2027933636224457,51.45288234825854],[-3.2038132692603156,51.453757386688366],[-3.2048086270034353,51.45464341452549],[-3.2057788895090984,51.4555399379428],[-3.2045800821569927,51.45603687084257],[-3.205511829670372,51.45693103063935],[-3.2067243519714075,51.45644723795475],[-3.207644067466212,51.457364406267395],[-3.208538278301718,51.45829168441316],[-3.211015889584593,51.457377483448994],[-3.211908992828916,51.45834117369042],[-3.210657606319705,51.45878471585124],[-3.21151175937616,51.45974461375354],[-3.212338945556208,51.46071360703366],[-3.2131388555361733,51.46169132701596],[-3.2139115170837216,51.462677812359765],[-3.2152094708424697,51.462289849028565],[-3.2159649126518493,51.46329848661203],[-3.2146562927160245,51.46367225327274],[-3.215373345206979,51.46467485039081],[-3.212735517755867,51.46539370727204],[-3.2127356335840966,51.46539387697372],[-3.2120389922144073,51.46441974133618],[-3.210730312088302,51.4647934627378],[-3.2100175145277117,51.46384161874535],[-3.2100175167218024,51.46384161792083],[-3.2100174542129487,51.463841537872256],[-3.2100173679242876,51.4638414227312],[-3.21001736441281,51.46384142355671],[-3.2092781104625048,51.46289748858387],[-3.209278113095173,51.46289748748475],[-3.2092780329899298,51.46289738934505],[-3.20927796872408,51.46289730765157],[-3.209277966529497,51.462897308201796],[-3.2085124823693305,51.461961570697454],[-3.2085124832470426,51.46196157042251],[-3.2085124612437537,51.461961544928855],[-3.2085123248072485,51.461961378255225],[-3.2085123204186883,51.46196137962994],[-3.2077206895583705,51.46103394682324],[-3.2064569838268913,51.461463734037046],[-3.2072367811760767,51.46237733312905],[-3.2059612226921597,51.46279327134923],[-3.2067040388077457,51.46370136132526],[-3.2074213486188863,51.464617342398],[-3.2081130167031864,51.46554104177361],[-3.209421736964484,51.465167353471074],[-3.210097712681912,51.46611266785561],[-3.210747237446728,51.46706525839104],[-3.2120760662260506,51.46672029605771],[-3.2127083397029077,51.467694314704474],[-3.2140466139486192,51.46736386638708],[-3.214660538082621,51.468359066101684],[-3.213313213274309,51.468674885496526],[-3.213890847178231,51.469662289610405],[-3.215246819429063,51.46936120088846],[-3.21580492539501,51.470369376546294],[-3.217169115135903,51.470083091223415],[-3.2177067095371283,51.47111191454889],[-3.218215590124532,51.47214662798159],[-3.218695548758304,51.47318683378122],[-3.2191463568456102,51.474232043139835],[-3.220539302233551,51.47400584814786],[-3.2200819540336925,51.47294555024783],[-3.222854675668419,51.47246282759268]],[[-3.216062311562849,51.46568510555824],[-3.215373471156099,51.46467502639076],[-3.2153734922945465,51.464675055998285],[-3.216692378677819,51.46431560773776],[-3.2173910628014717,51.465340078800416],[-3.216062311562849,51.46568510555824]],[[-3.212254471766751,51.45692016085491],[-3.211321634897796,51.4559529091123],[-3.212547405688784,51.45548234817348],[-3.2134932148711957,51.456463023865126],[-3.212254471766751,51.45692016085491]],[[-3.212075936284566,51.4667200959191],[-3.2120759446536695,51.46672010880472],[-3.2114167052945928,51.465753312193975],[-3.2127356551640878,51.465393908501454],[-3.2134047476453524,51.4663751141185],[-3.212075936284566,51.4667200959191]],[[-3.207936660807366,51.45596324246514],[-3.2069778616968074,51.45504316843305],[-3.2081766222574863,51.45454621257696],[-3.209149132704735,51.455479420237225],[-3.207936660807366,51.45596324246514]]],[[[-3.208289825319247,51.554267999527745],[-3.2073714476828976,51.553575123700384],[-3.205573920546337,51.55448466278194],[-3.2037508966445603,51.555374593977966],[-3.2037508900497405,51.55537459699974],[-3.2019038241684927,51.55624421623884],[-3.201903821525066,51.556244214320564],[-3.200032259257517,51.55709374103494],[-3.1991937316713392,51.5563625604312],[-3.1973188294319215,51.55718271088766],[-3.198136740330676,51.55792291972302],[-3.2000320596373513,51.55709383140843],[-3.2000318740878853,51.557093915738236],[-3.200870426369013,51.55782509437725],[-3.202762372428021,51.5569663084055],[-3.2027623794789872,51.55696631443516],[-3.204629893505496,51.55608705991464],[-3.2046299036170733,51.55608705497033],[-3.204630279955811,51.5560868777894],[-3.2046302751082583,51.556086873678375],[-3.206472440250878,51.55518759018189],[-3.206472444657491,51.555187593744584],[-3.2064727589734883,51.55518743470518],[-3.2064728152444806,51.555187407235834],[-3.206472814802967,51.55518740641326],[-3.208289825319247,51.554267999527745]]],[[[-3.183467080204539,51.48945455034483],[-3.1834477899852542,51.48879580715368],[-3.183447791742372,51.48879580687848],[-3.183447788596776,51.48879575394086],[-3.1834477862907478,51.48879567137878],[-3.183447784093897,51.48879567137991],[-3.1834100824159663,51.488137238499355],[-3.1819717961207408,51.488177177903594],[-3.1820085843855246,51.48882000997746],[-3.182027396075544,51.48946312586288],[-3.183467080204539,51.48945455034483]]],[[[-3.1709129060121772,51.44279030937552],[-3.169592258164813,51.442275335505],[-3.1688415361787046,51.4430420041256],[-3.1701408967998552,51.44354868014074],[-3.1709129060121772,51.44279030937552]]],[[[-3.166434163250966,51.50390229413905],[-3.1651563023321563,51.50348773610735],[-3.165156273355781,51.503487770130455],[-3.165532446384281,51.50302635234888],[-3.1642432199462114,51.50262576573504],[-3.163878464163355,51.50307316385167],[-3.1626006505033195,51.50265857819471],[-3.162235211656309,51.50308807389396],[-3.160969203851051,51.502659616774714],[-3.160603964464413,51.50307134392295],[-3.159350144536286,51.5026291440493],[-3.1593501225801073,51.502629167919835],[-3.1597031433823073,51.50223122717605],[-3.1609691274478724,51.502659701556865],[-3.1613228591538127,51.50224397831486],[-3.160045090554605,51.50182936448665],[-3.1603756121715394,51.50142399890976],[-3.1603756134904657,51.50142399945793],[-3.160375655198651,51.501423946231235],[-3.160375675833887,51.50142392071513],[-3.160375674954682,51.501423920441106],[-3.160694846761396,51.50101496262758],[-3.160694806373109,51.50101501667688],[-3.1619949605156528,51.501401542126125],[-3.1623133275877082,51.50097483185002],[-3.161002570205086,51.50060253339171],[-3.1610025517670723,51.500602557810026],[-3.1612986901227367,51.50018683914412],[-3.1599777525543384,51.49982886366062],[-3.159977745091897,51.499828874360524],[-3.160252396223698,51.49942445836995],[-3.1589216798690414,51.49908091382819],[-3.1586568356827476,51.49947087300566],[-3.1573359395086773,51.49911286772826],[-3.157590983963257,51.49873735444401],[-3.157590981326046,51.498737353896196],[-3.157835480334659,51.498359122969966],[-3.157835438198772,51.498359191830794],[-3.1591755267681343,51.49868820403342],[-3.1594184468420106,51.49829263120897],[-3.158069370469418,51.497978272684165],[-3.1580693489628917,51.4979783078005],[-3.158292565489775,51.497594941647286],[-3.156934933168367,51.497295313567996],[-3.156720312218422,51.4976638983523],[-3.1553712738479014,51.497349509036155],[-3.15515531851302,51.49770112171517],[-3.156495367168646,51.49803016402598],[-3.1562603054296194,51.49839377912155],[-3.1549296513012797,51.49805018977922],[-3.15469419959484,51.498396826202324],[-3.1544490843762025,51.49874084930951],[-3.1541944183059836,51.49908210266194],[-3.1528943943930137,51.49869549362009],[-3.1526411848288434,51.49901986332461],[-3.1523789158885167,51.49934145446833],[-3.1536565413963866,51.499756154448114],[-3.153373573942841,51.50008864684886],[-3.153373574821977,51.500088647122936],[-3.1530813878576,51.50041796154666],[-3.152779949184805,51.50074413359161],[-3.1540210914290983,51.50119999467993],[-3.1536976886336503,51.501536237940755],[-3.1549259273173056,51.50200553958531],[-3.1545798750667866,51.5023515058572],[-3.1542242065214134,51.5026936376185],[-3.153859020381127,51.503031842044486],[-3.152671802606281,51.50252305736245],[-3.152311554921884,51.50284442603223],[-3.1519423736747485,51.503161817668484],[-3.1515644520578725,51.503475068660116],[-3.1511776898356447,51.503784261236184],[-3.1534326576530174,51.50490274833296],[-3.153850270782477,51.50456887970895],[-3.1561362780308104,51.50566258426946],[-3.156574721512718,51.50529913760247],[-3.157732880478176,51.505833435792034],[-3.1581759316477593,51.50545249543023],[-3.1570030084484584,51.50493089917231],[-3.157420752422525,51.504558204666424],[-3.157420752862251,51.504558204940594],[-3.1574207660386127,51.504558192593414],[-3.1574208393895637,51.504558127289485],[-3.1574208376308626,51.504558126467124],[-3.15782809368464,51.50418093291619],[-3.1578280950036057,51.504180933464404],[-3.157828137605511,51.504180892307375],[-3.157828172742291,51.50418085993004],[-3.1578281718628296,51.504180859381705],[-3.158224813646941,51.50379928515358],[-3.1594398506557373,51.504281846966585],[-3.159839158960008,51.50388259604361],[-3.1598391374418915,51.50388261854263],[-3.16106750272274,51.50435185596321],[-3.1614685615932165,51.50393480288796],[-3.1602272663634405,51.503479023013085],[-3.160603948656817,51.50307136175725],[-3.1606038946475215,51.50307142266825],[-3.1618577370913536,51.503513611850586],[-3.1622351370165704,51.50308816306509],[-3.1635011690107766,51.50351661032978],[-3.16387844528514,51.5030731868991],[-3.1638783895288025,51.503073255218204],[-3.165156222866622,51.503487829396505],[-3.1647672251892716,51.50394504417277],[-3.166033305112367,51.504373464319485],[-3.166434163250966,51.50390229413905]],[[-3.160694869589416,51.50101493189911],[-3.1593947361296593,51.50062839503197],[-3.1593947159341558,51.50062842109636],[-3.159691811793236,51.50023025071678],[-3.159691778869444,51.50023029708311],[-3.161002511379973,51.50060261240801],[-3.160694869589416,51.50101493189911]],[[-3.159839212097122,51.50388254116775],[-3.15861086941466,51.50341329359112],[-3.1589859950204313,51.50302322969345],[-3.157744749322487,51.5025674234776],[-3.158096281250765,51.50218700317485],[-3.159350075154566,51.502629219227856],[-3.1589859203684076,51.50302331118223],[-3.160227185561064,51.50347910615037],[-3.159839212097122,51.50388254116775]],[[-3.1596918337425755,51.50023021998876],[-3.158381119519478,51.49985789246412],[-3.1586568312929497,51.4994708793158],[-3.1586567812503934,51.49947095284235],[-3.159977693731109,51.499828945967984],[-3.1596918337425755,51.50023021998876]],[[-3.1590865393839604,51.501023277042925],[-3.1577974255414327,51.50062261945008],[-3.1580945627603856,51.50024192219617],[-3.159394672469146,51.500628476243335],[-3.1590865393839604,51.501023277042925]],[[-3.157835482968498,51.49835911912904],[-3.156495411942599,51.498030094616276],[-3.1567202915901227,51.49766393374244],[-3.1567202678894732,51.49766397434508],[-3.1580693221891796,51.49797835114729],[-3.157835482968498,51.49835911912904]],[[-3.1546572437160356,51.50388767243048],[-3.153484401741737,51.503366041124806],[-3.153858954057053,51.50303190350421],[-3.1538589443940115,51.5030319125585],[-3.1550461877345017,51.5035406887469],[-3.1546572437160356,51.50388767243048]]],[[[-3.164138272342943,51.5094901021202],[-3.1629950610630875,51.50894333664993],[-3.16245363266592,51.50937626048888],[-3.1635813788297074,51.50993540069186],[-3.164138272342943,51.5094901021202]]],[[[-3.162633792059454,51.50616368135762],[-3.16023093025833,51.50517229547427],[-3.1597954290310963,51.50557566794764],[-3.1593487880733497,51.505974160859466],[-3.1605217608862444,51.506495736037934],[-3.1609827988750316,51.50608438876556],[-3.1621702004333887,51.50659309258112],[-3.162633792059454,51.50616368135762]]],[[[-3.1618518771507778,51.50839655998764],[-3.1584224900525455,51.506756163127605],[-3.157942924091971,51.50713959155519],[-3.1613259141111154,51.508817109665245],[-3.1618518771507778,51.50839655998764]]],[[[-3.1388075208722164,51.48919486740133],[-3.138788180364783,51.48902273111593],[-3.1387881808041564,51.489022731115874],[-3.138788178162143,51.489022714384134],[-3.1387881763990624,51.48902269820088],[-3.138788175959691,51.489022698200934],[-3.138764031172286,51.48885083410666],[-3.1387640316116547,51.48885083410661],[-3.1387640294107335,51.48885082231215],[-3.1387640263270034,51.488850798723064],[-3.138764025448259,51.488850798723185],[-3.1387350746717932,51.48867919118244],[-3.1373046366256108,51.488781124663205],[-3.137330954601973,51.48893715201009],[-3.137352902386896,51.48909341275952],[-3.137370482576885,51.48924992199994],[-3.1388075208722164,51.48919486740133]]],[[[-3.13650599966056,51.41567619371154],[-3.13443511592752,51.41554031421568],[-3.1344351163654345,51.41554031119834],[-3.13443482727957,51.41554029531716],[-3.1344346904130465,51.41554028627861],[-3.13443468997479,51.41554028792446],[-3.1323603401404996,51.41542699195801],[-3.132360339264401,51.41542699799267],[-3.1302835796686526,51.41533633880269],[-3.130283579668086,51.41533633523679],[-3.1302832774259413,51.41533632538078],[-3.1302831528440485,51.41533631990253],[-3.130283152405601,51.415336321274054],[-3.12820418484155,51.415268302831066],[-3.1282041852795914,51.415268297345044],[-3.1261231558186378,51.41522292941051],[-3.1261231558185445,51.41522292803901],[-3.126123041765704,51.41522292694485],[-3.126122784707925,51.41522292119141],[-3.1261227847081123,51.415222923934394],[-3.1240412369995463,51.41520024176315],[-3.124041236999509,51.41520024011736],[-3.1240411102255363,51.41520024011848],[-3.1240408088631115,51.41520023682956],[-3.124040808863186,51.41520024012116],[-3.121959002573615,51.415200240121145],[-3.121959002135026,51.41520023682954],[-3.1219587007726006,51.41520024011846],[-3.121958573998628,51.41520024011735],[-3.1219585739985907,51.41520024176313],[-3.119877083316425,51.41522292366157],[-3.119877083316556,51.41522292174148],[-3.1198769087278304,51.41522292557701],[-3.1198766547409087,51.41522292831325],[-3.119876655179386,51.41522293105625],[-3.1177960538564338,51.415268289134985],[-3.117796053417801,51.41526828886065],[-3.1177960288524718,51.415268289682466],[-3.117795682745013,51.4152682970732],[-3.1177956831832416,51.415268300913404],[-3.1157166585924867,51.415336321548224],[-3.115716658154082,51.415336319902394],[-3.1157165217281326,51.41533632592852],[-3.1157162308913366,51.415336335510936],[-3.115716231329478,51.41533633880257],[-3.113639472172393,51.41542699799253],[-3.113639471296237,51.41542699223218],[-3.111565121023332,51.41554028792426],[-3.1115651210236748,51.415540286552776],[-3.111564996440045,51.415540294769606],[-3.1115646946326883,51.41554031119814],[-3.111564695509201,51.415540314489824],[-3.109494238170561,51.41567616578192],[-3.1094942372941947,51.415676162490215],[-3.1094939284643934,51.4156761860444],[-3.109493811337556,51.4156761937113],[-3.109493811775821,51.41567619508285],[-3.10742739174386,51.41583458848453],[-3.10742739130547,51.415834587661564],[-3.1074273206774943,51.41583459368676],[-3.107427022812511,51.41583461668838],[-3.107427023688734,51.41583461998009],[-3.1053648985300346,51.416015541205695],[-3.1053648998442593,51.41601554586899],[-3.103308599353838,51.416218859903424],[-3.1033085989161058,51.41621885770894],[-3.1033084058903486,51.41621887907189],[-3.103308176015389,51.41621890180014],[-3.103308176891675,51.416218904268995],[-3.1012578450925345,51.41644459113853],[-3.101257843340566,51.41644458537792],[-3.099213260594749,51.41669267937018],[-3.099213262346758,51.41669268458223],[-3.0971766728242303,51.416962913288366],[-3.0971766723863206,51.41696291191678],[-3.097176535506682,51.416962931636185],[-3.097176309569054,51.41696296148506],[-3.0971763104450294,51.416962963953964],[-3.0951475512013142,51.417255341458706],[-3.095147549011063,51.41725533624648],[-3.0931264540445844,51.41756989418852],[-3.0931264562348,51.41756989912646],[-3.091115248482649,51.41790629096718],[-3.091115246292441,51.41790628630348],[-3.089113288669101,51.41826461440469],[-3.0891132869167603,51.418264611112576],[-3.0891130004092875,51.41826466588967],[-3.0891128784362487,51.41826468779838],[-3.0891128788739275,51.418264689170016],[-3.087121551241073,51.41864470645176],[-3.0871215508028107,51.41864470590303],[-3.087121488936624,51.418644718501874],[-3.087121194965684,51.41864477436901],[-3.087121196717895,51.418644777661136],[-3.085140745295395,51.41904643427197],[-3.0851407444191303,51.41904643290019],[-3.0851406176120895,51.41904646001489],[-3.0851403394289365,51.419046516430754],[-3.085140341181024,51.41904651972292],[-3.0831714185493153,51.41946968147689],[-3.083171418111567,51.41946968037955],[-3.0831713163119536,51.41946970338611],[-3.0831710139876343,51.41946976829238],[-3.0831710161782957,51.41946977158471],[-3.0812141701312217,51.41991432075782],[-3.081214168816845,51.41991431883725],[-3.0812139941722503,51.419914360742816],[-3.0812137664350665,51.41991441222994],[-3.081213768187408,51.41991441497357],[-3.0792695882873673,51.42038021715786],[-3.0792695865351276,51.42038021441421],[-3.079269354399499,51.420380273027696],[-3.0792691902828397,51.42038031246562],[-3.0792691915971457,51.4203803143862],[-3.0773382174683124,51.420867241223974],[-3.0773382152782744,51.42086723765723],[-3.0773379032668875,51.420867320374136],[-3.077337870793519,51.42086732859047],[-3.077337871231959,51.420867328864944],[-3.075420742202621,51.421375221074925],[-3.0754207413263153,51.421375219977364],[-3.075420650045374,51.421375245450164],[-3.0754203485595593,51.42137532514895],[-3.0754203511884795,51.42137532844161],[-3.0735177001072627,51.42190401662607],[-3.0735176979165844,51.42190401388216],[-3.0735174547843247,51.42190408482308],[-3.0735173060106775,51.421904126179506],[-3.073517307325082,51.421904127825854],[-3.071629656989793,51.42245346589075],[-3.0716296552376243,51.42245346342128],[-3.0716294252627674,51.42245353326686],[-3.0716292712168247,51.42245357818447],[-3.071629272531182,51.42245357983084],[-3.0697571976239577,51.42302340143559],[-3.06975719587156,51.42302339924041],[-3.0697570040718047,51.42302346004776],[-3.069756810519013,51.423023519208535],[-3.0697568122714194,51.42302352140373],[-3.067900832718697,51.423613668167086],[-3.0679008300901858,51.42361366487426],[-3.0679005206517576,51.42361376731678],[-3.0679005017784786,51.4236137733425],[-3.0679005022169,51.423613773617014],[-3.0660612284655304,51.42422405403865],[-3.0660612267132565,51.424224051843396],[-3.0660610458699518,51.424224114570116],[-3.0660608505454823,51.42422417920991],[-3.066060852736508,51.42422418140536],[-3.0642388962319416,51.42485439084871],[-3.0642388957935367,51.42485439057418],[-3.064238875601233,51.424854397970144],[-3.0642385204895244,51.42485452067827],[-3.064238523994285,51.42485452479451],[-3.0624343896357624,51.42550448822344],[-3.062434386568776,51.42550448493026],[-3.0624340915736408,51.42550459559478],[-3.062434016509297,51.42550462271164],[-3.062434017385732,51.42550462353499],[-3.0606481943793775,51.42617416565365],[-3.0606481939409824,51.426174165379116],[-3.0606481610161174,51.42617417797938],[-3.060647881815891,51.426174282887516],[-3.060647884883162,51.42617428590644],[-3.0588809722993573,51.426863184321796],[-3.0588809709845655,51.426863183223894],[-3.058880863862599,51.42686322650459],[-3.058880607038209,51.42686332675766],[-3.0588806101057955,51.42686332950233],[-3.057133201879655,51.427571351146085],[-3.057133196621373,51.42757134620574],[-3.055405406062823,51.42829845059667],[-3.0554054056248448,51.42829845004781],[-3.055405377524095,51.42829846237508],[-3.055405049983479,51.42829860015874],[-3.0554050539273208,51.42829860372692],[-3.0536981219458603,51.4290442685443],[-3.0536981197543582,51.42904426689719],[-3.053697975730281,51.429044332095295],[-3.053697770237284,51.42904442194394],[-3.0536977728663346,51.4290444244142],[-3.052011814772076,51.429808595225545],[-3.0520118108279424,51.42980859193156],[-3.0520115293492394,51.429808724247636],[-3.0520115148585054,51.42980873082204],[-3.0520115152968796,51.429808731096614],[-3.050347093933379,51.43059115432719],[-3.0503470934950037,51.43059115405263],[-3.0503470741725054,51.43059116336681],[-3.0503467492091985,51.430591316224366],[-3.050346753591653,51.430591319792974],[-3.048704416134515,51.43139173803687],[-3.0487044117521105,51.4313917344682],[-3.048704111792553,51.43139188596554],[-3.048704081490001,51.431391900758484],[-3.0487040819279283,51.431391901307364],[-3.047084281274882,51.432210092775435],[-3.0470842808365153,51.43221009250085],[-3.047084268977728,51.43221009880205],[-3.0470839488045858,51.43221026043121],[-3.0470839536257732,51.432210264000226],[-3.0454871906749075,51.43304597649999],[-3.0454871876067777,51.43304597430357],[-3.045486995659463,51.433046078410314],[-3.0454868594999067,51.43304614963804],[-3.0454868616912947,51.43304615128529],[-3.0439135751078394,51.43389915673432],[-3.0439135689716164,51.43389915234139],[-3.0423636831562546,51.43476950566822],[-3.042363691923148,51.43476951143454],[-3.0408389135808593,51.43565625361377],[-3.040838906567463,51.43565624894578],[-3.03933875313916,51.43655965463115],[-3.039338752700783,51.436559654356536],[-3.039338737322833,51.43655966394602],[-3.0393384429566113,51.43655984120739],[-3.0393384482170123,51.43655984450273],[-3.037863990252787,51.437479269707225],[-3.037863988937686,51.43747926888337],[-3.0378639269815064,51.437479308886026],[-3.0378636892729003,51.437479457109134],[-3.037863693656571,51.43747945985531],[-3.0364150322272563,51.438414837590926],[-3.036415025212861,51.43841483347125],[-3.034992395482634,51.439366020038264],[-3.034992392851892,51.4393660186648],[-3.0349922750713088,51.439366100043145],[-3.0349921028023066,51.439366215393655],[-3.034992106309785,51.43936621731638],[-3.0335964849396952,51.44033255882307],[-3.033596481871101,51.440332556900636],[-3.03359632847803,51.4403326670518],[-3.033596195309917,51.440332759114646],[-3.0335961979401302,51.44033276076246],[-3.032227717561739,51.44131415924786],[-3.032227715369887,51.441314157874665],[-3.032227611633333,51.44131423487232],[-3.0322274340591275,51.44131436228377],[-3.0322274380055445,51.44131436420692],[-3.0308865104379428,51.44231052606744],[-3.0308865051763703,51.442310523320316],[-3.0308862682289366,51.44231070581712],[-3.030886235260541,51.442310730203815],[-3.0308862361372757,51.44231073075309],[-3.0295732346590807,51.44332138100628],[-3.0295732333434047,51.44332138045663],[-3.0295731898184597,51.44332141498358],[-3.0295730020983385,51.443321559663715],[-3.029573006483199,51.44332156186161],[-3.0282883708975916,51.44434636523035],[-3.028288368266775,51.44434636385673],[-3.0282882605406862,51.44434645319108],[-3.028288108415491,51.444346574308206],[-3.0282881119236333,51.444346575956835],[-3.0270322733986266,51.4453851889261],[-3.0270322716445377,51.44538518810176],[-3.027032211839372,51.445385239346656],[-3.0270320130875197,51.44538540376316],[-3.0270320179114094,51.445385405961495],[-3.0258053220272494,51.446437541722936],[-3.025805318957423,51.44643754034888],[-3.0258051949350686,51.44643765078842],[-3.025805069602242,51.446437758209576],[-3.0258050726720733,51.44643775958362],[-3.024607891964129,51.44750310199446],[-3.024607886701177,51.44750309979565],[-3.024607693168426,51.4475032784759],[-3.024607645228337,51.44750332122624],[-3.024607646544076,51.44750332177595],[-3.0234401064948733,51.44858176733241],[-3.023440112196302,51.44858176980594],[-3.022303021974476,51.44967257728374],[-3.0223030167113727,51.44967257508483],[-3.0223028372082568,51.44967275377327],[-3.0223027866165015,51.44967280255495],[-3.022302788371271,51.44967280310507],[-3.0211963129044945,51.45077580483063],[-3.0211963111503044,51.450775804006206],[-3.0211962574672553,51.45077585991648],[-3.021196086755109,51.450776029833285],[-3.021196091579884,51.45077603175757],[-3.0201205406380534,51.45189092082567],[-3.0201205331809535,51.45189091807613],[-3.0190758064994534,51.45301781867827],[-3.0190758130792403,51.45301782115279],[-3.018063063034894,51.4541554958575],[-3.0180630590867077,51.45415549448248],[-3.018062949471456,51.45415562303027],[-3.0180628543947496,51.45415572964723],[-3.0180628574654915,51.454155730747175],[-3.017082017535706,51.45530423544836],[-3.017082011393474,51.455304233522725],[-3.017081838798349,51.45530444430217],[-3.0170818154653105,51.45530447171092],[-3.0170818163427677,51.45530447198601],[-3.016133159876321,51.45646348899236],[-3.016133158121364,51.45646348844216],[-3.016133115845463,51.45646354244038],[-3.0161329648169986,51.45646372690543],[-3.016132970081874,51.456463728556024],[-3.0152167886123955,51.45763290451676],[-3.0152167846633477,51.457632903415934],[-3.0152166868827845,51.45763303361769],[-3.0152165996838503,51.457633145176885],[-3.01521660319383,51.45763314627732],[-3.014333152278975,51.45881215851205],[-3.01433314657481,51.45881215686097],[-3.014333006922703,51.45881235175752],[-3.0143329945886785,51.45881236847828],[-3.014332995466185,51.45881236875338],[-3.013482397290035,51.460001071360125],[-3.0134824047493765,51.46000107356148],[-3.0126652935886375,51.461198582686706],[-3.012665285690043,51.46119858048488],[-3.011881551328799,51.462405060199195],[-3.0118815486961035,51.462405059373815],[-3.011881496235407,51.462405144082176],[-3.011881390451102,51.46240530718922],[-3.0118813952780497,51.46240530856529],[-3.0111316018952574,51.46361989273845],[-3.0111315983842464,51.463619891912224],[-3.0111315287115996,51.463620010616744],[-3.011131447148972,51.46362014302483],[-3.011131451098441,51.46362014412579],[-3.010415649083572,51.464842744304235],[-3.010415648205968,51.46484274402909],[-3.0104156340913932,51.46484276925095],[-3.010415520755245,51.46484296307073],[-3.0104155264606796,51.4648429644477],[-3.0097339563004,51.46607317935944],[-3.0097339505948284,51.46607317798244],[-3.0097338486672673,51.46607337318403],[-3.0097338164659084,51.46607343102978],[-3.009733818221151,51.466073431580064],[-3.0090867073315497,51.46731085113855],[-3.0090867055762582,51.46731085058824],[-3.0090866786513626,51.46731090514734],[-3.009086573629793,51.46731110610559],[-3.0090865793355,51.467311107482615],[-3.0084741098163343,51.46855538681505],[-3.0084741067434764,51.46855538626345],[-3.0084740594955552,51.468555488530356],[-3.0084739831295124,51.46855564370828],[-3.0084739875192064,51.46855564453546],[-3.00789634688499,51.46980640912353],[-3.0078963411783226,51.46980640802074],[-3.007896259452382,51.4698065972059],[-3.0078962280989,51.469806665200956],[-3.007896230293458,51.46980666575169],[-3.007353581461843,51.47106356927846],[-3.0073535739989214,51.471063567899606],[-3.0068459089359187,51.47232667557191],[-3.0068459168382455,51.472326676951226],[-3.006373794321356,51.473594600456416],[-3.006373791687412,51.4735945999052],[-3.006373762038393,51.473594686553724],[-3.0063736970276462,51.47359486094228],[-3.0063737022962296,51.473594861770415],[-3.005937058453436,51.47486773751997],[-3.005937050549996,51.47486773641489],[-3.005535941242085,51.476145437856474],[-3.0055359359732203,51.4761454370283],[-3.0055358841133586,51.47614561910982],[-3.005535858427006,51.47614570082471],[-3.005535861061793,51.47614570110164],[-3.00517056418273,51.477427349201974],[-3.005170563304914,51.4774273489268],[-3.005170555316947,51.47742738046296],[-3.0051704990226935,51.47742757762619],[-3.005170504730957,51.47742757845481],[-3.0048410644698547,51.47871301120441],[-3.0048410635920173,51.478713010929226],[-3.004841056484268,51.47871304164336],[-3.004840996577134,51.478713275832874],[-3.004841003164101,51.478713276662404],[-3.0045475307537477,51.48000206766459],[-3.0045475246051754,51.480002067109794],[-3.004547481877414,51.48000228184136],[-3.0045474703252553,51.48000233230038],[-3.0045474720816867,51.48000233257645],[-3.004290050060895,51.481294124771125],[-3.004290048304418,51.48129412449506],[-3.004290039828153,51.48129417440855],[-3.0042899966544003,51.481294390785315],[-3.0042900028031396,51.48129439134013],[-3.004068712520887,51.48258879087798],[-3.004068708128501,51.48258879059922],[-3.0040686857555876,51.48258894720019],[-3.0040686670191623,51.48258905690003],[-3.0040686700936186,51.482589057177435],[-3.003883577457305,51.48388570664252],[-3.003883569990252,51.48388570608635],[-3.003734684029685,51.48518467285818],[-3.0037346932542883,51.48518467341614],[-3.003622179367994,51.486484529258675],[-3.003622170142414,51.48648452897499],[-3.003545988185651,51.48778568018257],[-3.0035459837927685,51.4877856799038],[-3.0035459794658133,51.48778582253375],[-3.003545972109212,51.48778594760562],[-3.0035459756233744,51.487785947883495],[-3.003506182475071,51.48908748528759],[-3.0035061811576704,51.489087485011964],[-3.0035061810501165,51.48908752615637],[-3.0035061748040888,51.48908773050111],[-3.003506180515214,51.48908773078122],[-3.003502777463592,51.49038951013738],[-3.003502772190255,51.49038951040629],[-3.0035027769702434,51.490389698853015],[-3.003502776782369,51.49038977071857],[-3.003502778979294,51.49038977072081],[-3.003535769787081,51.49169137400521],[-3.0035357662719013,51.491691374001626],[-3.0035357729760688,51.49169149881345],[-3.003535776576493,51.49169163431967],[-3.0035357805310707,51.4916916343237],[-3.0036051721404773,51.492992939996924],[-3.003605180489984,51.49299293973113],[-3.003710927429686,51.494293030432445],[-3.0037109173215373,51.49429303097076],[-3.00385303246839,51.49559203086959],[-3.003853029391628,51.49559203114077],[-3.0038530440563944,51.4955921370341],[-3.0038530607931926,51.49559229093143],[-3.0038530651882582,51.49559229066159],[-3.0040314516243534,51.49688928529562],[-3.0040314481080577,51.49688928556635],[-3.004031468877359,51.49688941011799],[-3.0040314874244327,51.496889544267745],[-3.004031491380173,51.49688954399747],[-3.004246168990126,51.498184656379266],[-3.0042461764623694,51.498184655838244],[-3.004496997294361,51.499476973034255],[-3.0044969946568187,51.499476973305896],[-3.00449701681099,51.49947707317212],[-3.0044970476031025,51.4994772314722],[-3.004497051998537,51.499477231202334],[-3.0047839855852856,51.5007666179956],[-3.004783977232945,51.50076661881007],[-3.005107068450482,51.5020531970423],[-3.0051070776827555,51.50205319595439],[-3.0054659723430865,51.50333554466619],[-3.0054659679465807,51.503335545210376],[-3.0054660167652294,51.50333570325385],[-3.005466044202437,51.50333580120505],[-3.005466046840198,51.5033358009334],[-3.005860768202689,51.504614043801496],[-3.00586075940944,51.504614044889905],[-3.006291275992662,51.505888046568565],[-3.006291275552426,51.50588804684242],[-3.0062912790441763,51.505888056446246],[-3.0062913619299336,51.50588830147503],[-3.0062913689645856,51.50588830065914],[-3.006757380446878,51.50715716350921],[-3.0067573760493236,51.50715716432775],[-3.006757432390671,51.507157305920266],[-3.0067574734246696,51.50715741732507],[-3.0067574765028855,51.50715741677953],[-3.007258929755994,51.50842100866487],[-3.00725892755681,51.50842100921129],[-3.007258955960629,51.50842107534461],[-3.0072590297741537,51.50842126166433],[-3.0072590350509345,51.508421260846625],[-3.0077957799646136,51.509679196329714],[-3.00779577556684,51.50967919714827],[-3.007795845073956,51.50967934972498],[-3.0077958870250914,51.509679447964075],[-3.007795890103465,51.5096794474185],[-3.008367880054983,51.51093159348618],[-3.0857216085095134,51.496686095834754],[-3.085534904809343,51.49627889330921],[-3.099412069107098,51.493880514166314],[-3.099301614960004,51.493622861846184],[-3.0991984116417766,51.49336411918266],[-3.103398944397174,51.492735419990645],[-3.1033198947403595,51.492521416377635],[-3.106131467705312,51.49213277352675],[-3.106068839351762,51.49194863318713],[-3.1074798224055837,51.49176963219114],[-3.1074271333650216,51.49160022853431],[-3.1073791943229803,51.491430294992306],[-3.1102194068018854,51.49113394148288],[-3.1102586326261914,51.49127295670316],[-3.110258631747331,51.491272956977355],[-3.110258637454407,51.49127297508154],[-3.1102586400880963,51.491272984682205],[-3.1102586405275665,51.491272984407956],[-3.1103017553567085,51.49141157898789],[-3.113123644532451,51.4910534578703],[-3.113160193320992,51.491160871029365],[-3.1131601941998293,51.491160870755145],[-3.1131997328906,51.4912678477451],[-3.1131997324511507,51.49126784801934],[-3.113199735964357,51.49126785707142],[-3.1131997403557103,51.49126786914083],[-3.113199740795104,51.49126786914087],[-3.1132422645769964,51.491374398986444],[-3.113242264137602,51.49137439898641],[-3.1132422645768196,51.49137439980933],[-3.113242272920934,51.49137442038225],[-3.113242273360326,51.4913744203823],[-3.1132877690779632,51.49148047071222],[-3.1132877686385703,51.49148047071218],[-3.113287774348032,51.491480483330285],[-3.1132877778613968,51.49148049183376],[-3.113287778300793,51.491480491833805],[-3.1133362319195697,51.49158603027651],[-3.1119556452731336,51.491841183984455],[-3.111900261893686,51.49172054402993],[-3.11051274101342,51.4919606003755],[-3.1104542463179623,51.4918242296088],[-3.110399566560635,51.49168722559494],[-3.1089994654458017,51.491896889302495],[-3.108942983196136,51.4917440325333],[-3.1075372250636564,51.49193839294153],[-3.1075993628997605,51.49210657002943],[-3.10899947642148,51.49189691975071],[-3.1089994729093045,51.491896909875614],[-3.109060211781117,51.492049107436756],[-3.1090602113417165,51.49204910743669],[-3.109060215732552,51.492049117860475],[-3.1090602240749923,51.492049138159395],[-3.109060224514473,51.492049137885154],[-3.109125218292336,51.492200671019816],[-3.110512752869746,51.49196062780639],[-3.110512747161061,51.491960614913864],[-3.1105750555091713,51.49209634886173],[-3.1119556562522166,51.491841208397865],[-3.1120143927065294,51.49196120266984],[-3.1120143922671275,51.49196120266979],[-3.112014395341548,51.49196120843031],[-3.1120144041252105,51.49196122653469],[-3.112014405004015,51.49196122653477],[-3.1120764993877836,51.4920805866401],[-3.1120765007060505,51.49208058636592],[-3.1121419100014496,51.49219922808634],[-3.1121419095619802,51.4921992283606],[-3.1121419179071825,51.492199242899076],[-3.1121419231778034,51.49219925222564],[-3.112141923617275,51.4921992519514],[-3.112210640380144,51.492317162937375],[-3.1122106399407405,51.492317162937326],[-3.11221064477231,51.49231717089236],[-3.112210653996172,51.49231718625381],[-3.1122106544355783,51.49231718625386],[-3.112282658044613,51.49243433056493],[-3.110942915130173,51.49276361560033],[-3.110861898618444,51.49263180181822],[-3.110861898179252,51.492631800995284],[-3.110784579526568,51.49249912350586],[-3.109427232558459,51.49279900320257],[-3.1093454620390535,51.4926506698861],[-3.1092678512881182,51.49250146775077],[-3.107894556670467,51.49277157601737],[-3.107979923746015,51.492935699300105],[-3.1066143688611643,51.49322071307652],[-3.1067125036326027,51.49339875136116],[-3.1094272492471142,51.492799033102806],[-3.1094272439769757,51.49279902377611],[-3.109513138288162,51.49294642380125],[-3.1095131378487526,51.4929464238012],[-3.1095131439975088,51.49294643395088],[-3.109513154977165,51.492946452878584],[-3.109513155855995,51.49294645287868],[-3.109603170479793,51.49309291466578],[-3.110942930941859,51.4927636422087],[-3.1110276040525733,51.492894527537736],[-3.111027603613103,51.49289452781198],[-3.1110276119586437,51.49289454015617],[-3.1110276207432452,51.49289455387188],[-3.111027621182653,51.49289455387193],[-3.1111159588248896,51.49302452280987],[-3.112436481084517,51.49266624617119],[-3.1125182083135003,51.49278087755424],[-3.1125182078740243,51.492780877828494],[-3.112518217977341,51.49278089126992],[-3.112518224566335,51.49278090059657],[-3.112518225005806,51.49278090032233],[-3.1126031447231486,51.49289462373399],[-3.112603144283674,51.49289462400825],[-3.1126031596585837,51.49289464348466],[-3.1126031618549423,51.49289464650211],[-3.112691248601467,51.49300742709765],[-3.1126912481619935,51.49300742737191],[-3.1126912587050097,51.493007439990464],[-3.1126912661727655,51.49300744986579],[-3.112691266612228,51.49300744959154],[-3.1127825116202588,51.49311927584266],[-3.114059767844618,51.4927043522456],[-3.114142316865325,51.49280129510812],[-3.1141423159864488,51.49280129538236],[-3.114227580202144,51.49289734335932],[-3.1142275802020882,51.49289734363361],[-3.114227585473948,51.492897349119936],[-3.1142275973354323,51.492897362561344],[-3.1142275977748426,51.49289736256136],[-3.1143155170113848,51.492992447616935],[-3.114315516571921,51.49299244789121],[-3.114315529312219,51.49299246160696],[-3.114315534584155,51.492992466818976],[-3.1144061171995863,51.49308659854822],[-3.1156338774210193,51.492617051370964],[-3.1157137493289624,51.49269686095995],[-3.115713752404337,51.4926968639774],[-3.1157137651451077,51.49269687687013],[-3.115713765584562,51.49269687659586],[-3.1157958569236412,51.492775803580074],[-3.115795856044782,51.49277580385432],[-3.115880158913563,51.49285384027408],[-3.1158801584741513,51.49285384027405],[-3.1158801672611025,51.492853848229174],[-3.115880175608714,51.49285385563569],[-3.1159666473970433,51.49293096143642],[-3.1159666482758626,51.492930961436464],[-3.1160552441753637,51.49300709793498],[-3.116055248129598,51.49300710095247],[-3.1160552621888664,51.49300711329665],[-3.116055262628319,51.49300711302238],[-3.1161459751750944,51.493082273081754],[-3.1161459742962365,51.49308227335599],[-3.116238811842794,51.493156463006365],[-3.1173657300457136,51.49259699616336],[-3.117288380202966,51.492535184404154],[-3.1172127645701075,51.49247253415493],[-3.11713891082371,51.49240906873556],[-3.1170668637746606,51.49234482627882],[-3.1182535250692083,51.49183578514589],[-3.118311162857478,51.49188717743903],[-3.1183111654936186,51.49188717990783],[-3.118311174280805,51.49188718786276],[-3.1183111747202252,51.49188718758849],[-3.1183702403146465,51.491937944090225],[-3.1183702398752233,51.49193794436451],[-3.1184307284451718,51.491988059860866],[-3.1184307280057415,51.49198806013516],[-3.1184926079190194,51.49203750856461],[-3.1173657146679936,51.49259698381928],[-3.117444780709379,51.49265794309509],[-3.1174447802699774,51.492657943095054],[-3.1174447921328756,51.4926579521474],[-3.11744479652654,51.49265795543917],[-3.1174447965265784,51.49265795516489],[-3.117525538786608,51.49271803177935],[-3.1175255383471687,51.492718032053624],[-3.117607964736366,51.492777232038236],[-3.117607971766323,51.492777236975904],[-3.1176079809930903,51.49277724383373],[-3.1176079814325344,51.49277724355945],[-3.11769205065184,51.49283553646191],[-3.1198152778194763,51.49162115055528],[-3.1198666796853924,51.491655563518684],[-3.119866679245991,51.49165556351867],[-3.1198666875941807,51.49165556900482],[-3.119866689791065,51.491655570376366],[-3.1198666897910905,51.49165557010207],[-3.1199190562508377,51.49168942460064],[-3.1199190566902284,51.49168942460065],[-3.1199723508361656,51.491722696219774],[-3.1189631086003717,51.492363744718155],[-3.1190354119147083,51.49240733589199],[-3.119035411475285,51.49240733616627],[-3.1190354228992363,51.49240734274977],[-3.1190354259749116,51.49240734466996],[-3.1190354264143436,51.492407344395666],[-3.119108922920615,51.49245013269877],[-3.1191089229205833,51.49245013297307],[-3.1191089264356617,51.492450134893254],[-3.1191089374202723,51.49245014120243],[-3.119183634148081,51.492492130747245],[-3.119183634587508,51.492492130472975],[-3.119259478370585,51.49253329080863],[-3.119259477931159,51.49253329108291],[-3.119336476677366,51.49257362741911],[-3.119336476237961,51.49257362741909],[-3.119336492055932,51.492573635648476],[-3.1193364924953646,51.49257363537419],[-3.119414591719439,51.492613118631574],[-3.119414591280028,51.49261311863156],[-3.1194145952345473,51.49261312055175],[-3.119414607098062,51.49261312658663],[-3.119414607098075,51.492613126312335],[-3.1194937988894424,51.49265175292262],[-3.119493798450022,51.4926517531969],[-3.1195740735797783,51.49268951822031],[-3.119574077534305,51.49268952014049],[-3.119574089837283,51.492689525901085],[-3.1195740902766897,51.49268952590109],[-3.1196553929400985,51.49272640327566],[-3.118819197102523,51.49345811427568],[-3.1189221414486172,51.49350311538503],[-3.11892214188806,51.49350311511074],[-3.1190262865814167,51.493546970434416],[-3.1190262861419757,51.49354697070871],[-3.119026307672611,51.49354697921262],[-3.119131663254507,51.493589693136514],[-3.1191316628150876,51.49358969313651],[-3.1191316751183553,51.49358969779994],[-3.119131683906357,51.493589701640374],[-3.119131684345792,51.49358970136609],[-3.1192382182959517,51.493631260994015],[-3.1192382178565166,51.493631261268305],[-3.119238229281005,51.4936312653831],[-3.1192382393872577,51.49363126949788],[-3.1192382398266933,51.4936312692236],[-3.1193459196243847,51.49367166193372],[-3.1193459191849557,51.493671662207994],[-3.1193459367611247,51.49367166851737],[-3.1193459407157764,51.49367166988897],[-3.119345941155197,51.493671669888975],[-3.119454734279311,51.49371088305954],[-3.119454733839898,51.493710883059535],[-3.1194547355975177,51.49371088360817],[-3.1194547558101524,51.493710891014786],[-3.119454755810167,51.49371089074049],[-3.11956462842088,51.49374891229841],[-3.1195646279814437,51.493748912572684],[-3.1195646385272044,51.49374891613885],[-3.1195646508305956,51.49374892025365],[-3.119564650830612,51.49374891997935],[-3.1196755699664487,51.493785738948816],[-3.119675569527007,51.49378573922311],[-3.1196755866639374,51.49378574443523],[-3.1196755919368147,51.49378574635545],[-3.1196755919368373,51.49378574608115],[-3.119787524196544,51.49382135121215],[-3.119787528590625,51.49382135258377],[-3.119787546166971,51.49382135834446],[-3.1197875466064087,51.49382135807018],[-3.119900457270107,51.49385573811278],[-3.119900457270087,51.49385573838708],[-3.119900470012993,51.493855741953276],[-3.1199004796800054,51.49385574497079],[-3.1200143349062177,51.49388888949808],[-3.120014334906201,51.49388888977238],[-3.1200143573161694,51.493888896081764],[-3.1200143577556028,51.49388889580747],[-3.120129144794211,51.49392080152483],[-3.120703338791121,51.49309654693365],[-3.120611499146134,51.49307101990691],[-3.120520401383517,51.49304450041973],[-3.1204300485837484,51.49301698902252],[-3.1203405013889465,51.492988504644764],[-3.121005387645452,51.492191259055986],[-3.121072545083294,51.492212621282164],[-3.1210725450832792,51.492212621556455],[-3.1210725560682193,51.49221262484819],[-3.1210725582652006,51.49221262567112],[-3.1210725587046153,51.49221262539683],[-3.1211403032779517,51.492233252753834],[-3.1211403032779415,51.492233253028125],[-3.121140310747706,51.49223325522262],[-3.1211403164598797,51.492233256868495],[-3.1211403168992873,51.492233256868495],[-3.121208627953945,51.49225314277189],[-3.121208627514528,51.49225314304618],[-3.1212086314691194,51.49225314414342],[-3.12120864157529,51.49225314688654],[-3.121277497578138,51.49227228530049],[-3.120703319896702,51.49309654144735],[-3.1207958482511997,51.49312106092464],[-3.120795847811756,51.49312106147324],[-3.120889066189,51.49314457367379],[-3.12088906618901,51.49314457339949],[-3.1209828906570705,51.493167057473684],[-3.120982890217645,51.493167057747975],[-3.120982901642254,51.49316706021684],[-3.1209829091121755,51.493167062137054],[-3.120982909551605,51.49316706186276],[-3.1210773664695175,51.493188524667],[-3.1210773669089438,51.493188524392714],[-3.1211723912387876,51.493208950838174],[-3.1211723907993645,51.49320895111246],[-3.1211724092545428,51.493208954952905],[-3.1211724101333655,51.49320895495291],[-3.1212679904448124,51.493228342569374],[-3.1212679900053892,51.493228342843665],[-3.1212679930812572,51.49322834339231],[-3.1212680097788206,51.493228346684106],[-3.12126801021825,51.49322834640981],[-3.1213641179438207,51.4932466899839],[-3.1213641179438083,51.49324669025822],[-3.1213641249743778,51.49324669135549],[-3.121364136838445,51.49324669382432],[-3.121364137277867,51.49324669355001],[-3.1214607438499598,51.493263987045566],[-3.1214607438499526,51.49326398731986],[-3.1214607631840225,51.493263990611666],[-3.1215578391560053,51.493280229089734],[-3.121557838716591,51.493280229089734],[-3.121557845747172,51.493280230187],[-3.1215578580506786,51.493280232381515],[-3.1215578584900987,51.49328023210723],[-3.1216553730969543,51.49329541035468],[-3.1216553730969476,51.49329541062898],[-3.1216553752940044,51.49329541090329],[-3.1216553924310495,51.493295413646464],[-3.121655392870471,51.493295413372174],[-3.1217533171046687,51.49330952699888],[-3.121753317104663,51.49330952727317],[-3.121753335559966,51.49330952974204],[-3.121753336878203,51.49330952974205],[-3.121851640413848,51.49332257408366],[-3.121851640413842,51.493322574357954],[-3.1218516470050264,51.493322575180905],[-3.121851660626812,51.49332257682682],[-3.121851660626822,51.493322576552515],[-3.1219503140166776,51.49333454804197],[-3.1219503140166736,51.49333454831627],[-3.121950317531978,51.49333454859059],[-3.121950333350834,51.49333455051081],[-3.121950333790255,51.49333455023651],[-3.1220493075870017,51.493345445032546],[-3.122049307147584,51.49334544530682],[-3.1221486101327103,51.49335526423158],[-3.122148610132722,51.49335526368299],[-3.1222481328854808,51.49336399576312],[-3.1222481407949267,51.49336399631175],[-3.122248152659092,51.49336399740901],[-3.1223479044002023,51.49337164346686],[-3.1221848877619673,51.49426467901235],[-3.1223098520206953,51.49427287825511],[-3.122309852020692,51.4942728785294],[-3.1223098695975917,51.4942728796267],[-3.1223098779466194,51.49427288017533],[-3.1223098779466225,51.49427287990105],[-3.1224350277035526,51.4942797152105],[-3.122435027264127,51.49427971548479],[-3.122435038249694,51.49427971603343],[-3.1224350523112228,51.49427971658209],[-3.1224350523112263,51.4942797163078],[-3.1225603998590703,51.494285188506296],[-3.1225603998590765,51.49428518795769],[-3.122685856423254,51.49428929265568],[-3.122685856423251,51.49428929292997],[-3.1226858805915167,51.49428929347862],[-3.122685881470363,51.49428929347863],[-3.1228114334175316,51.49429203067566],[-3.122811445721377,51.49429203094997],[-3.122811458464646,51.494292031224305],[-3.1228114584646467,51.49429203095],[-3.1229370679931656,51.49429339982291],[-3.1229370802970124,51.49429339982291],[-3.122937093040282,51.494293400097206],[-3.122937093040282,51.494293399822915],[-3.123062720590792,51.49429339982292],[-3.1230627205907924,51.494293400097206],[-3.1230627460773324,51.49429339982291],[-3.1230627465167555,51.49429339982291],[-3.123188355166429,51.4942920312243],[-3.1231883683491204,51.49429203094997],[-3.123188380213544,51.494292030949964],[-3.123313932160713,51.494289293752914],[-3.1233139572078237,51.49428929320427],[-3.123313957207823,51.49428929292997],[-3.123439413772001,51.49428518823199],[-3.1234394137720036,51.49428518850629],[-3.123564761319855,51.49427971685639],[-3.1235647617592766,51.49427971685638],[-3.123564786366951,51.49427971575908],[-3.1235647863669476,51.49427971548478],[-3.123689936563301,51.49427288017533],[-3.123689950624822,51.49427287935236],[-3.123689961610386,51.4942728788037],[-3.1238149267479507,51.494264679012346],[-3.1238149267479485,51.49426467873806],[-3.123939618052383,51.494255121049235],[-3.1239396426600092,51.49425511885468],[-3.1240640482559634,51.494244203817935],[-3.12406404825597,51.494244204092226],[-3.124188179118107,51.49423193061121],[-3.124188179118094,51.494231930062625],[-3.124311898575591,51.49421831158022],[-3.1243119139553306,51.49421830993427],[-3.1243119231831686,51.49421830883698],[-3.1244352422109753,51.49420334398287],[-3.1244352422109833,51.49420334425716],[-3.1244352624243277,51.49420334178825],[-3.1244352676973683,51.49420334096529],[-3.1245581493737045,51.49418703522709],[-3.1245581542073184,51.49418703440414],[-3.1245581739812325,51.49418703193522],[-3.1245581739812187,51.494187031660914],[-3.1246805818238803,51.494169389429295],[-3.1246805980823975,51.49416938696039],[-3.1246806059919545,51.4941693858631],[-3.1248025017612733,51.494150412626034],[-3.1248025087919773,51.49415041152874],[-3.1248025259293195,51.494150408785515],[-3.124923872704116,51.49413011030539],[-3.12492389072026,51.49413010701354],[-3.1249238968721147,51.494130105916256],[-3.125044681460013,51.4941084841151],[-3.1250446814599995,51.494108483840805],[-3.125164818164938,51.494085554082524],[-3.1251648186043717,51.494085554356815],[-3.1251648388175477,51.494085550242],[-3.125164843211721,51.494085549419026],[-3.1252843201600955,51.49406131417447],[-3.125284320599527,51.49406131444876],[-3.1252843421309144,51.494061309785295],[-3.125284344328004,51.49406130951096],[-3.125403150085808,51.49403577097673],[-3.124922465616704,51.493188520826536],[-3.12501690407947,51.49316706213705],[-3.125016904518897,51.49316706241134],[-3.1250169234134204,51.493167057747975],[-3.1251107474420614,51.49314457367378],[-3.125110751396731,51.49314457285081],[-3.1251107658971677,51.49314456928471],[-3.1252039473642252,51.4931210661366],[-3.1252039587887945,51.49312106311913],[-3.1252039658192983,51.49312106147324],[-3.125296474839939,51.493096546933636],[-3.1252964801128122,51.49309654556207],[-3.12529649373439,51.49309654199593],[-3.125388304378627,51.49307102292437],[-3.125985456754315,51.49388889608173],[-3.1260993339510663,51.493855744970766],[-3.1260993396633996,51.49385574332484],[-3.126099357239805,51.49385573811274],[-3.126099356800379,51.49385573811276],[-3.126212266145862,51.49382135861878],[-3.126212266585278,51.49382135861877],[-3.1262122846010394,51.493821352858056],[-3.1262122894345414,51.49382135148644],[-3.1263242432252447,51.493785739497405],[-3.126324243225222,51.49378573922311],[-3.126435162800475,51.493748920253644],[-3.126435169391579,51.493748918059076],[-3.126435185649628,51.49374891257266],[-3.1264351852102035,51.493748912572684],[-3.126545058260291,51.49371089046617],[-3.126545058699731,51.49371089074046],[-3.1266538948855063,51.493671661933675],[-3.126653894885486,51.49367166165938],[-3.126761574683205,51.49363126922355],[-3.126761588744095,51.493631263737186],[-3.1267615953351404,51.493631261268305],[-3.1268681297247016,51.49358970164035],[-3.126868145543161,51.49358969533102],[-3.1268681512553957,51.49358969313647],[-3.1269735055190657,51.4935469794869],[-3.1269735059584804,51.493546979486894],[-3.1269735178222704,51.493546974549155],[-3.1269735274890853,51.49354697070867],[-3.1269735270496484,51.49354697043439],[-3.127077677894634,51.49350311291615],[-3.127077672621861,51.49350311538499],[-3.127893304911236,51.49424382103258],[-3.128016813215791,51.494189829646736],[-3.12801681365524,51.494189829921005],[-3.1280168316706485,51.49418982169135],[-3.1280168387010696,51.49418981867379],[-3.1281387949669783,51.49413450072859],[-3.1281387954064366,51.494134501002875],[-3.128259234341158,51.49407784004383],[-3.1282592339016824,51.494077839495255],[-3.1283780210450107,51.49401989889561],[-3.1283780214844716,51.49401989916988],[-3.1284951959388665,51.49396066028062],[-3.1284952064842826,51.49396065479421],[-3.128495218347896,51.49396064875913],[-3.128610718155191,51.49390014203489],[-3.128610717715728,51.49390014176061],[-3.1287244848737084,51.49383839875321],[-3.1287244853131644,51.49383839902749],[-3.128836553212968,51.493775400813846],[-3.128836552773508,51.49377540053956],[-3.12894679662745,51.493711217076374],[-3.1289467970669023,51.49371121735064],[-3.129055252903601,51.49364582834322],[-3.1290552608124473,51.49364582340548],[-3.129055273554522,51.49364581572452],[-3.1291618622844783,51.49357926863519],[-3.129161862723938,51.493579268909464],[-3.1292665966499267,51.49351155661092],[-3.1292666014830406,51.49351155331911],[-3.129266616421862,51.493511543717936],[-3.1292666159824027,51.49351154344366],[-3.1293694190926273,51.49344271476969],[-3.1293694252438593,51.49344271065491],[-3.129369440182554,51.49344270050514],[-3.1293694397431007,51.49344270023087],[-3.1294703023726327,51.49337276231875],[-3.129470302812089,51.49337276259302],[-3.1295692337497325,51.49330170776694],[-3.1295692333102814,51.493301707492684],[-3.1296661218373854,51.493229615584006],[-3.129666123594835,51.493229614212424],[-3.12966614204817,51.49322960049656],[-3.129666141608723,51.493229600222286],[-3.129761001348772,51.493156462457776],[-3.1308879475797524,51.49371591841969],[-3.1309962343664464,51.493629380756026],[-3.1309962348059086,51.493629381030296],[-3.1311020874902935,51.49354167520558],[-3.1311020989133524,51.49354166533012],[-3.131102107261036,51.49354165847214],[-3.1312054696121274,51.493452830852895],[-3.13120547752032,51.493452823720624],[-3.1312054907007436,51.49345281247356],[-3.1312054902612827,51.493452812199294],[-3.131306351302615,51.49336287376468],[-3.13130635833205,51.49336286718108],[-3.1313063719516876,51.493362855111066],[-3.1313063715122267,51.4933628548368],[-3.1314047035726316,51.49327182973328],[-3.1314047040120983,51.49327183000756],[-3.1314047171921247,51.49327181711469],[-3.131404722464226,51.49327181245127],[-3.1315004943588782,51.49317972948853],[-3.1315004961161703,51.49317972756833],[-3.1315005136895597,51.49317971083498],[-3.1315005132500886,51.49317971056071],[-3.131593714004533,51.49308658044333],[-3.1303659515868048,51.49261703600936],[-3.130443579467885,51.49253636850831],[-3.13044358034673,51.492536368782545],[-3.1305189571792504,51.492454850780334],[-3.1305189668444133,51.49245484008216],[-3.130518971237647,51.49245483514455],[-3.130592056611088,51.49237250834111],[-3.1305920557322278,51.49237250806687],[-3.1306628276894024,51.49228939907468],[-3.130662827249951,51.492289398800416],[-3.1307312515331405,51.49220554739884],[-3.1307312620765444,51.492205533957616],[-3.130731264273099,51.49220553121452],[-3.1307973334236516,51.492120947008495],[-3.130797344845446,51.49212093137284],[-3.130797346602716,51.49212092945264],[-3.130861040861906,51.492035638231314],[-3.1308610500871663,51.49203562561307],[-3.1308610527229113,51.492035621772736],[-3.130922352332498,51.491949649325115],[-3.130922356725377,51.49194964274171],[-3.1309223646326787,51.49194963176931],[-3.1309812502747167,51.49186300580439],[-3.132311543730921,51.492206870451604],[-3.1322428463646443,51.492307934893205],[-3.1321713104310915,51.492408268515014],[-3.132171304281075,51.49240827674438],[-3.132096981599918,51.492507804380004],[-3.133396651776299,51.49289464732495],[-3.133481589504065,51.49278090032221],[-3.1334815921396397,51.49278089648181],[-3.1334816057571504,51.49278087837704],[-3.1334816053176837,51.492780878102785],[-3.133563332546658,51.492666246719736],[-3.1348838548063105,51.493024523358415],[-3.1349722100181086,51.49289452836053],[-3.1349722091392205,51.49289452808632],[-3.1350568822497253,51.492763641934395],[-3.13505688312861,51.492763642208594],[-3.1351378996404295,51.4926318284265],[-3.1351379075461163,51.49263181471086],[-3.1351379158912795,51.492631801269475],[-3.1352152336653756,51.49249912460302],[-3.1338579036298597,51.49219922918348],[-3.1339233133645985,51.492080587188724],[-3.1339233181958552,51.492080578136495],[-3.133923326540814,51.492080562775115],[-3.133985407748493,51.49196122763199],[-3.133985408627365,51.4919612279062],[-3.1340441683582463,51.49184118535589],[-3.1340995407584584,51.49172056899189],[-3.134099547784971,51.49172055308204],[-3.134099551737357,51.491720544029874],[-3.1341515429804634,51.49159934288454],[-3.1341515434197276,51.49159934233591],[-3.1341515530808426,51.49159931929409],[-3.134200147382496,51.49147757012908],[-3.1342001482612876,51.491477570128986],[-3.1342453412558875,51.491355284743655],[-3.134245345646668,51.49135527185131],[-3.1342453495985914,51.49135526115337],[-3.134287107939566,51.49123252732969],[-3.135698057835012,51.49141157926218],[-3.135741173103859,51.49127298577938],[-3.1357411783714624,51.49127296740095],[-3.1357411814443896,51.491272957251645],[-3.1357804077080114,51.49113394175702],[-3.1357804120971853,51.49113392475017],[-3.135780414730859,51.49113391514951],[-3.1358157480735196,51.49099449328225],[-3.135815750267785,51.49099448368163],[-3.135815755095706,51.49099446448035],[-3.135847184579377,51.4908546790354],[-3.1358471867729367,51.490854666966136],[-3.1358471902838922,51.490854652153736],[-3.135874706728381,51.49071454537687],[-3.1358747076071554,51.49071454537677],[-3.1358983079767504,51.490574133454544],[-3.135898307976597,51.490574132905955],[-3.1358983128018836,51.4905741046529],[-3.135898311923111,51.49057410465298],[-3.1359179791445624,51.49043348386768],[-3.1359179804627204,51.49043348386753],[-3.135933719393981,51.490292614173285],[-3.1344966146486506,51.49023789412659],[-3.134507101521683,51.49011259310412],[-3.134507102400449,51.49011259310402],[-3.1345140873137862,51.489987173102804],[-3.134514087748124,51.48998715307912],[-3.1345140881860543,51.48998714731885],[-3.1345175637206286,51.48986169419501],[-3.1345175645993897,51.48986169419493],[-3.1345175329785007,51.48973619807388],[-3.13451753341788,51.48973619807383],[-3.1345175329745616,51.48973618243899],[-3.134517532972004,51.489736172290016],[-3.1345139933681034,51.48961072176961],[-3.1345139938074813,51.489610721769566],[-3.1345139929253394,51.48961070832913],[-3.134513992482852,51.489610695985824],[-3.134513992043474,51.489610695985874],[-3.134506944921295,51.48948527707663],[-3.13450694448192,51.489485277076675],[-3.13449639208299,51.489359952591656],[-3.133059343409632,51.48941495765966],[-3.1330685751363485,51.48952463788564],[-3.1330747374205976,51.48963436418005],[-3.133077831122074,51.48974415025809],[-3.133077855335566,51.489853976370775],[-3.1330748100212347,51.48996376214921],[-3.1330686951557642,51.49007350210724],[-3.13305951203141,51.49018317896359],[-3.133047268954119,51.49029270027895],[-3.1316119178574473,51.490222295850394],[-3.1315987922070874,51.4903160798681],[-3.131583051683199,51.49040967782691],[-3.1315646931974017,51.49050310673242],[-3.131543726830364,51.49059631638638],[-3.1315437263912314,51.4905963177579],[-3.131520159590779,51.49068927524283],[-3.1314939984888035,51.49078195861302],[-3.1314652443870963,51.4908743621064],[-3.131433917031281,51.49096642180863],[-3.1314339161530014,51.49096642455166],[-3.1314000172847805,51.491058134974615],[-3.131363552598457,51.491149479109296],[-3.131324552823345,51.49124038151964],[-3.131283006086963,51.491330870730806],[-3.131238944438031,51.491420873775006],[-3.131192359078772,51.49151041067369],[-3.1311432974345856,51.49159939117705],[-3.1297860212758417,51.49129944859094],[-3.1297860203972516,51.49129944996246],[-3.1298269164920383,51.49122528332687],[-3.129826915613209,51.49122528305263],[-3.129865723517755,51.491150700416426],[-3.12990244763331,51.491075689712375],[-3.1299024489510283,51.491075686695034],[-3.1299024546613934,51.491075675174244],[-3.1299370686419654,51.49100029099081],[-3.1299695764505593,51.49092452592364],[-3.1299695777682692,51.49092452290629],[-3.1299695825998115,51.49092451138556],[-3.1299999609665883,51.49084841892555],[-3.1299999622842978,51.49084841590821],[-3.1299999671156526,51.49084840329028],[-3.130028213415527,51.49077199166814],[-3.1300282147331497,51.4907719881022],[-3.130028218685967,51.49077197713011],[-3.130054324584166,51.49069526911446],[-3.130054325023303,51.49069526746866],[-3.1300543298544197,51.49069525347925],[-3.1300782865773327,51.490618274033025],[-3.1300782878948596,51.49061826991851],[-3.1300782914081338,51.49061825812354],[-3.1301000928180533,51.490541028369236],[-3.130100095013753,51.49054102041451],[-3.130100096770238,51.490541013556985],[-3.130119735851358,51.490463557908626],[-3.1301197362903164,51.49046355516563],[-3.130119739803355,51.49046354199918],[-3.1301372099792775,51.49038588404773],[-3.130137211735407,51.49038587499583],[-3.130137213052661,51.49038586923553],[-3.13015251038348,51.49030803284595],[-3.130165634000244,51.490230010887466],[-3.1301656331214778,51.490230010887515],[-3.130176569867049,51.49015188866784],[-3.1301765711832195,51.49015187605011],[-3.1301765716222145,51.490151873581425],[-3.1301853219460356,51.49007364424372],[-3.130185321945734,51.49007364232365],[-3.1301853237010233,51.49007362806013],[-3.1301918854211044,51.489995315468825],[-3.1301918862977094,51.48999530175394],[-3.1301918862974936,51.48999530038246],[-3.1301962581105784,51.48991692785319],[-3.1301962589868353,51.489916911943936],[-3.1301984391504516,51.48983850361514],[-3.130198427237921,51.48976006853875],[-3.1301984267960363,51.48976005262958],[-3.1301962223879456,51.489681645939214],[-3.130196221947401,51.489681638533234],[-3.1301962215066412,51.48968162975578],[-3.1301918250546836,51.4896032580344],[-3.1301918250544687,51.48960325666292],[-3.1301918241735556,51.48960324294814],[-3.130191823734176,51.48960324294817],[-3.1301852374503887,51.48952493088209],[-3.1301852378897665,51.489524930882055],[-3.1301764617866183,51.4894466864255],[-3.1301764600274318,51.48944667572805],[-3.1301764595873673,51.48944667133933],[-3.1301654993967327,51.48936855044795],[-3.130165498077702,51.4893685446878],[-3.1301654967579826,51.48936853453892],[-3.130152351611106,51.48929053008043],[-3.1301523511717315,51.48929053008045],[-3.1301370303148954,51.48921269554142],[-3.130137029435374,51.48921269060413],[-3.1301370272369193,51.489212680455296],[-3.130119532879362,51.489135024886494],[-3.130119533318735,51.48913502488647],[-3.130119529801699,51.48913501172044],[-3.1301195293618975,51.48913500897751],[-3.1300998628339274,51.48905754088109],[-3.1300998623945535,51.48905754088113],[-3.130078033378968,51.48898029783404],[-3.1300780329395974,51.48898029783407],[-3.1300540533162784,51.488903320156],[-3.130054050678902,51.48890331275016],[-3.130054048480907,51.48890330534429],[-3.130027920018979,51.48882660071413],[-3.130027915623505,51.488826589193934],[-3.130027914304764,51.488826585079565],[-3.129999646245048,51.48875017763343],[-3.129999644047441,51.48875017269622],[-3.1299996400914742,51.488750161998894],[-3.1299692394773975,51.488674073678546],[-3.1299692399167256,51.48867407340422],[-3.1299367111532965,51.48859831298526],[-3.129936704560399,51.48859829735074],[-3.1299020687551184,51.48852291749508],[-3.129902069194443,51.48852291722074],[-3.129902062601859,51.4885229035063],[-3.1299020621624054,51.48852290295774],[-3.1298653254772035,51.48844791189206],[-3.129865325916532,51.48844791161773],[-3.129865319324133,51.488447899000484],[-3.12986531800562,51.4884478962576],[-3.1298264909982576,51.48837331784313],[-3.129826488361444,51.48837331372884],[-3.129826482648006,51.48837330248302],[-3.129785576314889,51.48829915756361],[-3.1297855714806104,51.488299149060694],[-3.129785567964828,51.48829914330067],[-3.129742586270419,51.48822544010283],[-3.1283940877041467,51.488540282985134],[-3.1284284761165027,51.488599254330175],[-3.12846120780029,51.48865858534443],[-3.128461208239724,51.488658585893],[-3.1284922691263617,51.48871825079466],[-3.1285216644836513,51.48877825973374],[-3.128549376726464,51.488838576505195],[-3.1285753988171323,51.48889918766999],[-3.1285997210801506,51.48896006799443],[-3.128622337356231,51.48902120349075],[-3.1286432419250945,51.489082578250986],[-3.1272324251827315,51.48926183390788],[-3.127216750637164,51.48921581081116],[-3.12719978877327,51.489169956450446],[-3.127199787894325,51.489169954256106],[-3.1271997852574263,51.48916994712449],[-3.127181547944927,51.48912429359146],[-3.1271815444292326,51.48912428591129],[-3.1271815439897646,51.489124284814125],[-3.127162032990154,51.4890788367712],[-3.127162032990106,51.48907883622261],[-3.127162029034944,51.48907882744526],[-3.1271412505042457,51.48903359888071],[-3.1271412474280185,51.489033592023404],[-3.1271412465490998,51.48903359010336],[-3.127119207082619,51.48898859500541],[-3.1270959084416257,51.48894383803633],[-3.127095903607728,51.48894382898471],[-3.1270713620551036,51.48889934141298],[-3.1270713594184625,51.48889933675003],[-3.1270713572212614,51.48889933290996],[-3.127045570123577,51.48885511034617],[-3.1256970344078936,51.48916992218552],[-3.125679026272339,51.489140638154815],[-3.125679024954109,51.489140636234765],[-3.1256790227570153,51.489140632394665],[-3.125660198300643,51.48911154916461],[-3.125660198739999,51.4891115488903],[-3.1256405566458296,51.48908266344326],[-3.125640556206479,51.48908266371756],[-3.1256201180068905,51.489054007871076],[-3.125598873157394,51.4890255681844],[-3.125576845386993,51.4889973753778],[-3.125576843189945,51.4889973720863],[-3.125576840992959,51.48899736989196],[-3.125554023711725,51.488969415736264],[-3.1255304331785836,51.48894171997999],[-3.1255304292239674,51.488941715042735],[-3.1255304287845767,51.48894171476845],[-3.1255060623641384,51.488914274393935],[-3.1255060623641646,51.488914274668225],[-3.1254809385121165,51.48888710997255],[-3.1254809367545313,51.4888871080525],[-3.125480933239373,51.48888710448672],[-3.1254550537142003,51.48886021738944],[-3.1254550528354055,51.488860216566565],[-3.1254550484414674,51.488860212177904],[-3.1254284211531584,51.48883361118155],[-3.127856832423698,51.48786767262411],[-3.1278020859879367,51.4878150494363],[-3.1278020842303222,51.48781504779059],[-3.1278020750028532,51.487815039287774],[-3.1277458771105264,51.4877630313799],[-3.1277458749134976,51.48776302918562],[-3.1277458656860513,51.487763020682785],[-3.127745865246689,51.48776302068281],[-3.1276882229308054,51.48771163353843],[-3.127688212385216,51.48771162421277],[-3.1276882110670283,51.487711623115636],[-3.1276291401484793,51.48766087099544],[-3.127629140148457,51.487660870721136],[-3.127629133118121,51.4876608649612],[-3.1276291287241347,51.48766086112122],[-3.127568648538707,51.48761076075439],[-3.1275686485386793,51.487610760480095],[-3.12756863799322,51.487610751977314],[-3.127568635796235,51.487610750057314],[-3.1275067643610686,51.48756131597875],[-3.1275067586489826,51.48756131159023],[-3.1275067524974753,51.48756130665312],[-3.1275067520581143,51.48756130665314],[-3.1274435082689243,51.48751255422051],[-3.127443508268902,51.48751255394621],[-3.1274434964053857,51.487512545169174],[-3.1274434950872,51.48751254407204],[-3.1273788855364266,51.48746447876885],[-3.126284182685809,51.48804824945277],[-3.126234735131612,51.48801274012033],[-3.1262347250257645,51.4880127329889],[-3.1261842824300534,51.48797776128368],[-3.1261842819906827,51.48797776128369],[-3.1261328799438965,51.48794335106726],[-3.1260805136131444,51.48790949959553],[-3.1271073257925197,51.48727948157885],[-3.1270362380788916,51.487235105326604],[-3.1250181294937653,51.488517319679104],[-3.1249819848537226,51.48849553045303],[-3.124981979581174,51.48849552716157],[-3.1249819773842913,51.488495526064405],[-3.1249452299838594,51.4884741340185],[-3.1249452255900945,51.488474131549914],[-3.124945222514433,51.48847412962988],[-3.124907882019861,51.48845314107224],[-3.124907877186713,51.488453138329355],[-3.1249078749898236,51.4884531369579],[-3.124869953264064,51.4884325579223],[-3.12486994799156,51.48843255545372],[-3.124869945794676,51.488432554082266],[-3.1248314472312915,51.48841238758533],[-3.124831446791932,51.48841238785964],[-3.124792399071296,51.4883926481638],[-3.1247923916019227,51.48839264459806],[-3.12479239116254,51.48839264404948],[-3.1247527973598928,51.48837333307423],[-3.1247527973598688,51.488373332799945],[-3.124712653520411,51.48835444835042],[-3.1247126530810463,51.48835444835042],[-3.1246720031416575,51.48833601099769],[-3.124671996990446,51.4883360085291],[-3.124671995672321,51.48833600770623],[-3.1246308308450077,51.48831801388402],[-3.12463083611747,51.488318016078324],[-3.1262616601506896,51.486836509805464],[-3.126178334273926,51.486801424070265],[-3.1261783347132552,51.48680142379597],[-3.126094023561979,51.48676724402909],[-3.126094023561988,51.4867672443034],[-3.1260088049004886,51.48673400177054],[-3.126008805339839,51.486734001770536],[-3.126008790401564,51.486733996284975],[-3.126008787326022,51.48673399491358],[-3.125922651045737,51.48670168549857],[-3.125922644894691,51.48670168330437],[-3.125922635228756,51.48670167973875],[-3.12583560856666,51.486670313313624],[-3.1258356010975654,51.48667031084513],[-3.125835590552926,51.486670307005234],[-3.125747702503199,51.486639894539195],[-3.125747688443737,51.48663988987647],[-3.1257476844895047,51.48663988850508],[-3.125658960091738,51.48661043822453],[-3.1256589600917244,51.486610437950226],[-3.1256589438355005,51.48661043273898],[-3.1256589416387204,51.48661043219043],[-3.125569405053598,51.48658195232185],[-3.125569403296176,51.4865819517733],[-3.1255693892367438,51.486581947110565],[-3.1255693887974063,51.48658194738487],[-3.1254790698969543,51.48655444725189],[-3.1254790703363056,51.486554447251876],[-3.1254790514440143,51.48655444176634],[-3.125387980100014,51.48652793069263],[-3.1253879735096888,51.48652792877268],[-3.125387961647095,51.486527925207064],[-3.1252961628981706,51.48650241059641],[-3.125296162898164,51.4865024103221],[-3.1252961444453007,51.486502405659415],[-3.1252961440059357,51.48650240538513],[-3.1252036464052795,51.48647789464129],[-3.125203646405268,51.486477894366985],[-3.12511045609884,51.48645438940833],[-3.1251104394034352,51.48645438529415],[-3.1250166258038905,51.486431904221384],[-3.125016617016852,51.48643190230146],[-3.125016606472391,51.486431899558674],[-3.1249221809974683,51.48641044483878],[-3.125402705121076,51.48556317585684],[-3.1252839192695236,51.48553764203284],[-3.1252839056498765,51.485537639290136],[-3.1252838951056314,51.48553763709597],[-3.125164438138977,51.48551340662171],[-3.125164433745554,51.4855134057989],[-3.125164413535778,51.48551340168482],[-3.1251644135357926,51.48551340195912],[-3.125044294671037,51.485490475929595],[-3.1250442951103694,51.48549047565529],[-3.124923507308782,51.48546885379434],[-3.1245388162776693,51.486334985456644],[-3.1246354349266467,51.48635228129501],[-3.1247315616199787,51.48637062816569],[-3.124827131339821,51.48639001345325],[-3.1248271322185106,51.486390013453246],[-3.1249221612266553,51.48641044045036],[-3.1244416245634894,51.48725770816314],[-3.124370365479305,51.48724239064985],[-3.12437035098049,51.48724238763275],[-3.124298659640609,51.48722784579167],[-3.124226586128536,51.487214089770475],[-3.1242265738265353,51.48721408757623],[-3.1242265729478254,51.487214087576234],[-3.1241541256079732,51.48720111874562],[-3.1241541198963323,51.487201117648496],[-3.1241541106698394,51.4872011160028],[-3.1240813141027597,51.487188939024904],[-3.124081311466622,51.48718893875062],[-3.124081299164641,51.487188936556365],[-3.124008172698507,51.48717755444761],[-3.124008161275247,51.48717755280194],[-3.1240081577603935,51.48717755225338],[-3.123934709739404,51.48716696638459],[-3.123860976626469,51.487157182515126],[-3.123786994884381,51.48714820503297],[-3.123786987415341,51.48714820421014],[-3.1237869795069466,51.487148203387314],[-3.1237127447383903,51.4871400317434],[-3.1237127447383912,51.487140032017706],[-3.123638307904747,51.48713267197155],[-3.1238510917162214,51.48624372821204],[-3.1237515652665966,51.48623499583565],[-3.1237515503288287,51.48623499473856],[-3.1237515446173254,51.48623499419],[-3.1236518068960235,51.486227349316486],[-3.1238147662180444,51.48533431077602],[-3.123689809867765,51.48532611175255],[-3.1236898261232438,51.48532611257535],[-3.123827793783286,51.48443143427726],[-3.1236775855540935,51.48442323047772],[-3.123564650166192,51.48531927585145],[-3.123689800202346,51.48532611120402],[-3.1235518324139595,51.48622078947677],[-3.123651789322183,51.4862273479451],[-3.123488828026698,51.48712038639663],[-3.123563651427954,51.487126121602756],[-3.1236382925273274,51.48713267060015],[-3.1234255057125027,51.488021614112334],[-3.1234751515649215,51.48802652273287],[-3.123524632233725,51.48803196950298],[-3.123573964416411,51.48803795579426],[-3.123286941146345,51.48891872796369],[-3.1232622743772342,51.4889157346236],[-3.1232375337983678,51.48891301146051],[-3.123237532919624,51.48891301146051],[-3.123237528525908,51.488913010911936],[-3.1232127106218828,51.48891055682866],[-3.1231878325277638,51.48890837429378],[-3.123187829452166,51.48890837401949],[-3.1231878272553066,51.48890837374519],[-3.123162887213175,51.488906461935784],[-3.123137901479337,51.48890482249756],[-3.1231128696139776,51.4889034554305],[-3.123112864341521,51.48890345515622],[-3.123087798207225,51.48890236100888],[-3.123062710105941,51.48890154005551],[-3.1230627048334845,51.48890154005552],[-3.12303759696162,51.48890099257042],[-3.1230124680006117,51.488900718827885],[-3.1229873403579425,51.488900718827885],[-3.1229622219418443,51.48890099257042],[-3.122937108797524,51.48890154005552],[-3.1229371052825536,51.48890154032982],[-3.1229371044038112,51.48890154032982],[-3.122912015863156,51.48890236100888],[-3.122886949289488,51.48890345515621],[-3.122861912151672,51.48890482277186],[-3.122836927296577,51.48890646221009],[-3.1228119863757033,51.48890837374518],[-3.122787098176039,51.48891055737724],[-3.1227622851051025,51.488913010911936],[-3.122762280711384,51.48891301146052],[-3.122762279832642,51.488913011460525],[-3.1227375392537744,51.48891573489789],[-3.1227128680909475,51.48891872851228],[-3.122688294024161,51.48892198956084],[-3.1226638051899656,51.48892551886647],[-3.122639423995921,51.48892931396067],[-3.122615157471586,51.48893337319771],[-3.1225910034197106,51.48893769685195],[-3.1225669728242176,51.48894228327772],[-3.1225669706273522,51.48894228382632],[-3.122566968869861,51.488942284100595],[-3.122543070078437,51.488947131926544],[-3.1225193162719216,51.488952237861234],[-3.12251931143882,51.488952238958404],[-3.1224957043743253,51.48895760300192],[-3.11947087793522,51.48390617661605],[-3.119636129508473,51.48386862860104],[-3.1198024275899208,51.483832881962556],[-3.119969709372736,51.48379895095802],[-3.120137883055257,51.48376685341027],[-3.1203069332794335,51.483736592058136],[-3.1204768503986755,51.48370816936631],[-3.120647465731136,51.483681613031614],[-3.1206474674884337,51.48368161275736],[-3.1208188623287487,51.483656910434966],[-3.120990903142169,51.48363408159427],[-3.12116351043147,51.48361313638013],[-3.1213367312246936,51.48359406875626],[-3.121510452636731,51.483576891610454],[-3.1216846087903805,51.48356161179718],[-3.1218591623646366,51.48354823178283],[-3.12203408526439,51.48353675458266],[-3.122209261091383,51.483527187051685],[-3.1223847359959955,51.48351952672034],[-3.122560372932288,51.48351378044419],[-3.1227361288689517,51.48350994877102],[-3.1229119761509097,51.483508032797474],[-3.1230878502202986,51.48350803279745],[-3.1232637067279674,51.48350994904526],[-3.1232637071672866,51.48350994904527],[-3.123439441137973,51.483513780169886],[-3.1234394406986556,51.4835137804442],[-3.1236150899359045,51.48351952726887],[-3.1237905525395577,51.48352718677739],[-3.1237905529788716,51.48352718650309],[-3.1239657560437273,51.483536755953914],[-3.1241037129049434,51.48264207733103],[-3.1243036055492968,51.48265519324993],[-3.13650599966056,51.41567619371154]],[[-3.130203952753382,51.49277580769473],[-3.130119654717495,51.492853840274044],[-3.128932963915685,51.492344813660445],[-3.12900320295347,51.49227979718695],[-3.1290032148158926,51.49227978594019],[-3.1290032161339187,51.492279784568645],[-3.129071626954514,51.49221401273482],[-3.1302860476072185,51.49269687741874],[-3.130203952753382,51.49277580769473]],[[-3.1297430510379507,51.49137316905032],[-3.1296980426700287,51.491446384629775],[-3.1296980391557088,51.4914463903902],[-3.1296509759559603,51.49151912577501],[-3.129650976395401,51.49151912604929],[-3.1296019022856103,51.491591314580496],[-3.1295508080328034,51.49166297134242],[-3.128240585146863,51.491290306251955],[-3.1282814540519697,51.491232992379125],[-3.1282814553699194,51.49123299045899],[-3.1282814623990767,51.49123298058401],[-3.1283207220932923,51.491175230912376],[-3.128320727804346,51.49117522186033],[-3.128320730000959,51.491175218842976],[-3.128358369506301,51.491117049283844],[-3.128358369945731,51.49111704955813],[-3.128394391903184,51.491058455449895],[-3.1284287563410214,51.49099950152982],[-3.1297860133688578,51.4912994628548],[-3.1297430510379507,51.49137316905032]],[[-3.12757924749527,51.49326715021045],[-3.1274816199859665,51.49331650647062],[-3.1273825904335903,51.49336480967799],[-3.127282262977,51.493412008531806],[-3.127180602028397,51.493458120310706],[-3.127077692394781,51.49350310660682],[-3.1262620825871075,51.492762396839616],[-3.1263444044334037,51.49272641068211],[-3.1263444110242986,51.492726407664655],[-3.126344421130362,51.49272640327562],[-3.1264257237937465,51.492689525626766],[-3.12642572423318,51.49268952590105],[-3.126505998923533,51.49265176060338],[-3.1265059993629616,51.49265176087765],[-3.126585205654197,51.49261312686093],[-3.126585206093634,51.492613127135215],[-3.126663322014521,51.49257363564845],[-3.12666332904474,51.49257363208237],[-3.126663336953729,51.49257362796768],[-3.1267403203213755,51.49253329958657],[-3.127675493171231,51.49321673075118],[-3.12757924749527,51.49326715021045]],[[-3.1273134046271878,51.49218170549673],[-3.12724614957212,51.49222833888079],[-3.126184546796027,51.49162114369756],[-3.1261331343850713,51.49165556379295],[-3.1260807578196226,51.491689424874906],[-3.1271077641846428,51.492319381673035],[-3.1270366922886814,51.49236375294746],[-3.1269644021557634,51.492407336166266],[-3.1268908762108114,51.49245014147671],[-3.126816194861486,51.49249212251784],[-3.1268161944220636,51.492492122243554],[-3.1267403356998953,51.49253329108289],[-3.125805186861838,51.49184985457686],[-3.1257474375102325,51.49188010671978],[-3.1256888400028204,51.491909730440554],[-3.1256294352034804,51.491938705439104],[-3.1255692406887383,51.491967023210606],[-3.1255082511870818,51.49199468677123],[-3.1254464992145587,51.492021681032774],[-3.124630941836424,51.49128095973519],[-3.124672101864126,51.491262966957215],[-3.1246721023035313,51.49126296723151],[-3.1247127613730563,51.49124452542313],[-3.1247529067416098,51.4912256395224],[-3.1247925094092226,51.4912063232451],[-3.124831558830254,51.49118658207786],[-3.1248315623453267,51.49118658015773],[-3.12483156629979,51.4911865782376],[-3.124870065549518,51.49116641053514],[-3.1249079873858774,51.49114583056187],[-3.124907988704022,51.49114582973896],[-3.1249079944160045,51.49114582672161],[-3.124945342793174,51.49112483255794],[-3.124982090029863,51.49110343901688],[-3.1249820904692616,51.49110343929117],[-3.1250182427167204,51.491081644178806],[-3.1250537793239546,51.49105945874219],[-3.125088697215302,51.49103688517634],[-3.1250886967758964,51.49103688490205],[-3.125122971785553,51.491013938568514],[-3.1251565929292235,51.490990627148356],[-3.1251565968836195,51.49099062440532],[-3.125156599519876,51.4909906224852],[-3.1251895707521555,51.49096694323595],[-3.125221867468226,51.49094291398788],[-3.1252534949409094,51.490918530627],[-3.125284435156211,51.49089380714331],[-3.125314685917709,51.490868745183185],[-3.125344219545434,51.49084336723998],[-3.1253730443880485,51.49081766673098],[-3.125373050539223,51.49081766124494],[-3.1254011525374783,51.49079165051429],[-3.125428523344068,51.490765337242976],[-3.1254551541723803,51.49073872993486],[-3.1254810322816513,51.490711841756976],[-3.12550615986952,51.49068467024106],[-3.12553052331663,51.49065722965133],[-3.1255541160335025,51.490629527394404],[-3.125554117790949,51.49062952547428],[-3.12555412086645,51.49062952163408],[-3.1255769309914356,51.49060157224837],[-3.1255769327488583,51.49060156977967],[-3.125576935385015,51.490601566762344],[-3.1255989655553478,51.490573367231],[-3.12562019907655,51.49054493757848],[-3.125620202152028,51.490544933463966],[-3.1256202030307243,51.49054493209247],[-3.1256406390253617,51.49051627561076],[-3.1256406421008096,51.49051627094764],[-3.1256406429795094,51.490516269850445],[-3.125660278373267,51.49048738955729],[-3.125679099547543,51.49045830520276],[-3.1256971082610705,51.49042901459282],[-3.125714295728287,51.49039953199147],[-3.1257306557997504,51.490369866999586],[-3.1270960565057577,51.490655026713405],[-3.1270715193239167,51.4906995206436],[-3.1270457425536744,51.490743739766074],[-3.1270187257524116,51.490787683257125],[-3.1269904882475545,51.49083132066835],[-3.126961042337399,51.4908746325234],[-3.1269303774751314,51.49091763473093],[-3.126898520896844,51.4909602880647],[-3.1268654800688522,51.49100258374601],[-3.126831255427887,51.49104452040236],[-3.1267958689389586,51.49108607169958],[-3.1267593298261978,51.49112722776163],[-3.12672163237572,51.4911679929764],[-3.126721631936347,51.491167993250706],[-3.1266828134912354,51.49120832784291],[-3.1266428617476527,51.49124824525234],[-3.1266018140492804,51.49128770762383],[-3.1265596528200374,51.491326732237425],[-3.126516424630808,51.4913652754774],[-3.126472114541931,51.49140335188077],[-3.126426749792699,51.49144093648451],[-3.126380330382031,51.49147802956173],[-3.1263328892616356,51.49151460505209],[-3.1262844339000377,51.4915506571939],[-3.1273793324812793,51.49213435593548],[-3.1273134046271878,51.49218170549673]],[[-3.123815380506601,51.48905875878696],[-3.123794552766044,51.489049988847626],[-3.1237945527660456,51.48904998857332],[-3.1237734745948944,51.489041443280776],[-3.123752169279869,51.48903313223509],[-3.1237306262757705,51.4890250513218],[-3.1237088688692873,51.48901720959238],[-3.1237088675511524,51.4890172090438],[-3.1237088640361588,51.48901720794664],[-3.123686891348286,51.489009604303796],[-3.123664705136292,51.48900223984461],[-3.1236647033787905,51.48900223929603],[-3.1236647003031663,51.48900223847316],[-3.123642315505531,51.48899511813475],[-3.123642311551166,51.48899511676328],[-3.123619730803863,51.48898824136842],[-3.1236197281676215,51.48898824081983],[-3.1236197259707525,51.48898823999696],[-3.123596952788505,51.488981610642675],[-3.123574002109729,51.48897523144326],[-3.12355087173725,51.48896910212433],[-3.1235508682222646,51.48896910130145],[-3.123550866904144,51.48896910102716],[-3.1235275730944734,51.488963225702946],[-3.1235041145291556,51.48895760409909],[-3.123480502192189,51.488952238958404],[-3.123480497359089,51.488952237861234],[-3.1234567435525658,51.488947131652246],[-3.123913563253238,51.48809476210293],[-3.1239610797538564,51.48810497625254],[-3.1240083032314923,51.48811570633721],[-3.124055216112904,51.4881269485173],[-3.1241018096120863,51.48813870059891],[-3.12414806703443,51.48815095819383],[-3.124193985745,51.48816372130246],[-3.1241939861843613,51.48816372130245],[-3.124239527520039,51.48817697867946],[-3.1242847011480768,51.488190733068116],[-3.124329470602022,51.48820497349742],[-3.1243738521395814,51.488219705179255],[-3.1243738525789397,51.488219705179255],[-3.124417800067398,51.48823491302831],[-3.1244613280068556,51.48825060143366],[-3.1244613284462392,51.488250601707946],[-3.1245043977337077,51.488266756955696],[-3.124504400809317,51.488266758327136],[-3.1245470224299012,51.488283384532096],[-3.1245891700221544,51.48830047154614],[-3.1246308277693973,51.48831801251258],[-3.123815380506601,51.48905875878696]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231464567126306,51.489800297683175],[-3.122999906539917,51.48979949951172]],[[-3.1229999204362855,51.489799500394874],[-3.122999906539917,51.48979949951172],[-3.1230618501591794,51.4898025431493],[-3.1229999204362855,51.489799500394874]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230611885048916,51.48984124939929],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123060333409943,51.48979520133066],[-3.122999906539917,51.48979949951172]],[[-3.1229999151637267,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.1230573047341514,51.48977099713693],[-3.1229999151637267,51.48979949545753]],[[-3.1229999186787647,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.123055558662476,51.48978986434651],[-3.1229999186787647,51.48979949737761]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230506389674324,51.48982654930776],[-3.122999906539917,51.48979949951172]],[[-3.122999916921248,51.48979950313783],[-3.122999906539917,51.48979949951172],[-3.1230470549320217,51.489815480623676],[-3.122999916921248,51.48979950313783]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230442161004053,51.48981851077792],[-3.122999906539917,51.48979949951172]],[[-3.1229999195575266,51.489799499023384],[-3.122999906539917,51.48979949951172],[-3.1230332201595576,51.4897982273802],[-3.1229999195575266,51.489799499023384]],[[-3.122999906539917,51.48979949951172],[-3.1230170461426003,51.48978822433985],[-3.122999906539917,51.48979949951172],[-3.123007220732661,51.489794853263774],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999916042489,51.48979949436034],[-3.1230311414427736,51.48978284565736],[-3.122999906539917,51.48979949951172]],[[-3.1229999156031107,51.489799491343085],[-3.1229999134062076,51.48979949326316],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999125274515,51.48979949408605],[-3.1230302437812862,51.48976977186468],[-3.1229999156031107,51.489799491343085]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230298633028437,51.48980686634855],[-3.122999906539917,51.48979949951172]],[[-3.122999916042491,51.489799495183235],[-3.1229999235119497,51.489799491617376],[-3.123022751050225,51.4897889465615],[-3.122999916042491,51.489799495183235]],[[-3.1229999178000094,51.489799491343085],[-3.1229999151637267,51.489799493263156],[-3.122999917360629,51.48979949189168],[-3.1229999134062156,51.489799494634646],[-3.122999906539917,51.48979949951172],[-3.1229999164818674,51.48979949189168],[-3.1230220862655598,51.48978270247667],[-3.1229999178000094,51.489799491343085]],[[-3.1229999257088474,51.48979948640575],[-3.1229999160424895,51.489799492988865],[-3.1230172820891684,51.48978723906687],[-3.1229999257088474,51.48979948640575]],[[-3.1229999204362864,51.489799491617376],[-3.122999929663262,51.489799485857155],[-3.123016213079199,51.489790171296335],[-3.1229999204362864,51.489799491617376]],[[-3.122999912966825,51.48979949408605],[-3.1229999156031107,51.489799491343085],[-3.1230160346891136,51.48978484967046],[-3.122999912966825,51.48979949408605]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230139265505077,51.489802772202374],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011907152818,51.489774208887795],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230117929172705,51.48978638408545],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123011125500281,51.48979003469729],[-3.122999906539917,51.48979949951172]],[[-3.12299991911815,51.4897994976519],[-3.1229999169212475,51.4897994979262],[-3.1230111136389733,51.48979794815059],[-3.12299991911815,51.4897994976519]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999134062156,51.489799494634646],[-3.122999914284962,51.48979949408606],[-3.122999906539917,51.48979949951172],[-3.122999915603108,51.48979949353746],[-3.1229999257088474,51.48979948640575],[-3.123007591129767,51.489794264074916],[-3.122999906539917,51.48979949951172]],[[-3.122999929663262,51.489799485857155],[-3.1229999235119426,51.48979948942301],[-3.123007280927731,51.4897951308518],[-3.122999929663262,51.489799485857155]],[[-3.1229999090124094,51.48979949216598],[-3.123002201696365,51.489791769623004],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999081336492,51.48979949381175],[-3.12299990813365,51.489799492988865],[-3.123000311484386,51.48979758086815],[-3.1229999085730293,51.48979949216598],[-3.12300495792456,51.489778401235625],[-3.1229999090124094,51.48979949216598]],[[-3.122999910769925,51.489799492165986],[-3.122999910330552,51.48979949298886],[-3.122999910330547,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230046424511464,51.4897901235698],[-3.122999910769925,51.489799492165986]],[[-3.1229999191181466,51.48979950039487],[-3.1229999204362855,51.489799500394874],[-3.123004453079409,51.489799772771185],[-3.1229999191181466,51.48979950039487]],[[-3.122999916042489,51.48979948503427],[-3.1229999129668307,51.48979948969731],[-3.1229999147243466,51.48979948640575],[-3.123004301932025,51.48979253408723],[-3.122999916042489,51.48979948503427]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230032333601825,51.489791470091234],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123002613834909,51.48979625327317],[-3.122999906539917,51.48979949951172]],[[-3.1229999116486877,51.48979949189168],[-3.122999916042489,51.48979948503427],[-3.1230011656388825,51.489797601988954],[-3.1229999116486877,51.48979949189168]],[[-3.12299990857303,51.48979948805153],[-3.1230008730117866,51.48979323656058],[-3.12299990813365,51.489799492988865],[-3.122999908133649,51.489799491343085],[-3.1230010918228674,51.4897900997061],[-3.12299990857303,51.48979948805153]],[[-3.122999910769928,51.48979949244027],[-3.122999910330551,51.489799493263156],[-3.122999910769925,51.489799492165986],[-3.1230007253802468,51.48979805622393],[-3.122999910769928,51.48979949244027]],[[-3.1229999147243466,51.48979948640575],[-3.122999910330547,51.489799493537454],[-3.122999910769928,51.48979949244027],[-3.1230006273985373,51.489798296233346],[-3.1229999147243466,51.48979948640575]],[[-3.122999922633184,51.4897994902459],[-3.1229999195575346,51.48979949189168],[-3.1229999235119426,51.48979948942301],[-3.122999922633184,51.4897994902459]],[[-3.1229999169212452,51.48979949353746],[-3.122999916481864,51.489799493537454],[-3.1229999169212466,51.489799493263156],[-3.1229999182393837,51.48979949271457],[-3.1229999204362864,51.489799491617376],[-3.1229999169212452,51.48979949353746]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999169212475,51.4897994979262],[-3.122999906539917,51.48979949951172]],[[-3.122999915603108,51.48979949353746],[-3.122999914284962,51.48979949408606],[-3.1229999160424895,51.489799492988865],[-3.122999915603108,51.48979949353746]],[[-3.1229999116486877,51.48979949189168],[-3.122999910330547,51.489799493537454],[-3.1229999129668307,51.48979948969731],[-3.1229999116486877,51.48979949189168]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999912966825,51.48979949408605],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.12299990813365,51.489799492988865],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908133649,51.489799491343085],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998953916343,51.489799493263156],[-3.122934906323461,51.4897623159238],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229998958310157,51.489799491617376],[-3.1229492112004316,51.489764960971776],[-3.122999906539917,51.48979949951172],[-3.1229998958310157,51.489799491617376]],[[-3.122999906539917,51.48979949951172],[-3.1229072632468093,51.48973855305286],[-3.1229998958310157,51.489799491617376],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12299989583102,51.489799496829015],[-3.122999892755351,51.489799496006135],[-3.1229998905584555,51.48979949545753],[-3.122999887482796,51.489799494634646],[-3.122999885285899,51.48979949408605],[-3.122999882210242,51.48979949326316],[-3.1229998734226387,51.48979949106879],[-3.122999874740772,51.489799491343085],[-3.122999869468218,51.4897994899716],[-3.1229998628775175,51.48979948832582],[-3.122941914400039,51.48978375795727],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229916117613,51.48980495642574],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.12299990505799,51.489799507800875],[-3.1229949725766586,51.48982289788397],[-3.122999906539917,51.48979949951172],[-3.12299990505799,51.489799507800875]],[[-3.1229924268053106,51.489840483305],[-3.12299990505799,51.489799507800875],[-3.122999906539917,51.48979949951172],[-3.1229924268053106,51.489840483305]],[[-3.1229602132036307,51.489835554190925],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229602132036307,51.489835554190925]],[[-3.122999906539917,51.48979949951172],[-3.1229867724276885,51.48981460123791],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122986917424394,51.48981006739152],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998962703904,51.48979949573182],[-3.122949095625995,51.48978081475941],[-3.1229998923159727,51.48979949408605],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924419135198,51.48980908703234],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229624536148943,51.48982168740776],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122960609102282,51.489815737093764],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986585371767,51.48980044479762],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229599482807116,51.48980882591958],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229599482807116,51.48980882591958]],[[-3.122999906539917,51.48979949951172],[-3.122816220712939,51.48975432883318],[-3.122999868150075,51.489799489697305],[-3.1229998786951914,51.48979949244028],[-3.1229998800133347,51.48979949271457],[-3.1229998839677546,51.48979949381175],[-3.122999887043412,51.489799494634646],[-3.1229998892403144,51.489799495183235],[-3.1229998923159688,51.489799496006135],[-3.122999894512872,51.489799496554724],[-3.122999897588533,51.48979949737761],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999897149149,51.48979949545753],[-3.1229768648597376,51.4897892392358],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999897149149,51.48979949545753]],[[-3.1229674094100894,51.489783932419655],[-3.1229998984672904,51.48979949545753],[-3.122999906539917,51.48979949951172],[-3.1229674094100894,51.489783932419655]],[[-3.1229998953916307,51.489799495183235],[-3.1229998883615595,51.48979949244027],[-3.122963116229749,51.48978486749507],[-3.122999906539917,51.48979949951172],[-3.1229998953916307,51.489799495183235]],[[-3.122959628842667,51.48981879357904],[-3.1229998989066687,51.48979950313783],[-3.122999906539917,51.48979949951172],[-3.122959628842667,51.48981879357904]],[[-3.1229998945128723,51.48979949984627],[-3.122937029351931,51.48980121335949],[-3.122999906539917,51.48979949951172],[-3.1229998945128723,51.48979949984627]],[[-3.122999895831016,51.48979949573183],[-3.12297185988415,51.48978959335145],[-3.1229998962703904,51.48979949573182],[-3.1229998980279077,51.489799496554724],[-3.122999895831016,51.48979949573183]],[[-3.122999894512872,51.489799496554724],[-3.1229998936341135,51.48979949628042],[-3.12299989583102,51.489799496829015],[-3.1229998967097723,51.48979949710331],[-3.122999894512872,51.489799496554724]],[[-3.122999894952253,51.489799500120576],[-3.1229864921074113,51.48980030572855],[-3.1229998914372135,51.48979950012057],[-3.122969523694127,51.48980099201517],[-3.1229998945128723,51.48979949984627],[-3.122999896270393,51.48979949984627],[-3.122999894952253,51.489799500120576]],[[-3.1229998839677546,51.48979949381175],[-3.122999883089,51.489799493537454],[-3.122999885285899,51.48979949408605],[-3.1229998839677546,51.48979949381175]],[[-3.1229745440535437,51.48979294114053],[-3.1229998628775175,51.48979948832582],[-3.122999868150075,51.489799489697305],[-3.1229745440535437,51.48979294114053]],[[-3.121452686373669,51.491315592437516],[-3.1214105455221355,51.491298507871164],[-3.1213688770672694,51.491280961655356],[-3.1213277034185567,51.49126296339126],[-3.1212870443490295,51.491244521582885],[-3.1212469152377555,51.49122564336268],[-3.121207304221817,51.49120632297081],[-3.1211682552401903,51.491186581803575],[-3.1211297515965977,51.49116641190669],[-3.1210918227300963,51.49114582836746],[-3.121054478746749,51.49112483667253],[-3.1210544765498347,51.49112483557531],[-3.121017715692306,51.491103434628016],[-3.1209815713537195,51.49108164390453],[-3.1219907534576974,51.49044057597779],[-3.1220088256097758,51.49045147118664],[-3.1220088291248134,51.49045147338105],[-3.1220272066631622,51.49046217219337],[-3.122045877285067,51.49047266692863],[-3.1220458794819823,51.49047266802582],[-3.122045880800121,51.49047266884873],[-3.1220648414298786,51.49048295868385],[-3.122084091188664,51.49049304224724],[-3.1220840907492833,51.49049304224724],[-3.1221036195312246,51.49050291460133],[-3.12212342118492,51.49051257272865],[-3.1221234207455284,51.49051257272865],[-3.122143493073904,51.49052201553189],[-3.1221638185015586,51.49053123450758],[-3.1221638193803214,51.49053123478189],[-3.122163822456006,51.490531236153394],[-3.122184406694752,51.49054023404443],[-3.1222052348054112,51.49054900454174],[-3.1222263094241023,51.49055754846812],[-3.121452686373669,51.491315592437516]],[[-3.1219730101644183,51.489169508455404],[-3.1219730106037833,51.489169508729695],[-3.121955557538009,51.48918079066509],[-3.1219384168540882,51.48919226543113],[-3.1219216061273265,51.48920392068477],[-3.1219216048091782,51.48920392150765],[-3.121921602612268,51.48920392315341],[-3.121905120085185,51.489215759717666],[-3.1218889679547326,51.48922777649551],[-3.121873151054195,51.48923996992128],[-3.1218576834439222,51.48925232902338],[-3.1218576830045444,51.48925232929768],[-3.1218576803682394,51.489252331492025],[-3.121842557654507,51.489264859562105],[-3.121827790822045,51.48927754782292],[-3.1218133776740835,51.489290397646066],[-3.121813374598371,51.489290400388995],[-3.121799325680268,51.48930340299722],[-3.1217993230439562,51.48930340546587],[-3.121785639674052,51.48931655921353],[-3.1145005760575186,51.48641865225391],[-3.114596385658875,51.48632656543363],[-3.114694739369281,51.486235551487994],[-3.1147956486055888,51.486145598342404],[-3.1148990483262033,51.486056766056805],[-3.115004908644606,51.485969079035],[-3.115113216811813,51.48588254796712],[-3.1152238998815545,51.48579723126678],[-3.115336980258695,51.485713111099464],[-3.1154523814841526,51.485630245604284],[-3.115570081146105,51.48554864958504],[-3.11569003398523,51.485468354301865],[-3.115690034424525,51.4854683545762],[-3.1158122483478516,51.48538935618256],[-3.1159366007669886,51.485311733112916],[-3.1219907786877372,51.4891584163333],[-3.1219730101644183,51.489169508455404]],[[-3.119715370064804,51.49155064978764],[-3.1196669239300294,51.491514604777784],[-3.11961947446161,51.49147802270407],[-3.119619474022211,51.49147802270406],[-3.1195730726256885,51.49144094389079],[-3.119573073065095,51.4914409438908],[-3.119527703922162,51.491403355721076],[-3.1194833938332267,51.49136527986632],[-3.119440160371647,51.49132673168884],[-3.1206267692430076,51.490817666182416],[-3.1206555940855947,51.490843367240004],[-3.1206555945249996,51.490843366965706],[-3.1206851277133594,51.4908687446346],[-3.12068512771334,51.490868744908894],[-3.120715372323616,51.49089380193157],[-3.1207153723236067,51.49089380220586],[-3.120715376277967,51.4908938052232],[-3.120715378035445,51.49089380686902],[-3.1207153784748414,51.490893806869025],[-3.120746318690119,51.4909185309013],[-3.120746319129519,51.49091853062701],[-3.120777940011603,51.49094290850184],[-3.1207779395721955,51.490942908776134],[-3.120777943965957,51.49094291179348],[-3.1207779461628293,51.4909429134393],[-3.1208102437576644,51.490966943235975],[-3.119715370064804,51.49155064978764]],[[-3.1181425711256456,51.49173112419072],[-3.1180893116415676,51.49167790929723],[-3.118089310762861,51.4916779084743],[-3.1180375546428216,51.491624128569185],[-3.1179873010046144,51.491569783654384],[-3.1179385762054235,51.49151490198548],[-3.1178913872711087,51.491459489599194],[-3.1178457636330865,51.49140358298007],[-3.1178017105591493,51.49134718816468],[-3.1177592368314406,51.49129031694991],[-3.119069436595319,51.490917634456665],[-3.1191012861440885,51.49096027901271],[-3.1191012857047054,51.49096027901269],[-3.1191012887800875,51.49096028312725],[-3.1191012922948222,51.490960287790415],[-3.119101292734234,51.49096028751613],[-3.1191343361982544,51.49100258703766],[-3.1191343366376523,51.49100258703767],[-3.1191685577637767,51.491044520128064],[-3.1191685582031936,51.49104451985379],[-3.119203939419891,51.491086065390604],[-3.1192039389805086,51.49108606539059],[-3.119203942055959,51.49108606895654],[-3.1192039464494643,51.491086073894024],[-3.1192039464494923,51.49108607361972],[-3.119240484244267,51.49112722721307],[-3.1192404838048526,51.49112722748735],[-3.119240485562291,51.49112722913319],[-3.1192404912738834,51.49112723544219],[-3.1192781742257027,51.49116798474731],[-3.119278173786308,51.491167984747285],[-3.11927818169472,51.49116799297642],[-3.1192781816947366,51.491167992702124],[-3.1193169979430353,51.49120832537418],[-3.11931699750365,51.49120832537416],[-3.119317004094021,51.491208331957495],[-3.119317005412088,51.49120833332901],[-3.119317005851478,51.49120833332903],[-3.1193569435355823,51.49124823674891],[-3.1181425711256456,51.49173112419072]],[[-3.1150185519351474,51.491862987425804],[-3.114962096942338,51.49177573236069],[-3.114908069951661,51.49168784298708],[-3.1148565232246073,51.49159940352092],[-3.1148074444494003,51.49151039256947],[-3.114760873146033,51.49142088227852],[-3.114716809301114,51.49133087374823],[-3.114675268713539,51.49124039934951],[-3.1160627449891565,51.49100029044225],[-3.116097358969813,51.49107567407709],[-3.1160973585304226,51.491075674077074],[-3.1161340822066017,51.491150684506806],[-3.116134084402824,51.49115068944427],[-3.116134089674015,51.49115069959355],[-3.116134090113449,51.49115069931927],[-3.116172905045871,51.49122529813937],[-3.116172905485267,51.4912252981394],[-3.116213792355364,51.49129944749377],[-3.1162137919159227,51.49129944776804],[-3.1162137980659406,51.49129945791737],[-3.1162138007016176,51.491299462580564],[-3.1162567546860007,51.491373155335076],[-3.1162567542465682,51.49137315560936],[-3.1162567603966718,51.491373165210085],[-3.1162567630323177,51.49137317014756],[-3.116256763471762,51.491373169873285],[-3.1163017714005323,51.49144638380694],[-3.1163017705217415,51.4914463838069],[-3.1163488275711986,51.49151911041386],[-3.1150185519351474,51.491862987425804]]],[[[-3.135996080091376,51.49366826085557],[-3.134696363719498,51.49328144950848],[-3.13459722911447,51.493408379820565],[-3.1358859338188267,51.493809295588974],[-3.135996080091376,51.49366826085557]]],[[[-3.1359334403812333,51.4893049589913],[-3.135917625255649,51.489164119902526],[-3.1359176239348145,51.4891641103023],[-3.135917622172359,51.489164092747515],[-3.1359176217329847,51.48916409274756],[-3.1358978752630553,51.48902347626584],[-3.1358978757024274,51.489023476265785],[-3.1358978739416097,51.48902346447123],[-3.1358978713005774,51.489023447465144],[-3.1358978708612044,51.489023447465186],[-3.135874192200477,51.488883040422394],[-3.13444374183697,51.48898493900838],[-3.1344647887504435,51.48910976627843],[-3.1344823392821475,51.489234774097184],[-3.1344963951651046,51.48935997837523],[-3.1359334403812333,51.4893049589913]]],[[[-3.132499719300496,51.48769891084338],[-3.1324395281157242,51.48759570777589],[-3.131091066700669,51.4879105816996],[-3.131142656497539,51.48799904206217],[-3.132499719300496,51.48769891084338]]],[[[-3.130555431559862,51.481110426945556],[-3.13031141054121,51.48102943184531],[-3.1303114105411183,51.48102943129672],[-3.130311367927298,51.481029417858814],[-3.1303113600195287,51.48102941511635],[-3.130065113053502,51.4809510910187],[-3.130065112614298,51.48095109156731],[-3.1298167077628714,51.480875460398245],[-3.129197108544097,51.48168675357169],[-3.1289694492324966,51.48162048291689],[-3.128969446157279,51.48162048209415],[-3.1289694026648016,51.48162046947872],[-3.128969402225534,51.48162046975303],[-3.128739925621238,51.481556689359955],[-3.128739926060504,51.48155668908563],[-3.128739897065691,51.481556681406744],[-3.128739878614448,51.4815566764703],[-3.128508654977942,51.4814954060744],[-3.1285086554171744,51.48149540552579],[-3.12827570053263,51.48143665005355],[-3.1282757009718964,51.48143664977925],[-3.128275679445656,51.48143664484287],[-3.128275659676568,51.48143663963212],[-3.1282756592373087,51.481436639906434],[-3.1280411466009674,51.48138044295328],[-3.1280411470402414,51.481380442678955],[-3.12804111584922,51.48138043554859],[-3.128041098276806,51.481380431434886],[-3.128041098276836,51.481380431709184],[-3.127805058167403,51.481326800122],[-3.1282854750068587,51.48047951859149],[-3.1280241723498814,51.48042335105233],[-3.1280241723498197,51.48042335050374],[-3.1280241345700537,51.480423342825034],[-3.1280241187552553,51.480423339534156],[-3.1277612861147053,51.48037002745377],[-3.1273285144431977,51.481227260708756],[-3.1275674747353723,51.48127573087508],[-3.127805008964852,51.48132678942645],[-3.1273245791524538,51.482174069414064],[-3.127537084025824,51.482222353536756],[-3.1277481710627684,51.48227293703603],[-3.127220663152626,51.4831092313989],[-3.127407030636667,51.483156237092906],[-3.1275920605492153,51.48320526740161],[-3.1277757041449723,51.48325630916707],[-3.1279578621548456,51.48330933524453],[-3.1281385420659564,51.48336434728634],[-3.1281385420659236,51.483364347012035],[-3.1283176147322664,51.483421305806374],[-3.128495104334175,51.483480219039734],[-3.1286709019324888,51.483541050243026],[-3.128844997437809,51.48360379640705],[-3.1290172797115328,51.4836684174977],[-3.1291877557966377,51.48373491599122],[-3.1293563286107404,51.48380325377341],[-3.12952299025744,51.483873428109895],[-3.1303382569531433,51.48313264314454],[-3.1301507828290926,51.483053706074664],[-3.1301507678914344,51.48305370004105],[-3.1301507441668277,51.483053689893524],[-3.130150744166877,51.4830536901678],[-3.1299611311055213,51.482976823316335],[-3.1299611284694655,51.48297682221931],[-3.129961092443478,51.48297680768373],[-3.129961092004247,51.48297680823233],[-3.1297693606394485,51.482902018993805],[-3.1305213965847405,51.482135607338954],[-3.130305985666657,51.48205481036534],[-3.130305985227398,51.48205481063967],[-3.130088432952105,51.48197640307286],[-3.1300884333913643,51.48197640279854],[-3.1300884065923325,51.48197639347406],[-3.1300883885798187,51.48197638689203],[-3.1300883881405555,51.48197638716635],[-3.129868684380308,51.48190036350909],[-3.130555431559862,51.481110426945556]]],[[[-3.124566884181725,51.37745085022866],[-3.1214329250649127,51.377450850228605],[-3.1214454305169617,51.37834964804972],[-3.121445618114411,51.378349648052215],[-3.1183382312308834,51.37838350929242],[-3.118338231231162,51.3783835065494],[-3.118337966928368,51.37838351229921],[-3.1183375917327747,51.3783835163988],[-3.118337591732357,51.378383520513346],[-3.1152311631872607,51.37845124250728],[-3.115293663438037,51.37934922288295],[-3.1183751008685907,51.37928204575989],[-3.1184501222329515,51.38107909168673],[-3.1214831339139693,51.381046040949826],[-3.1245168598724824,51.38104604094748],[-3.1245418727876513,51.3792484457309],[-3.1214585707084352,51.3792484457392],[-3.1214460700138744,51.378349648058204],[-3.124554378729601,51.37834964804978],[-3.124566884181725,51.37745085022866]]],[[[-3.1229999090124094,51.48979949216598],[-3.12299990857303,51.489799493263156],[-3.122999908573028,51.489799493537454],[-3.1229999090124094,51.48979949216598]]],[[[-3.122999908573028,51.489799493537454],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908573028,51.489799493537454]]],[[[-3.1168392909840126,51.34244236994258],[-3.1167644057904687,51.340645306678404],[-3.1126090974187983,51.34073589527776],[-3.1126090969810316,51.34073589445481],[-3.112609009827755,51.340735897464405],[-3.112608356836997,51.34073591167019],[-3.112608357711289,51.34073591880215],[-3.108457037685636,51.340871740770964],[-3.1084570372485505,51.34087173802787],[-3.108456777538164,51.34087174951633],[-3.1084561836663345,51.34087176891806],[-3.108456184540158,51.340871775501455],[-3.1043085117046427,51.34105283970811],[-3.1045329883314743,51.342845008354224],[-3.1086314266534676,51.34266609334702],[-3.1127338067732397,51.34253187246659],[-3.1168392909840126,51.34244236994258]]],[[[-3.1166303945384386,51.49344271476973],[-3.1165294941229815,51.49337275024879],[-3.116430580760156,51.493301707767024],[-3.1153355952068154,51.493885373200065],[-3.1154509914511523,51.49396825519029],[-3.115450991011732,51.493968255190275],[-3.115450994526684,51.49396825765916],[-3.1154510138588547,51.49396827164951],[-3.115451014298314,51.493968271375245],[-3.1155687106566337,51.49404988340472],[-3.1166303945384386,51.49344271476973]]],[[[-3.1053551045494987,51.493698586630295],[-3.1052487965064435,51.493505710666305],[-3.105147918302979,51.49331174454956],[-3.1037745745544765,51.49358180454016],[-3.103883228635664,51.493790734314295],[-3.1038832299540395,51.4937907340402],[-3.103997687217322,51.49399840644928],[-3.1053551045494987,51.493698586630295]]],[[[-3.10511849167509,51.49560852278303],[-3.104958820415403,51.495412796489894],[-3.104804678802672,51.4952154011894],[-3.1048046792421014,51.49521540118947],[-3.1046560505321543,51.49501631468265],[-3.104513013724311,51.49481564123533],[-3.1043756328786034,51.494613472767206],[-3.104243935599719,51.49440985181836],[-3.104117909968007,51.49420475865651],[-3.1027690567996027,51.49451930382498],[-3.10290405139861,51.49473900376921],[-3.1029040500800913,51.49473900431758],[-3.103045167886728,51.494957199802066],[-3.103045167447185,51.4949572000763],[-3.103045181499826,51.4949572209252],[-3.103045196430378,51.49495724396863],[-3.1030451968699264,51.4949572436944],[-3.1031923659388068,51.49517382551512],[-3.101871697892175,51.49553199490328],[-3.1020351425062653,51.495761317755345],[-3.102035141627265,51.49576131802948],[-3.1020351622683604,51.495761345188484],[-3.102035175003601,51.49576136356861],[-3.1020351758826066,51.49576136329447],[-3.1022049746415603,51.49598882483925],[-3.10220497332312,51.495988825113315],[-3.102381155726255,51.49621446318155],[-3.102381142550194,51.49621444727005],[-3.099803390064598,51.49701606049518],[-3.100008680949526,51.49726774210959],[-3.1025636326924917,51.4964381603304],[-3.10238117944299,51.496214492261124],[-3.103670019358972,51.49581366134594],[-3.103841073559119,51.49602334852747],[-3.10511849167509,51.49560852278303]]],[[[-3.101871729070754,51.495532040990675],[-3.101714703520754,51.495300943821476],[-3.101564171607784,51.4950681820928],[-3.1002242742738444,51.495397344543626],[-3.100384195868836,51.4956446365175],[-3.1003841949898256,51.49564463679161],[-3.100384212115483,51.495644661755875],[-3.100384227922964,51.49564468644557],[-3.100384228801979,51.49564468617144],[-3.1005510087058283,51.49589014939927],[-3.0992302992590575,51.496248288728516],[-3.0994141806490716,51.49650630688466],[-3.0994141617661235,51.496506281371325],[-3.098103639352814,51.496878741180964],[-3.0983053375102174,51.497148965520395],[-3.0983052962304742,51.497148912572555],[-3.097005359869476,51.497535579620525],[-3.097225548026283,51.4978176166844],[-3.0972255471472123,51.497817616958514],[-3.0972255655918777,51.49781763918055],[-3.0972255919401146,51.497817673199044],[-3.097225593258644,51.497817672925045],[-3.0974536364463097,51.498097268116965],[-3.0987311700732203,51.497682512084936],[-3.098514496817761,51.497416866398034],[-3.0983053383885197,51.49714896661776],[-3.099605250556593,51.496762282394016],[-3.0994141999714535,51.4965063323981],[-3.100724697509498,51.49613385545299],[-3.100551043397748,51.49589019768205],[-3.101871729070754,51.495532040990675]]],[[[-3.0992303339480007,51.49624834057752],[-3.0990536791816345,51.495988332480835],[-3.0977231429219563,51.49633201278279],[-3.0979096055564024,51.49660646803186],[-3.0992303339480007,51.49624834057752]]],[[[-2.9802135275498123,51.38873555325066],[-2.9783139622103745,51.38738684876878],[-2.975476758845882,51.388978828753686],[-2.9745083660611455,51.388314919174086],[-2.971697437347662,51.38994822115345],[-2.969723979407746,51.38864166533094],[-2.966922698441902,51.39032704526657],[-2.9669226835037033,51.390327054572914],[-2.9669221202865907,51.39032739340759],[-2.9669221299104667,51.39032739972935],[-2.9641686437182777,51.392042694453494],[-2.96314612309012,51.391411301295946],[-2.9604221243857083,51.393168291830506],[-2.9625021169202577,51.39440858838546],[-2.9651906397148413,51.39267443035354],[-2.96621320965473,51.39330579729711],[-2.968931722295869,51.391612242982696],[-2.9699365515165823,51.3922546455339],[-2.972683624280812,51.390601815727464],[-2.9736704230847204,51.3912550680259],[-2.9764446200256147,51.38964306996325],[-2.9774130631961127,51.3903069546066],[-2.9802135275498123,51.38873555325066]]],[[[-2.9621236332374363,51.390779899975406],[-2.9611011710920407,51.390148489939534],[-2.958342733891079,51.39192764279143],[-2.9562629602186252,51.3906872603652],[-2.95351995705675,51.39251911841267],[-2.9535201377214473,51.392518993318326],[-2.952463151414644,51.391910215413056],[-2.9497548040763792,51.39378316191065],[-2.949754797511939,51.39378315860932],[-2.949754473489371,51.39378339073767],[-2.9497542422550977,51.39378355058768],[-2.94975424706776,51.39378355333781],[-2.947098889477407,51.39568532962797],[-2.947098885537437,51.39568532797624],[-2.9470987144829004,51.3956854547209],[-2.9470983389896186,51.39568572379523],[-2.947098346866405,51.39568572792159],[-2.9444962224932856,51.39761615115773],[-2.944496212427131,51.39761614620496],[-2.9444957475433364,51.397616503734],[-2.94449568861522,51.39761654725811],[-2.9444956899275017,51.39761654808302],[-2.9419470723438006,51.399575435139155],[-2.943069423106082,51.40013669943609],[-2.945602195616333,51.39818995548639],[-2.9467087263477074,51.398763351285446],[-2.9492790270400184,51.396856469196024],[-2.9503694016559483,51.39744182040396],[-2.9529760109805125,51.39557486363059],[-2.9556336476812164,51.39373689781867],[-2.956690714675854,51.394345640349286],[-2.9593821670198035,51.39254812727525],[-2.9593821705195427,51.39254812947455],[-2.9621236332374363,51.390779899975406]],[[-2.951902464402446,51.39497748962225],[-2.9519024578376944,51.39497748632104],[-2.9519021487654356,51.39497770777937],[-2.951901909180194,51.39497787338171],[-2.9519019139931286,51.394977876131755],[-2.949279383659547,51.39685620420128],[-2.949279559109783,51.39685607416836],[-2.9481892123476734,51.396270707825174],[-2.950828290773303,51.39438055845094],[-2.9535195847388223,51.39251937599161],[-2.9545766021811573,51.393128141840876],[-2.951902464402446,51.39497748962225]]],[[[-2.9433897383650858,51.39704272611546],[-2.9422832915324326,51.396469295523126],[-2.9397024523566984,51.39845287468851],[-2.9408247486143746,51.39901416031435],[-2.9433897383650858,51.39704272611546]]]]} \ No newline at end of file +{"type":"MultiPolygon","coordinates":[[[[-3.30941915032233,51.53780568725623],[-3.3080861950590075,51.537463838363806],[-3.3067278272108385,51.539473525977904],[-3.308051058272776,51.53982984855978],[-3.30941915032233,51.53780568725623]]],[[[-3.3067532597671656,51.5371219743089],[-3.3054203448869783,51.536780095091295],[-3.3040817012645824,51.53876043015245],[-3.3027585322282165,51.53840406658359],[-3.301374398918109,51.5403555525948],[-3.3026874384036735,51.54072628157445],[-3.3040816466043905,51.538760511153754],[-3.3040814266495504,51.53876083653242],[-3.3054046163768,51.53911718872721],[-3.3067532597671656,51.5371219743089]]],[[[-3.3027545746036,51.53609629117226],[-3.301421719201108,51.53575436647166],[-3.3001122499934668,51.53769129298221],[-3.296142986492751,51.53662202133366],[-3.294809777950515,51.53850132698179],[-3.293496868713629,51.53813051354931],[-3.292121712748439,51.53998073199242],[-3.290819361871763,51.539595656504524],[-3.289403348187319,51.5414166182719],[-3.287936674563477,51.54322162260439],[-3.2853765744131938,51.542395148543044],[-3.2838825360674653,51.54415660436839],[-3.283882539590554,51.544156605460735],[-3.282339851677814,51.54590090254047],[-3.280747972216977,51.547628648631274],[-3.2832353898725475,51.54853764159162],[-3.2848520415687505,51.54678290474435],[-3.287364563965132,51.54766460720725],[-3.288955930635636,51.545865045530405],[-3.2902243346867017,51.546292120102045],[-3.2917766921578884,51.544461605653204],[-3.29305685232551,51.54487478505397],[-3.2945689619709984,51.543013606564706],[-3.2958604757036007,51.5434127616585],[-3.297331055619441,51.54152128453389],[-3.298633524792323,51.54190629336489],[-3.300061375045217,51.53998480726149],[-3.3000613807697987,51.53998480889862],[-3.3000615246978775,51.53998460597773],[-3.300061648970519,51.53998443874478],[-3.3000616445665876,51.53998443737995],[-3.301435099949513,51.538048084585505],[-3.301435109195865,51.53804808704012],[-3.3014353309148015,51.53804775892073],[-3.301435381657783,51.53804768752695],[-3.3014353798962595,51.53804768698104],[-3.3027545746036,51.53609629117226]]],[[[-3.301531391252313,51.51846922562661],[-3.2987401157240672,51.51802335260609],[-3.297927299941622,51.5199341653201],[-3.3007057835951823,51.52041038807222],[-3.301531391252313,51.51846922562661]]],[[[-3.3012087224089393,51.52259467503561],[-3.299826275627792,51.52234149135655],[-3.2988924294167306,51.524263480149536],[-3.3002676332855185,51.52453169053441],[-3.3012087224089393,51.52259467503561]]],[[[-3.300429465690905,51.47112200993378],[-3.299876677384325,51.46919135361843],[-3.298462296804608,51.46935727724887],[-3.2990106053799004,51.471272494806364],[-3.300429465690905,51.47112200993378]]],[[[-3.297860841192189,51.467449081881476],[-3.2972059502024367,51.46554697406899],[-3.295801802604193,51.465743593966806],[-3.2964512325001927,51.467630008244946],[-3.2922227195104194,51.468173779262465],[-3.292804785299015,51.47002118087175],[-3.294219203863351,51.46985532906567],[-3.2947539688799137,51.47172384694748],[-3.296172857193062,51.47157341331309],[-3.295633616122381,51.46968945991539],[-3.297048021634878,51.46952357314731],[-3.296451270244276,51.46763011763405],[-3.2964513572776566,51.46763036985957],[-3.297860841192189,51.467449081881476]]],[[[-3.294397783154588,51.46594058277716],[-3.293701427004324,51.46407644155374],[-3.2909045914693213,51.464500134586196],[-3.291589425815944,51.46633373216876],[-3.294397783154588,51.46594058277716]]],[[[-3.2913903525279617,51.47018701616773],[-3.2908133024628934,51.468355353958344],[-3.2908133094856336,51.46835535285111],[-3.2908132233683562,51.468355102814556],[-3.2908131918187795,51.46835500246662],[-3.290813188746585,51.46835500301961],[-3.2901850928517304,51.466529905627844],[-3.28737666141,51.466922960950534],[-3.2867093778349465,51.46513591486066],[-3.2881078442371896,51.46492412961458],[-3.287384307827808,51.46312868548479],[-3.2845997285824597,51.46358265342938],[-3.2838395520568273,51.46182597848132],[-3.281068123361402,51.462310149944656],[-3.281815095839357,51.464036554937685],[-3.2804227609439742,51.46426348046688],[-3.281115393741344,51.46598288760219],[-3.2825139079749284,51.4657711696531],[-3.2831640642458155,51.467512776910425],[-3.2845683147463984,51.46731631224839],[-3.2851750825828887,51.46908006495374],[-3.2894037627043318,51.46853655720011],[-3.2899759095007517,51.47035283412477],[-3.2913903525279617,51.47018701616773]]],[[[-3.2906417248926534,51.52265350386927],[-3.289266632409053,51.52238518359176],[-3.2883329348950836,51.5241917206214],[-3.284230761283584,51.52334184161874],[-3.2851414514993915,51.521580126533976],[-3.2837664232317345,51.521311742016195],[-3.282863217818765,51.52305887611482],[-3.282863219579477,51.52305887666101],[-3.2819115821661913,51.52479521054463],[-3.2791931033238804,51.52419880520862],[-3.2782097777800017,51.52589531071599],[-3.276859074196047,51.52558232141124],[-3.2758372643858324,51.52725321036156],[-3.2744954971652676,51.52692553654849],[-3.2734363639174626,51.52857044469723],[-3.270771561313455,51.52788591573269],[-3.2696859693221283,51.52949010491763],[-3.2683633368450637,51.52913335243129],[-3.2672428645061706,51.530711435984315],[-3.269867850300298,51.531453642850764],[-3.2686824380520023,51.533047463787646],[-3.26998441259134,51.53343278812903],[-3.268743721640165,51.53502735718362],[-3.267458175855293,51.53660857592244],[-3.268737889279079,51.53702201923803],[-3.270034618188922,51.53542699034204],[-3.2700346239127467,51.535426992254926],[-3.2700347881659746,51.535426781390804],[-3.2700348683346,51.535426682544276],[-3.2700348656921614,51.535426681450396],[-3.271286413516726,51.53381809908892],[-3.2712864187996993,51.53381810072802],[-3.271286558487273,51.53381791293386],[-3.271286671046952,51.533817768238286],[-3.2712866670842793,51.53381776687182],[-3.272492926305972,51.532195792258065],[-3.273805495882116,51.532566844901964],[-3.2725884421503317,51.53420339748793],[-3.2738904874861694,51.53458868004804],[-3.275118322354458,51.53293756599679],[-3.273805729253845,51.53256653080873],[-3.2738056281107784,51.53256666671467],[-3.2749764726972637,51.530917304320404],[-3.2749764801807446,51.53091730650507],[-3.2749766648579732,51.530917033616724],[-3.2749767125696945,51.530916966352656],[-3.27497671080877,51.530916965806355],[-3.276101033440626,51.52925525949321],[-3.2800985143979005,51.530281860862694],[-3.278944747153586,51.531987304504966],[-3.281590354348,51.53270055973792],[-3.280368670486106,51.534421888589364],[-3.2829940875127943,51.53516380238974],[-3.284236051273269,51.533413757138355],[-3.2842360596371996,51.533413759321235],[-3.2842362608952707,51.53341346198334],[-3.284236305969749,51.533413398285006],[-3.284236304208622,51.53341339773884],[-3.285428769149896,51.53165045089856],[-3.286761382671355,51.53199256024578],[-3.2855589393280504,51.533770335890594],[-3.2868818401288373,51.53412689724795],[-3.2880942650780542,51.53233428598314],[-3.28676162940033,51.53199219481487],[-3.2867613909800344,51.531992547068036],[-3.2879140418532877,51.53020158683473],[-3.285230178217522,51.529546499592115],[-3.2863141942815433,51.527773291013844],[-3.2863141995633827,51.52777329237797],[-3.2863143101357752,51.52777310131465],[-3.2863144176849115,51.52777292561604],[-3.2863144128428217,51.5277729242513],[-3.287348566844673,51.52598817930163],[-3.2887079090007147,51.52628629951607],[-3.2897003720644458,51.52447498408043],[-3.2897003597424823,51.52447498135498],[-3.2906417248926534,51.52265350386927]],[[-3.282763833423946,51.530965827371],[-3.2814312780949053,51.53062367530658],[-3.282546179936144,51.52889168252083],[-3.2838880614237755,51.529219267168735],[-3.282763833423946,51.530965827371]],[[-3.2761012552447606,51.52925491523785],[-3.2747688086147706,51.528912690137794],[-3.274768582808892,51.52891302369831],[-3.275837239456579,51.527253250989716],[-3.275837068891129,51.52725352989573],[-3.277178846591703,51.52758118973062],[-3.2761012552447606,51.52925491523785]],[[-3.273653994316927,51.530560273052465],[-3.2723312984976376,51.53020356509095],[-3.273436146034442,51.52857078290808],[-3.2747685797470205,51.528913028639586],[-3.273653994316927,51.530560273052465]]],[[[-3.2873849446386623,51.520062103649884],[-3.2860026512133262,51.519808756977255],[-3.285141275595982,51.52158048994427],[-3.2865163182911865,51.521848861629785],[-3.2873849446386623,51.520062103649884]]],[[[-3.2823914115680166,51.52104334109557],[-3.2810164160711,51.52077492432165],[-3.2801285573884784,51.5224921723278],[-3.2814958791173097,51.522775532058866],[-3.2823914115680166,51.52104334109557]]],[[[-3.268039683192168,51.51311436482603],[-3.2652490560598153,51.51266769380919],[-3.2658645786573453,51.51111438568215],[-3.2644632983855955,51.510906261427095],[-3.2638537658218207,51.512444333802335],[-3.261063233325376,51.51199756506631],[-3.260423443347005,51.51349871485506],[-3.261812280510714,51.513737277826415],[-3.261123879626418,51.51524596029626],[-3.260393272749355,51.5167470439246],[-3.2658923758927343,51.5178215944073],[-3.266652007854612,51.51626049107757],[-3.266652009174374,51.516260491350245],[-3.266652034061804,51.51626043673494],[-3.266652153748408,51.51626019081952],[-3.266652147149595,51.516260189456126],[-3.2673677975562048,51.514691368999706],[-3.267367804593564,51.51469137008822],[-3.267367911505936,51.514691118701805],[-3.2673679442519066,51.51469104734464],[-3.267367942491704,51.5146910467982],[-3.268039683192168,51.51311436482603]]],[[[-3.265047331087454,51.50454806461478],[-3.263626403999646,51.50440143074483],[-3.2631989785720523,51.50593135810492],[-3.2617823346626027,51.50576924842497],[-3.261316766885152,51.50727918616017],[-3.2641406601677376,51.507634215233324],[-3.2646155394578877,51.50609376814499],[-3.2646155456139425,51.50609376896045],[-3.264615605605854,51.50609355466276],[-3.2646156373714326,51.50609345121478],[-3.264615634732522,51.50609345066938],[-3.265047331087454,51.50454806461478]]],[[[-3.2642427150162314,51.520917443892465],[-3.261524693533529,51.52032062797213],[-3.2606518416311285,51.52182553464567],[-3.263352827634462,51.52245187919639],[-3.2642427150162314,51.520917443892465]]],[[[-3.259773974730324,51.49046503033577],[-3.259769514361089,51.488974463086464],[-3.255450552128475,51.489002955685756],[-3.2554547340236413,51.49044617526324],[-3.249695758463139,51.490421169375885],[-3.2496609834575465,51.491801736921175],[-3.251100372499068,51.49182370374083],[-3.2510262280903235,51.49321907702875],[-3.2553420533944557,51.493331908712236],[-3.255418561096607,51.49188949737716],[-3.2568579644513176,51.49191139352996],[-3.256894479167028,51.490452662746584],[-3.259773974730324,51.49046503033577]]],[[[-3.2591229176143126,51.48153662350705],[-3.258868979749208,51.48005450883897],[-3.254579265257543,51.48036465218259],[-3.2548250005702957,51.48179967735671],[-3.2519597345964986,51.4819751615609],[-3.252160820762031,51.483381689633404],[-3.253595733065252,51.48330958175982],[-3.2537592937143955,51.4847334605837],[-3.2580695469444176,51.48456396617894],[-3.2579004559898275,51.48309315251181],[-3.257900460821481,51.483093152231966],[-3.2579004361509165,51.483092980001715],[-3.2579004235255633,51.483092870023086],[-3.25790042045117,51.48309287030092],[-3.257690298149075,51.48162442399021],[-3.2591229176143126,51.48153662350705]]],[[[-3.2370575251006684,51.446068427634955],[-3.2358170306906313,51.44483215442271],[-3.234605120934215,51.445316253789066],[-3.233344581618449,51.44410729685881],[-3.2333445842494526,51.444107295759125],[-3.233344478228016,51.44410719765995],[-3.233344337881274,51.444107063111346],[-3.233344334373717,51.44410706476045],[-3.232050260027249,51.44291199739693],[-3.2320502934570974,51.442912027264406],[-3.2332343960625627,51.44240182200474],[-3.2318922694040824,51.441207767421986],[-3.2307226134117264,51.44173079878541],[-3.232050020302428,51.442911784215426],[-3.230865900090519,51.44342197746064],[-3.232146266024495,51.44460441358133],[-3.2333932537399863,51.445800403612715],[-3.2346069668939,51.44701005082634],[-3.2370575251006684,51.446068427634955]]],[[[-3.2365515225484964,51.54213850645648],[-3.235391517956827,51.541604992737504],[-3.2339256280280284,51.54282186082797],[-3.23507053382027,51.543367934201655],[-3.2365515225484964,51.54213850645648]]],[[[-3.2321591841725437,51.47338250996534],[-3.231682270771058,51.472195465008454],[-3.2302894369610162,51.472421795160926],[-3.2307602027258646,51.473593627303956],[-3.2321591841725437,51.47338250996534]]],[[[-3.231672449727352,51.43949327825778],[-3.2302495197065118,51.4383167436149],[-3.230249753190856,51.43831692965032],[-3.2313894120078803,51.43776871352048],[-3.2299183517277945,51.436595467587296],[-3.22879418888284,51.43715602012401],[-3.230249449352495,51.43831668717366],[-3.2291097676455762,51.43886489408659],[-3.230517616286519,51.440028982812294],[-3.231672449727352,51.43949327825778]]],[[[-3.228896683874253,51.4726483311319],[-3.228399838272377,51.47149694997292],[-3.2270135450739357,51.47173838810745],[-3.227503821606495,51.472874625440156],[-3.228896683874253,51.4726483311319]]],[[[-3.2247676444344577,51.53845264061804],[-3.222478346507599,51.537360286466566],[-3.2211330568259835,51.53843708352752],[-3.2233914500159546,51.5395542183442],[-3.2247676444344577,51.53845264061804]]],[[[-3.222854675668012,51.4724628275924],[-3.2223537146617454,51.47137731614356],[-3.2209743482270055,51.47163375649805],[-3.220450768411644,51.470569284721535],[-3.2218227352530406,51.470297857282326],[-3.221261585414106,51.46922414022785],[-3.2212615871696477,51.4692241396778],[-3.2212615527797066,51.46922407744105],[-3.2212614703150595,51.46922392033761],[-3.2212614659250036,51.469223921164186],[-3.220670425395957,51.46815648095729],[-3.2193145210500083,51.46845763656992],[-3.2187025383502146,51.46741172823063],[-3.2200497962170513,51.46709584876431],[-3.219399395520678,51.46604171897702],[-3.218061194672796,51.466372232298],[-3.2173910738130673,51.46534009497484],[-3.2173912063968686,51.465340289345235],[-3.220048654041101,51.46465019635361],[-3.2193300905907605,51.46359666664936],[-3.219330091468444,51.463596666374336],[-3.2193300685662116,51.4635966343003],[-3.2193299434669305,51.463596450623506],[-3.219329938200293,51.46359645199932],[-3.2185822275693172,51.46255111337289],[-3.221199325699823,51.461803482317194],[-3.220401074545397,51.46073784958381],[-3.2204010767391513,51.46073784875909],[-3.2204010106936485,51.46073776405587],[-3.220400910293205,51.46073763000756],[-3.2204009063436496,51.460737631108024],[-3.2195732015570657,51.459681059820134],[-3.2208599895232664,51.45927894145063],[-3.21999131532131,51.45821738931913],[-3.219991315759801,51.458217389044464],[-3.2199912928708647,51.45821736218219],[-3.2199911365929577,51.45821717085138],[-3.21999113132812,51.45821717277582],[-3.2190931463025225,51.457165447522016],[-3.2190931484961234,51.457165446697324],[-3.219093080720388,51.45716537077227],[-3.219092974203711,51.457165245779635],[-3.21909297069407,51.45716524715399],[-3.2181655922240306,51.456123251075624],[-3.2169143217374314,51.456566862097375],[-3.217829478612018,51.45759515720181],[-3.216565962791385,51.45802505360324],[-3.2156632135807706,51.45701066887471],[-3.215663214019273,51.45701066860006],[-3.215663199058857,51.45701065270259],[-3.2156630274320355,51.45701045945804],[-3.2156630221671456,51.4570104613823],[-3.214732127267953,51.456006081244965],[-3.2147321316551998,51.456006079595745],[-3.214731972825872,51.45600591486679],[-3.2147319345450454,51.45600587347772],[-3.2147319336680353,51.456005874027],[-3.213773150834466,51.455011774383145],[-3.2137731539050565,51.45501177300929],[-3.2137730373267583,51.455011656522785],[-3.213772966495159,51.45501158334],[-3.213772964740608,51.45501158416425],[-3.212786395905433,51.45402787836511],[-3.211573999595481,51.45451173859854],[-3.2105740652816595,51.453552263697986],[-3.2105740674752443,51.45355226287346],[-3.210573986990227,51.453552188598735],[-3.2105738717524313,51.453552078142614],[-3.2105738686813106,51.453552079242094],[-3.2095473296504293,51.45260364650714],[-3.2095473300889243,51.45260364623253],[-3.2095473050226317,51.45260362403287],[-3.2095471181112907,51.45260345136291],[-3.2095471132856828,51.45260345328656],[-3.208494293681064,51.45166636049798],[-3.2084942954355786,51.451666359673816],[-3.2084942061723813,51.45166628293536],[-3.208494076887212,51.451666167824335],[-3.2084940733776732,51.45166616919838],[-3.2074152651285104,51.450740674380874],[-3.2085706425799843,51.450205197035345],[-3.2074506081755727,51.44927872601996],[-3.205170122260398,51.45037468550091],[-3.2040558523984024,51.449485597320425],[-3.2040558541524344,51.449485596222026],[-3.2040557666734113,51.4494855288051],[-3.204055641383712,51.44948542904709],[-3.2040556387521835,51.4494854304204],[-3.202916510424299,51.44860843380451],[-3.2018075418484044,51.44918090731573],[-3.200660320628346,51.44832846613263],[-3.197381743049494,51.450081809175295],[-3.198480700453048,51.45089843202408],[-3.199589750933273,51.45032599508592],[-3.200681287825405,51.451166398898444],[-3.2017492440268387,51.452018583371526],[-3.2027933684580145,51.452882352095145],[-3.2038132736570346,51.453757390525226],[-3.204808627003041,51.4546434145252],[-3.2057788895086836,51.455539937942525],[-3.2045800821565873,51.45603687084229],[-3.205511829669965,51.456931030639076],[-3.2067243519709954,51.456447237954464],[-3.2076440674658038,51.45736440626712],[-3.208538278301319,51.45829168441286],[-3.2110158895841843,51.45737748344871],[-3.2119089928285165,51.458341173690144],[-3.2106576063193057,51.45878471585095],[-3.21151175937576,51.45974461375326],[-3.212338945555813,51.46071360703338],[-3.213138855535764,51.46169132701568],[-3.213911517083318,51.46267781235948],[-3.2152094708420713,51.462289849028274],[-3.215964912651447,51.463298486611755],[-3.2146562927156173,51.463672253272456],[-3.215373345206578,51.46467485039051],[-3.212735517755461,51.46539370727178],[-3.212735633583696,51.46539387697344],[-3.212038992214005,51.46441974133589],[-3.210730312087895,51.464793462737525],[-3.2100175145273084,51.46384161874507],[-3.2100175167213942,51.46384161792054],[-3.210017454212545,51.463841537871964],[-3.210017367923885,51.46384142273092],[-3.2100173644124017,51.46384142355642],[-3.209278110462111,51.462897488583586],[-3.2092781130947685,51.46289748748447],[-3.209278032989516,51.46289738934477],[-3.209277968723671,51.462897307651296],[-3.2092779665290974,51.46289730820151],[-3.2085124823689264,51.46196157069717],[-3.208512483246648,51.461961570422226],[-3.208512461243349,51.46196154492858],[-3.208512324806844,51.461961378254955],[-3.2085123204182837,51.46196137962964],[-3.207720689557966,51.46103394682295],[-3.206456983826482,51.46146373403676],[-3.2072367811756775,51.46237733312877],[-3.20596122269176,51.46279327134895],[-3.2067040388073464,51.463701361324965],[-3.2074213486184777,51.464617342397716],[-3.208113016702784,51.46554104177332],[-3.2094217369640714,51.4651673534708],[-3.2100977126815007,51.466112667855334],[-3.210747237446329,51.46706525839076],[-3.212076066225651,51.46672029605743],[-3.2127083397025107,51.46769431470418],[-3.214046613948207,51.4673638663868],[-3.214660538082218,51.4683590661014],[-3.213313213273907,51.46867488549624],[-3.213890847177831,51.46966228961013],[-3.215246819428655,51.46936120088817],[-3.21580492539461,51.47036937654603],[-3.2171691151354986,51.47008309122312],[-3.2177067095367247,51.4711119145486],[-3.2182155901241263,51.4721466279813],[-3.2186955487578994,51.47318683378094],[-3.219146356845205,51.47423204313956],[-3.220539302233143,51.47400584814757],[-3.220081954033288,51.472945550247545],[-3.222854675668012,51.4724628275924]],[[-3.2160623115624496,51.46568510555795],[-3.215373471155693,51.464675026390495],[-3.2153734922941455,51.46467505599799],[-3.216692378677418,51.464315607737475],[-3.2173910628010676,51.46534007880013],[-3.2160623115624496,51.46568510555795]],[[-3.212254471766347,51.45692016085463],[-3.2113216348973928,51.455952909112014],[-3.2125474056883663,51.455482348173206],[-3.2134932148707964,51.456463023864835],[-3.212254471766347,51.45692016085463]],[[-3.212075936284157,51.46672009591881],[-3.2120759446532703,51.46672010880444],[-3.211416705294197,51.465753312193684],[-3.2127356551636868,51.46539390850116],[-3.2134047476449483,51.46637511411822],[-3.212075936284157,51.46672009591881]],[[-3.207936660806959,51.45596324246485],[-3.206977861696402,51.455043168432766],[-3.2081766222570764,51.45454621257667],[-3.209149132704333,51.455479420236934],[-3.207936660806959,51.45596324246485]]],[[[-3.2082898248788383,51.554267999527774],[-3.2073714472424952,51.553575123700426],[-3.205573932415067,51.55448465673884],[-3.2037509085137734,51.55537458793507],[-3.201903824168089,51.556244216238554],[-3.201903821524654,51.55624421432027],[-3.200032258816615,51.55709374076065],[-3.199193731670927,51.556362560430905],[-3.1973188294315147,51.55718271088737],[-3.198136740330274,51.557922919722735],[-3.2000320477654633,51.5570938369018],[-3.200031873647451,51.557093915738236],[-3.2008704263686054,51.55782509437696],[-3.202762372427609,51.55696630840521],[-3.2027623794785796,51.556966314434874],[-3.2046298935050874,51.556087059914354],[-3.204629903616674,51.55608705497005],[-3.2046302799554067,51.55608687778911],[-3.2046302751078546,51.55608687367809],[-3.2064724398109674,51.55518759045623],[-3.206472444217077,51.555187593744606],[-3.2064727466638665,51.55518744074811],[-3.2064728152440716,51.55518740723554],[-3.2064728143625523,51.55518740641329],[-3.2082898248788383,51.554267999527774]]],[[[-3.183467080204134,51.489454550344554],[-3.1834477899848483,51.488795807153394],[-3.1834477917419663,51.488795806878194],[-3.1834477885963715,51.48879575394058],[-3.1834477862903423,51.48879567137849],[-3.1834477840934925,51.48879567137962],[-3.183410082415561,51.48813723849907],[-3.1819717961203358,51.4881771779033],[-3.1820085843851196,51.48882000997718],[-3.182027396075139,51.48946312586259],[-3.183467080204134,51.489454550344554]]],[[[-3.1709129060117642,51.44279030937524],[-3.1695922581644043,51.44227533550471],[-3.1688415361782964,51.44304200412531],[-3.170140896799733,51.44354868041476],[-3.1709129060117642,51.44279030937524]]],[[[-3.1664341632505586,51.50390229413877],[-3.1651563023317495,51.503487736107076],[-3.165156273355379,51.503487770130164],[-3.1655324463838785,51.503026352348606],[-3.164243219945809,51.50262576573476],[-3.163878464162948,51.50307316385138],[-3.1626006505029225,51.50265857819444],[-3.1622352120954194,51.50308807389354],[-3.160969203850639,51.502659616774416],[-3.1606039644640105,51.50307134392267],[-3.1593501445358885,51.502629144049],[-3.159350122579705,51.50262916791955],[-3.1597031433818903,51.50223122717576],[-3.1609691274474656,51.50265970155658],[-3.1613228591534104,51.50224397831457],[-3.160045090554203,51.501829364486376],[-3.1603756121711424,51.50142399890947],[-3.1603756134900634,51.50142399945765],[-3.1603756551982443,51.50142394623094],[-3.1603756758334796,51.501423920714856],[-3.1603756749542797,51.50142392044083],[-3.160694846760993,51.5010149626273],[-3.160694806372701,51.50101501667659],[-3.161994960515245,51.50140154212586],[-3.1623133275873005,51.500974831849746],[-3.1610025702046833,51.500602533391415],[-3.1610025517666696,51.500602557809735],[-3.161298690122333,51.50018683914384],[-3.15997775255393,51.49982886366033],[-3.1599777450914934,51.49982887436023],[-3.1602523962232887,51.49942445836967],[-3.158921679868632,51.49908091382791],[-3.1586568356823386,51.499470873005386],[-3.157335939508274,51.49911286772798],[-3.1575909839628524,51.498737354443726],[-3.157590981325637,51.498737353895905],[-3.157835480334244,51.49835912296968],[-3.157835438198367,51.49835919183052],[-3.1591755267677293,51.498688204033144],[-3.1594184468415962,51.49829263120868],[-3.158069370469004,51.49797827268388],[-3.1580693489624827,51.49797830780021],[-3.158292565489367,51.497594941646994],[-3.156934933167962,51.4972953135677],[-3.1567203122180136,51.497663898352016],[-3.1553712738475053,51.497349509035864],[-3.15515531851262,51.497701121714876],[-3.1564953671682505,51.4980301640257],[-3.156260305429215,51.49839377912125],[-3.1549296513008707,51.49805018977894],[-3.1546941995944313,51.49839682620205],[-3.1544490940349976,51.49874083614043],[-3.154194418305586,51.49908210266166],[-3.1528943948320736,51.49869549361971],[-3.152641184828436,51.499019863324335],[-3.152378915888105,51.499341454468045],[-3.1536565413959847,51.49975615444783],[-3.1533735739424245,51.50008864684858],[-3.1533735748215697,51.500088647122645],[-3.1530813878571977,51.50041796154637],[-3.1527799491844077,51.50074413359133],[-3.154021091428691,51.50119999467964],[-3.1536976890727373,51.50153623794036],[-3.1549259277563966,51.502005539584914],[-3.154579875066384,51.50235150585691],[-3.1542242065210098,51.502693637618215],[-3.153859020380733,51.50303184204421],[-3.1526718026058824,51.50252305736218],[-3.1523115549214804,51.502844426031956],[-3.1519423855346465,51.50316180751632],[-3.151564452057467,51.50347506865984],[-3.1511776898352433,51.50378426123591],[-3.1534326576526217,51.504902748332675],[-3.153850270342549,51.504568879708785],[-3.1561362775908712,51.505662584269295],[-3.156574721512309,51.50529913760219],[-3.157732880477776,51.505833435791764],[-3.158175931647355,51.50545249542994],[-3.1570030084480636,51.504930899172024],[-3.1574207524221256,51.50455820466614],[-3.1574207528618516,51.5045582049403],[-3.1574207660382094,51.50455819259312],[-3.1574208393891596,51.504558127289215],[-3.157420837630449,51.50455812646683],[-3.157828093684232,51.50418093291591],[-3.157828095003207,51.50418093346411],[-3.1578281376051027,51.50418089230709],[-3.157828172741883,51.504180859929754],[-3.1578281718624264,51.504180859381414],[-3.1582248136465427,51.503799285153306],[-3.1594398506553296,51.50428184696629],[-3.1598391589596004,51.50388259604333],[-3.159839137441489,51.50388261854234],[-3.1610675027223327,51.50435185596292],[-3.1614685615928098,51.50393480288769],[-3.1602272663630333,51.5034790230128],[-3.1606039486564055,51.503071361756966],[-3.1606038946471045,51.50307142266795],[-3.1618577370909513,51.50351361185031],[-3.1622351370161637,51.5030881630648],[-3.1635011690103743,51.5035166103295],[-3.1638784452847424,51.50307318689882],[-3.1638783895283957,51.50307325521792],[-3.1651562228662202,51.503487829396214],[-3.1647672251888648,51.5039450441725],[-3.1660333051119607,51.504373464319194],[-3.1664341632505586,51.50390229413877]],[[-3.160694869589013,51.501014931898816],[-3.1593947361292565,51.500628395031676],[-3.1593947159337485,51.50062842109606],[-3.1596918117928285,51.5002302507165],[-3.1596917788690413,51.50023029708283],[-3.1610025113795652,51.50060261240773],[-3.160694869589013,51.501014931898816]],[[-3.159839212096719,51.50388254116747],[-3.1586108694142525,51.503413293590846],[-3.158985995020029,51.50302322969318],[-3.1577447493220796,51.502567423477316],[-3.158096281250363,51.50218700317457],[-3.159350075154159,51.50262921922758],[-3.1589859203679955,51.50302331118194],[-3.1602271855606525,51.50347910615008],[-3.159839212096719,51.50388254116747]],[[-3.1596918337421727,51.50023021998848],[-3.158381119519075,51.49985789246383],[-3.1586568312925363,51.499470879315524],[-3.158656781249995,51.499470952842074],[-3.159977693730706,51.49982894596769],[-3.1596918337421727,51.50023021998848]],[[-3.159086539383553,51.50102327704264],[-3.157797425541026,51.50062261944979],[-3.158094562759993,51.500241922195876],[-3.159394672468743,51.500628476243044],[-3.159086539383553,51.50102327704264]],[[-3.1578354829680877,51.49835911912876],[-3.156495411942199,51.498030094616],[-3.156720291589711,51.497663933742146],[-3.156720267889077,51.49766397434479],[-3.1580693221887812,51.497978351147],[-3.1578354829680877,51.49835911912876]],[[-3.1546572437156266,51.503887672430196],[-3.1534844017413235,51.50336604112452],[-3.153858954056649,51.503031903503924],[-3.1538589443936074,51.503031912558235],[-3.155046187734093,51.503540688746625],[-3.1546572437156266,51.503887672430196]]],[[[-3.1641382723425333,51.50949010211992],[-3.162995061062682,51.50894333664965],[-3.162453632665514,51.50937626048859],[-3.1635813788293063,51.509935400691575],[-3.1641382723425333,51.50949010211992]]],[[[-3.162633792059036,51.50616368135733],[-3.1602309302579217,51.505172295473976],[-3.1597954290306878,51.50557566794736],[-3.1593487880729407,51.50597416085919],[-3.160521760885836,51.50649573603765],[-3.1609827988746324,51.50608438876526],[-3.1621702004329846,51.506593092580836],[-3.162633792059036,51.50616368135733]]],[[[-3.161851877150382,51.50839655998736],[-3.160708720604972,51.50784977213351],[-3.1601982231639445,51.508257947946866],[-3.1613259141107095,51.50881710966496],[-3.161851877150382,51.50839655998736]]],[[[-3.1595655918656242,51.50730297336278],[-3.1584224900521405,51.506756163127314],[-3.1579429240915657,51.50713959155492],[-3.1590705598243143,51.5076987750605],[-3.1595655918656242,51.50730297336278]]],[[[-3.1388075208718114,51.48919486740104],[-3.138788180364379,51.48902273111564],[-3.13878818080375,51.48902273111558],[-3.1387881781617373,51.48902271438386],[-3.1387881763986583,51.4890226982006],[-3.1387881759592866,51.48902269820066],[-3.1387640311718803,51.48885083410638],[-3.1387640316112493,51.48885083410632],[-3.1387640294103294,51.48885082231187],[-3.138764026326599,51.488850798722794],[-3.1387640254478564,51.4888507987229],[-3.1387350746713873,51.48867919118215],[-3.1373046366252053,51.48878112466292],[-3.1373309546015684,51.48893715200981],[-3.1373529023864895,51.489093412759246],[-3.1373704825764794,51.48924992199966],[-3.1388075208718114,51.48919486740104]]],[[[-3.136505999660156,51.415676193711256],[-3.1344351159271846,51.41554031448968],[-3.1344351163650295,51.41554031119806],[-3.1344348022747752,51.41554029394782],[-3.134434690412711,51.415540286552634],[-3.1344346899743862,51.41554028792418],[-3.1323603401400955,51.41542699195771],[-3.1323603392639963,51.415426997992384],[-3.130283579668248,51.41533633880241],[-3.130283579667681,51.41533633523652],[-3.1302832774255362,51.41533632538051],[-3.1302831528436443,51.415336319902245],[-3.1302831524051964,51.41533632127377],[-3.1282041848411457,51.41526830283078],[-3.1282041852791873,51.415268297344774],[-3.126123155818234,51.41522292941023],[-3.12612315581814,51.41522292803873],[-3.1261230417653003,51.41522292694455],[-3.1261227847075213,51.415222921191116],[-3.126122784707708,51.415222923934124],[-3.124041236999142,51.41520024176287],[-3.1240412369991044,51.41520024011707],[-3.1240411102251318,51.415200240118196],[-3.124040808862707,51.41520023682928],[-3.124040808862782,51.41520024012088],[-3.121959002573211,51.41520024012087],[-3.1219590021346213,51.41520023682926],[-3.1219587007721965,51.41520024011818],[-3.121958573998224,51.41520024011705],[-3.1219585739981865,51.41520024176285],[-3.119877083316021,51.41522292366129],[-3.1198770833161515,51.41522292174118],[-3.1198769087274263,51.415222925576735],[-3.1198766547405046,51.41522292831297],[-3.119876655178982,51.415222931055965],[-3.11779605385603,51.415268289134694],[-3.1177960534173965,51.415268288860375],[-3.117796028852068,51.41526828968218],[-3.1177956827446085,51.415268297072906],[-3.1177956831828375,51.415268300913134],[-3.1157166585920826,51.41533632154795],[-3.115716658153678,51.41533631990211],[-3.115716521727728,51.41533632592824],[-3.1157162308909316,51.41533633551065],[-3.1157162313290745,51.41533633880228],[-3.113639472171988,51.41542699799226],[-3.1136394712958326,51.41542699223188],[-3.1115651210229274,51.415540287923974],[-3.1115651210232698,51.41554028655248],[-3.1115649964396423,51.415540294769315],[-3.1115646946322837,51.41554031119786],[-3.1115646955087968,51.41554031448955],[-3.1094942381701562,51.41567616578163],[-3.1094942372937897,51.41567616248994],[-3.1094939284639893,51.41567618604412],[-3.109493811337154,51.41567619371103],[-3.1094938117754167,51.41567619508257],[-3.1074273917434563,51.41583458848424],[-3.1074273913050665,51.41583458766129],[-3.1074273206770906,51.41583459368649],[-3.107427022812105,51.41583461668809],[-3.10742702368833,51.41583461997981],[-3.105364898529631,51.416015541205404],[-3.1053648998438534,51.4160155458687],[-3.103308599353434,51.41621885990315],[-3.1033085989157017,51.41621885770866],[-3.103308405889945,51.4162188790716],[-3.103308176014983,51.41621890179986],[-3.103308176891271,51.41621890426871],[-3.1012578450921304,51.41644459113825],[-3.1012578433401616,51.416444585377626],[-3.0992132605943463,51.41669267936988],[-3.099213262346352,51.41669268458193],[-3.0971766728238244,51.41696291328807],[-3.0971766723859204,51.416962911916485],[-3.097176535506278,51.41696293163589],[-3.09717630956865,51.41696296148478],[-3.0971763104446235,51.41696296395368],[-3.095147551200911,51.41725534145842],[-3.09514754901066,51.41725533624621],[-3.093126454044182,51.41756989418823],[-3.093126456234397,51.417569899126185],[-3.091115248482241,51.41790629096689],[-3.0911152462920373,51.41790628630319],[-3.0891132886686976,51.4182646144044],[-3.089113286916357,51.41826461111229],[-3.0891130004088847,51.41826466588938],[-3.089112878435846,51.41826468779809],[-3.0891128788735265,51.41826468916972],[-3.087121551240673,51.418644706451474],[-3.087121550802409,51.41864470590275],[-3.0871214889362193,51.41864471850159],[-3.0871211949652757,51.418644774368715],[-3.087121196717491,51.418644777660866],[-3.0851407452949937,51.41904643427169],[-3.085140744418727,51.41904643289991],[-3.0851406176116876,51.41904646001462],[-3.085140339428533,51.41904651643047],[-3.0851403411806158,51.41904651972263],[-3.083171418548912,51.419469681476606],[-3.0831714181111614,51.41946968037926],[-3.0831713163115486,51.419469703385836],[-3.0831710139872293,51.419469768292096],[-3.0831710161778925,51.419469771584446],[-3.0812141701308176,51.41991432075753],[-3.0812141688164467,51.419914318836966],[-3.0812139941718457,51.41991436074253],[-3.081213766434662,51.41991441222966],[-3.081213768187003,51.419914414973285],[-3.079269588286961,51.42038021715758],[-3.07926958653473,51.42038021441393],[-3.079269354399095,51.420380273027426],[-3.079269190282438,51.42038031246533],[-3.07926919159674,51.420380314385916],[-3.0773382174679047,51.4208672412237],[-3.077338215277871,51.42086723765694],[-3.077337903266482,51.42086732037385],[-3.077337870793116,51.420867328590184],[-3.077337871231556,51.42086732886465],[-3.075420742202217,51.42137522107463],[-3.075420741325915,51.42137521997707],[-3.0754206500449692,51.42137524544989],[-3.075420348559157,51.421375325148674],[-3.0754203511880727,51.42137532844132],[-3.0735177001068545,51.42190401662579],[-3.0735176979161807,51.421904013881864],[-3.0735174547839255,51.4219040848228],[-3.073517306010272,51.42190412617923],[-3.0735173073246824,51.421904127825584],[-3.0716296569893884,51.42245346589046],[-3.0716296552372215,51.422453463421],[-3.0716294252623624,51.42245353326658],[-3.0716292712164197,51.42245357818418],[-3.0716292725307746,51.42245357983056],[-3.0697571976235647,51.42302340143533],[-3.0697571958711536,51.42302339924012],[-3.0697570040713984,51.42302346004748],[-3.0697568105186024,51.42302351920824],[-3.0697568122710135,51.42302352140344],[-3.0679008327182937,51.42361366816681],[-3.067900830089787,51.42361366487397],[-3.0679005206513543,51.4236137673165],[-3.06790050177808,51.423613773342225],[-3.0679005022164967,51.42361377361673],[-3.0660612284651307,51.42422405403837],[-3.0660612267128564,51.424224051843126],[-3.066061045869548,51.424224114569846],[-3.0660608505450777,51.42422417920962],[-3.0660608527361033,51.42422418140509],[-3.064238896231541,51.42485439084842],[-3.064238895793136,51.42485439057389],[-3.064238875600828,51.42485439796986],[-3.064238520489115,51.42485452067799],[-3.0642385239938887,51.42485452479423],[-3.0624343896353565,51.425504488223154],[-3.0624343865683614,51.425504484929974],[-3.062434091573239,51.425504595594504],[-3.0624340165088952,51.42550462271136],[-3.0624340173853297,51.42550462353471],[-3.0606481943789747,51.426174165653364],[-3.0606481939405756,51.42617416537883],[-3.060648161015719,51.42617417797909],[-3.0606478818154836,51.42617428288723],[-3.0606478848827594,51.42617428590616],[-3.0588809722989407,51.42686318432151],[-3.058880970984158,51.426863183223595],[-3.058880863862187,51.426863226504295],[-3.058880607037801,51.42686332675736],[-3.0588806101054007,51.42686332950205],[-3.0571332018792594,51.4275713511458],[-3.057133196620964,51.42757134620547],[-3.0554054065012166,51.42829845059665],[-3.05540540562444,51.42829845004754],[-3.055405366107879,51.4282984673056],[-3.055405050421865,51.42829860015871],[-3.0554050543657065,51.42829860372689],[-3.0536981219450383,51.42904426881831],[-3.053698119753961,51.42904426689692],[-3.0536979643128466,51.429044337574226],[-3.05369777067569,51.42904442194393],[-3.053697773305145,51.42904442413989],[-3.0520118143332957,51.4298085949507],[-3.0520118108275454,51.42980859193129],[-3.052011541205042,51.42980871876855],[-3.0520115144192923,51.429808730821485],[-3.0520115148572478,51.42980873137035],[-3.0503470939329818,51.43059115432692],[-3.0503470934946018,51.430591154052344],[-3.0503470741720986,51.43059116336654],[-3.0503467492087966,51.43059131622409],[-3.0503467535912505,51.43059131979269],[-3.048704416134104,51.43139173803659],[-3.0487044117517037,51.43139173446792],[-3.048704111792142,51.431391885965255],[-3.048704081489599,51.43139190075821],[-3.04870408192753,51.43139190130708],[-3.0470842812744796,51.43221009277516],[-3.047084280836104,51.43221009250058],[-3.0470842689773168,51.43221009880177],[-3.047083948804179,51.43221026043092],[-3.047083953625362,51.432210263999934],[-3.045487190235196,51.43304597677372],[-3.045487187167538,51.43304597430299],[-3.0454869829217057,51.43304608498478],[-3.0454868594994995,51.43304614963777],[-3.0454868616913546,51.433046151010714],[-3.0439135751074415,51.43389915673403],[-3.0439135689712185,51.433899152341105],[-3.042363683155852,51.434769505667944],[-3.0423636914838865,51.434769511433956],[-3.0408389131421,51.43565625333889],[-3.0408389065670693,51.435656248945484],[-3.0393387531382374,51.43655965490515],[-3.03933875226151,51.43655965435593],[-3.03933872458121,51.43655967161701],[-3.039338442956204,51.43655984120711],[-3.0393384477777436,51.43655984450215],[-3.0378639898135016,51.43747926970662],[-3.0378639884983962,51.43747926888277],[-3.037863926542221,51.43747930888542],[-3.0378636888336237,51.43747945710853],[-3.03786369321729,51.43747945985471],[-3.036415031788487,51.43841483731602],[-3.036415025212459,51.43841483347098],[-3.0349923954822375,51.43936602003799],[-3.0349923928514904,51.439366018664515],[-3.0349922750709073,51.43936610004287],[-3.034992102801905,51.43936621539336],[-3.034992106309388,51.43936621731609],[-3.0335964849392805,51.44033255882279],[-3.0335964818706955,51.44033255690035],[-3.033596328477629,51.44033266705152],[-3.033596195309511,51.44033275911437],[-3.0335961979397243,51.44033276076217],[-3.032227717561338,51.44131415924758],[-3.032227715369496,51.44131415787439],[-3.0322276116329325,51.44131423487203],[-3.0322274340587225,51.441314362283485],[-3.0322274380051395,51.44131436420663],[-3.0308865104375333,51.44231052606716],[-3.030886505175975,51.44231052332003],[-3.030886268228536,51.442310705816844],[-3.0308862352601365,51.44231073020353],[-3.03088623613688,51.442310730752816],[-3.029573234658686,51.443321381005994],[-3.029573233343,51.44332138045635],[-3.0295731898180605,51.443321414983295],[-3.029573002097939,51.44332155966343],[-3.0295730064827993,51.44332156186132],[-3.0282883708971786,51.44434636523007],[-3.0282883682663666,51.444346363856454],[-3.028288260540282,51.4443464531908],[-3.0282881084150968,51.44434657430792],[-3.0282881119232297,51.44434657595656],[-3.0270322733982282,51.44538518892582],[-3.0270322716441296,51.44538518810148],[-3.027032211838973,51.44538523934637],[-3.027032013087121,51.44538540376288],[-3.0270320179110057,51.445385405961225],[-3.0258053220268466,51.446437541722645],[-3.0258053189570155,51.446437540348605],[-3.025805194934666,51.446437650788134],[-3.025805069601849,51.44643775820929],[-3.02580507267167,51.446437759583326],[-3.0246078919637265,51.447503101994165],[-3.0246078867007653,51.44750309979537],[-3.0246076931680186,51.447503278475615],[-3.0246076452279254,51.44750332122596],[-3.024607646543669,51.44750332177566],[-3.0234401064944714,51.44858176733212],[-3.0234401121959045,51.448581769805664],[-3.0223030219740603,51.44967257728345],[-3.0223030167109664,51.44967257508454],[-3.0223028372078504,51.44967275377299],[-3.0223027866160947,51.449672802554666],[-3.022302788370865,51.449672803104775],[-3.0211963129040886,51.45077580483035],[-3.021196311149898,51.45077580400593],[-3.0211962574668396,51.45077585991619],[-3.0211960867547076,51.450776029833],[-3.0211960915794824,51.45077603175728],[-3.0201205406376475,51.45189092082538],[-3.020120533180552,51.45189091807585],[-3.019075806499053,51.45301781867799],[-3.0190758130788393,51.45301782115252],[-3.018063063034488,51.45415549585722],[-3.018063059086302,51.454155494482194],[-3.018062949471055,51.45415562303],[-3.018062854394344,51.45415572964695],[-3.018062857465091,51.45415573074688],[-3.0170820175353,51.45530423544808],[-3.017082011393073,51.45530423352244],[-3.017081838797953,51.455304444301895],[-3.01708181546491,51.455304471710654],[-3.0170818163423716,51.455304471985734],[-3.01613315987592,51.45646348899208],[-3.0161331585600184,51.45646348844228],[-3.0161331259729027,51.456463529831616],[-3.0161329648165975,51.45646372690515],[-3.016132970519886,51.456463728830435],[-3.015216788611989,51.45763290451648],[-3.015216784662951,51.45763290341566],[-3.0152166868823835,51.457633033617405],[-3.0152165996834484,51.45763314517661],[-3.0152166031934335,51.457633146277026],[-3.0143331522785735,51.45881215851177],[-3.014333146574413,51.45881215686069],[-3.014333006922301,51.45881235175723],[-3.014332994588272,51.458812368477986],[-3.0143329954657885,51.45881236875311],[-3.0134823972896374,51.46000107135984],[-3.0134824047489643,51.46000107356119],[-3.0126652935882343,51.46119858268642],[-3.012665285689645,51.461198580484606],[-3.011881551328395,51.46240506019892],[-3.011881548695699,51.46240505937352],[-3.011881496235008,51.462405144081885],[-3.0118813904506982,51.46240530718895],[-3.011881395277651,51.46240530856501],[-3.011131601894855,51.46361989273817],[-3.0111315983838463,51.463619891911925],[-3.011131528711207,51.46362001061647],[-3.0111314471485717,51.46362014302454],[-3.0111314510980383,51.463620144125514],[-3.010415649083173,51.46484274430395],[-3.010415648205567,51.46484274402881],[-3.010415634090987,51.46484276925066],[-3.0104155207548415,51.46484296307044],[-3.0104155264602803,51.46484296444742],[-3.0097339562999914,51.46607317935915],[-3.0097339505944256,51.46607317798215],[-3.0097338486668646,51.46607337318374],[-3.0097338164655025,51.466073431029486],[-3.0097338182207483,51.46607343157977],[-3.00908670733114,51.467310851138265],[-3.009086705575856,51.467310850587964],[-3.0090866786509602,51.46731090514706],[-3.0090865736293906,51.46731110610531],[-3.0090865793350954,51.46731110748234],[-3.0084741098159253,51.468555386814764],[-3.0084741067430723,51.468555386263176],[-3.008474059495149,51.46855548853007],[-3.008473983129111,51.468555643708],[-3.0084739875187996,51.46855564453517],[-3.0078963468845914,51.46980640912325],[-3.0078963411779216,51.46980640802045],[-3.007896259451981,51.469806597205626],[-3.0078962280984958,51.46980666520066],[-3.007896230293052,51.46980666575142],[-3.007353581461437,51.471063569278186],[-3.0073535739985156,51.471063567899336],[-3.0068459089355155,51.472326675571615],[-3.006845916837839,51.472326676950935],[-3.0063737943209543,51.47359460045614],[-3.0063737916870132,51.47359459990493],[-3.006373762037989,51.47359468655345],[-3.00637369702724,51.473594860942],[-3.006373702295823,51.47359486177013],[-3.005937058453029,51.47486773751969],[-3.0059370505495893,51.47486773641461],[-3.0055359412416798,51.47614543785618],[-3.0055359359728206,51.47614543702801],[-3.005535884112956,51.47614561910954],[-3.005535858426601,51.476145700824425],[-3.005535861061388,51.47614570110137],[-3.005170564182327,51.4774273492017],[-3.0051705633045103,51.47742734892651],[-3.0051705553165413,51.477427380462686],[-3.005170499022287,51.47742757762591],[-3.005170504730554,51.47742757845454],[-3.0048410644694514,51.47871301120413],[-3.0048410635916127,51.478713010928935],[-3.0048410564838646,51.478713041643076],[-3.00484099657673,51.47871327583259],[-3.0048410031636976,51.47871327666213],[-3.0045475307533427,51.48000206766431],[-3.004547524604772,51.48000206710951],[-3.0045474818770104,51.480002281841074],[-3.0045474703248507,51.48000233230009],[-3.004547472081281,51.48000233257616],[-3.0042900500604923,51.48129412477085],[-3.0042900483040147,51.481294124494774],[-3.0042900398277492,51.481294174408276],[-3.0042899966539953,51.48129439078503],[-3.004290002802736,51.48129439133985],[-3.0040687125204832,51.482588790877706],[-3.004068708128096,51.48258879059895],[-3.0040686857551813,51.48258894719991],[-3.0040686670187586,51.48258905689974],[-3.004068670093216,51.482589057177165],[-3.003883577456901,51.48388570664224],[-3.0038835699898483,51.483885706086056],[-3.003734684029282,51.4851846728579],[-3.0037346932538838,51.48518467341587],[-3.0036221793675892,51.486484529258405],[-3.003622170142009,51.48648452897471],[-3.003545988185247,51.48778568018228],[-3.003545983792364,51.48778567990351],[-3.003545979465409,51.48778582253347],[-3.003545972108808,51.487785947605346],[-3.003545975622971,51.48778594788322],[-3.0035061824746667,51.489087485287314],[-3.0035061811572663,51.48908748501167],[-3.0035061810497123,51.48908752615609],[-3.0035061748036846,51.489087730500835],[-3.0035061805148104,51.48908773078095],[-3.003502777463188,51.490389510137085],[-3.003502772189851,51.490389510406004],[-3.0035027769698392,51.49038969885275],[-3.003502776781965,51.490389770718295],[-3.0035027789788895,51.49038977072053],[-3.0035357697866774,51.49169137400493],[-3.0035357662714968,51.49169137400135],[-3.003535772975664,51.49169149881316],[-3.003535776576089,51.49169163431939],[-3.0035357805306666,51.49169163432341],[-3.0036051721400736,51.49299293999664],[-3.003605180489581,51.49299293973084],[-3.003710927429282,51.49429303043217],[-3.0037109173211327,51.49429303097049],[-3.0038530324679837,51.49559203086931],[-3.003853029391223,51.495592031140475],[-3.00385304405599,51.49559213703382],[-3.0038530607927885,51.49559229093114],[-3.0038530651878537,51.49559229066131],[-3.0040314516239475,51.49688928529533],[-3.004031448107654,51.49688928556606],[-3.0040314688769567,51.4968894101177],[-3.004031487424029,51.496889544267454],[-3.0040314913797683,51.49688954399718],[-3.004246168989723,51.49818465637899],[-3.004246176461967,51.498184655837946],[-3.004496997293959,51.49947697303398],[-3.0044969946564124,51.49947697330561],[-3.004497016810585,51.49947707317183],[-3.004497047602699,51.499477231471914],[-3.004497051998133,51.499477231202064],[-3.0047839855848797,51.500766617995325],[-3.0047839772325404,51.5007666188098],[-3.0051070684500787,51.502053197042024],[-3.005107077682353,51.5020531959541],[-3.0054659723426864,51.5033355446659],[-3.0054659679461735,51.5033355452101],[-3.0054660167648266,51.503335703253576],[-3.0054660442020342,51.50333580120477],[-3.005466046839796,51.50333580093312],[-3.005860768202287,51.50461404380121],[-3.0058607594090354,51.50461404488962],[-3.006291275992253,51.50588804656829],[-3.0062912755520212,51.50588804684214],[-3.0062912790437717,51.50588805644597],[-3.006291361929535,51.505888301474734],[-3.006291368964181,51.505888300658846],[-3.0067573804464747,51.50715716350894],[-3.006757376048921,51.50715716432747],[-3.006757432390268,51.50715730591998],[-3.0067574734242637,51.507157417324784],[-3.0067574765024823,51.507157416779236],[-3.007258929755589,51.508421008664584],[-3.007258927556405,51.508421009211006],[-3.0072589559602245,51.50842107534433],[-3.0072590297737514,51.50842126166403],[-3.0072590350505326,51.508421260846355],[-3.0077957799642174,51.509679196329415],[-3.007795775566439,51.50967919714799],[-3.0077958450735522,51.5096793497247],[-3.007795887024685,51.50967944796379],[-3.007795890103064,51.50967944741822],[-3.008367880054581,51.51093159348589],[-3.085721608509103,51.49668609583448],[-3.0855349048089367,51.49627889330892],[-3.099412069106691,51.493880514166044],[-3.0993016149595984,51.49362286184591],[-3.099198411641373,51.49336411918239],[-3.1033989443967678,51.49273541999037],[-3.1033198947399545,51.492521416377336],[-3.1061314677049023,51.492132773526464],[-3.1060688393513565,51.49194863318684],[-3.107479822405184,51.491769632190866],[-3.1074271333646184,51.491600228534026],[-3.107379194322577,51.491430294992014],[-3.1102194068014843,51.49113394148261],[-3.110258632625791,51.49127295670288],[-3.1102586317469276,51.49127295697708],[-3.110258637454001,51.491272975081266],[-3.1102586400876904,51.49127298468193],[-3.110258640527158,51.49127298440767],[-3.1103017553563057,51.49141157898761],[-3.113123644532048,51.49105345787002],[-3.1131601933205877,51.491160871029074],[-3.1131601941994296,51.491160870754854],[-3.1131997328901964,51.4912678477448],[-3.113199732450747,51.49126784801906],[-3.113199735963953,51.491267857071136],[-3.113199740355306,51.49126786914054],[-3.113199740794703,51.49126786914057],[-3.1132422645765914,51.49137439898616],[-3.1132422641371917,51.491374398986125],[-3.1132422645764164,51.49137439980905],[-3.113242272920531,51.49137442038197],[-3.113242273359926,51.49137442038201],[-3.1132877690775618,51.49148047071193],[-3.1132877686381635,51.49148047071189],[-3.1132877743476306,51.491480483330015],[-3.1132877778609904,51.49148049183347],[-3.113287778300386,51.49148049183352],[-3.1133362319191646,51.49158603027622],[-3.1119556452727277,51.491841183984164],[-3.1119002618932794,51.491720544029654],[-3.110512741013016,51.491960600375215],[-3.110454246317554,51.491824229608504],[-3.1103995665602313,51.491687225594646],[-3.1089994654454003,51.49189688930221],[-3.108942983195729,51.49174403253301],[-3.1075372250632545,51.49193839294124],[-3.1075993628993595,51.492106570029144],[-3.1089994764210735,51.491896919750424],[-3.108999472908898,51.49189690987533],[-3.1090602117807173,51.49204910743645],[-3.109060211341311,51.4920491074364],[-3.1090602157321467,51.4920491178602],[-3.1090602240745873,51.49204913815912],[-3.1090602245140726,51.49204913788487],[-3.1091252182919344,51.492200671019525],[-3.1105127528693397,51.49196062780611],[-3.1105127471606546,51.49196061491357],[-3.110575055508766,51.49209634886145],[-3.1119556562518165,51.49184120839758],[-3.1120143927061235,51.49196120266955],[-3.112014392266726,51.4919612026695],[-3.1120143953411494,51.49196120843002],[-3.1120144041248095,51.491961226534414],[-3.1120144050036087,51.49196122653449],[-3.112076499387374,51.49208058663981],[-3.1120765007056463,51.49208058636564],[-3.1121419100010477,51.49219922808605],[-3.112141909561576,51.49219922836032],[-3.1121419179067806,51.4921992428988],[-3.112141923177396,51.492199252225355],[-3.1121419236168655,51.4921992519511],[-3.11221064037975,51.492317162937084],[-3.1122106399403435,51.49231716293704],[-3.1122106447719053,51.492317170892086],[-3.112210653995765,51.49231718625353],[-3.112210654435166,51.49231718625357],[-3.1122826580442013,51.49243433056464],[-3.1109429151297663,51.49276361560005],[-3.110861898618032,51.49263180181793],[-3.1108618981788503,51.492631800995],[-3.1107845795261557,51.49249912350557],[-3.109427232558057,51.49279900320228],[-3.109345462038649,51.49265066988583],[-3.109267851287709,51.492501467750486],[-3.107894556670061,51.492771576017084],[-3.1079799237456083,51.49293569929982],[-3.1066143688607606,51.493220713076234],[-3.1067125036321928,51.49339875136088],[-3.1094272492467123,51.49279903310252],[-3.109427243976579,51.49279902377582],[-3.109513138287765,51.492946423800966],[-3.1095131378483503,51.49294642380092],[-3.109513143997104,51.49294643395059],[-3.109513154976766,51.49294645287829],[-3.1095131558555855,51.49294645287841],[-3.109603170479386,51.493092914665496],[-3.110942930941457,51.492763642208416],[-3.111027604052169,51.49289452753746],[-3.111027603612699,51.4928945278117],[-3.11102761195824,51.4928945401559],[-3.111027620742841,51.49289455387161],[-3.111027621182254,51.49289455387166],[-3.1111159588244894,51.493024522809584],[-3.112436481084116,51.49266624617092],[-3.1125182083130887,51.492780877553955],[-3.112518207873617,51.49278087782821],[-3.1125182179769393,51.49278089126963],[-3.1125182245659277,51.492780900596294],[-3.1125182250053993,51.49278090032203],[-3.112603144722741,51.49289462373372],[-3.112603144283266,51.49289462400797],[-3.112603159658186,51.492894643484384],[-3.112603161854539,51.492894646501824],[-3.1126912486010583,51.49300742709737],[-3.1126912481615903,51.49300742737163],[-3.1126912587045963,51.493007439990194],[-3.1126912661723516,51.49300744986551],[-3.11269126661183,51.493007449591246],[-3.1127825116198546,51.493119275842375],[-3.1140597678442137,51.49270435224532],[-3.1141423168649203,51.49280129510783],[-3.114142315986054,51.49280129538206],[-3.114227580201735,51.492897343359026],[-3.1142275802016792,51.492897343633324],[-3.114227585473544,51.49289734911965],[-3.114227597335028,51.49289736256105],[-3.114227597774439,51.49289736256109],[-3.114315517010981,51.49299244761666],[-3.1143155165715126,51.49299244789092],[-3.114315529311815,51.492992461606676],[-3.1143155345837514,51.49299246681871],[-3.1144061171991835,51.49308659854793],[-3.115633877420612,51.49261705137067],[-3.1157137493285605,51.492696860959676],[-3.1157137524039302,51.49269686397712],[-3.115713765144701,51.49269687686984],[-3.11571376558416,51.49269687659557],[-3.1157958569232407,51.49277580357979],[-3.115795856044382,51.49277580385404],[-3.1158801589131495,51.492853840273796],[-3.1158801584737432,51.49285384027377],[-3.11588016726069,51.4928538482289],[-3.115880175608315,51.4928538556354],[-3.1159666302620117,51.492930946074516],[-3.1159666337768233,51.492930949091985],[-3.115966647396637,51.49293096143614],[-3.115966647836054,51.49293096143616],[-3.1160552446143606,51.49300709793473],[-3.116055244174955,51.493007097934694],[-3.1160552525227194,51.4930071047926],[-3.116055262188458,51.493007113296365],[-3.116055262627915,51.493007113022095],[-3.1161459751746885,51.49308227308146],[-3.1161459742958257,51.49308227335571],[-3.1162388118423863,51.49315646300609],[-3.11736573004531,51.492596996163066],[-3.1172883802025644,51.49253518440388],[-3.1172127689632725,51.492472537995006],[-3.117138910823304,51.49240906873527],[-3.117066863774262,51.49234482627854],[-3.1182535250688,51.491835785145604],[-3.1183111628570717,51.49188717743876],[-3.11831116285704,51.49188717771307],[-3.1183111698868253,51.49188718374786],[-3.1183111742804037,51.491887187862474],[-3.1183702403142335,51.49193794408994],[-3.118370239874819,51.49193794436422],[-3.118370249101453,51.491937952044886],[-3.118370252177002,51.491937954513666],[-3.1184307284447654,51.49198805986059],[-3.11843072800534,51.49198806013488],[-3.118430737232021,51.49198806754122],[-3.1184307403076046,51.491988069735726],[-3.118492607918611,51.492037508564316],[-3.1173657146675997,51.49259698381899],[-3.1174447807089787,51.4926579430948],[-3.1174447802695675,51.49265794309478],[-3.117444792132466,51.49265795214712],[-3.1174447965261396,51.49265795543889],[-3.117444796526169,51.49265795516459],[-3.117525538786201,51.49271803177907],[-3.1175255383467575,51.49271803205334],[-3.117607964735967,51.49277723203795],[-3.117607971765915,51.49277723697562],[-3.117607980992683,51.49277724383345],[-3.1176079814321223,51.49277724355918],[-3.11769205065144,51.49283553646163],[-3.1198152778190766,51.49162115055499],[-3.1198666796849874,51.4916555635184],[-3.1198666792455905,51.491655563518385],[-3.1198666875937713,51.49165556900453],[-3.11986668979066,51.49165557037609],[-3.1198666897906855,51.491655570101784],[-3.119919056250432,51.49168942460036],[-3.1199190566898225,51.49168942460037],[-3.1199723508357553,51.49172269649379],[-3.118963108599961,51.49236374471788],[-3.1190354119143064,51.492407335891706],[-3.119035411474874,51.49240733616599],[-3.1190354228988344,51.49240734274949],[-3.1190354259745092,51.492407344669665],[-3.1190354264139373,51.49240734439538],[-3.119108922920176,51.492450132972785],[-3.1191089334653976,51.492450139007644],[-3.1191089374198606,51.492450141202156],[-3.119183634147674,51.49249213074697],[-3.11918363458711,51.49249213047268],[-3.1192594783701737,51.49253329080836],[-3.119259477930728,51.492533291356935],[-3.1193364766769593,51.49257362741882],[-3.119336476237559,51.49257362741881],[-3.119336492055521,51.492573635648206],[-3.1193364924949667,51.49257363537391],[-3.1194145917190417,51.492613118631276],[-3.1194145912796305,51.492613118631276],[-3.1194145952341406,51.49261312055146],[-3.1194146070976556,51.49261312658635],[-3.1194146070976774,51.49261312631205],[-3.1194937988890445,51.492651752922335],[-3.119493798449611,51.49265175319662],[-3.119574073579368,51.492689518220025],[-3.11957407357935,51.492689518494316],[-3.1195740858823524,51.4926895239806],[-3.1195740898368816,51.49268952590081],[-3.119574090276288,51.492689525900815],[-3.119655392939693,51.49272640327537],[-3.118819197102104,51.49345811427541],[-3.1189221414482162,51.49350311538473],[-3.118922141887663,51.49350311511046],[-3.119026286581012,51.49354697043413],[-3.1190262861415663,51.49354697070841],[-3.119026307672206,51.49354697921234],[-3.1191316632540986,51.49358969313622],[-3.1191316628146875,51.493589693136215],[-3.1191316751179463,51.493589697799656],[-3.1191316839059486,51.49358970164009],[-3.1191316843453873,51.49358970136582],[-3.119238218295548,51.49363126099373],[-3.1192382178561036,51.493631261268014],[-3.1192382292806005,51.49363126538283],[-3.1192382393868536,51.4936312694976],[-3.119238239826289,51.49363126922331],[-3.1193459196239806,51.49367166193344],[-3.119345919184543,51.49367166220772],[-3.1193459367607206,51.493671668517074],[-3.1193459407153727,51.49367166988868],[-3.119345941154784,51.49367166988869],[-3.119454734278907,51.49371088305926],[-3.119454733839486,51.49371088305926],[-3.1194547355971225,51.49371088360789],[-3.11945475580974,51.49371089101451],[-3.1194547558097674,51.4937108907402],[-3.1195646284204717,51.493748912298116],[-3.119564627981036,51.49374891257241],[-3.1195646385268003,51.49374891613857],[-3.119564650830192,51.493748920253374],[-3.119564650830208,51.49374891997907],[-3.1196755699660454,51.49378573894853],[-3.119675569526603,51.49378573922282],[-3.1196755866635337,51.49378574443494],[-3.119675591936411,51.49378574635516],[-3.119675591936429,51.49378574608087],[-3.119787524196136,51.49382135121187],[-3.119787528590226,51.49382135258348],[-3.1197875461665627,51.493821358344185],[-3.1197875466059966,51.4938213580699],[-3.1199004572696993,51.49385573811251],[-3.119900457269681,51.493855738386806],[-3.1199004700125887,51.49385574195299],[-3.119900479679598,51.4938557449705],[-3.1200143349057994,51.49388888977209],[-3.1200143454516636,51.49388889278961],[-3.120014357315768,51.49388889608147],[-3.1201291447938093,51.49392080152455],[-3.120703338790713,51.493096546933366],[-3.120611499145728,51.49307101990662],[-3.1205204013831116,51.493044500419444],[-3.120430048583345,51.49301698902223],[-3.120340501388543,51.49298850464448],[-3.1210053876450523,51.4921912590557],[-3.121072545082886,51.49221262128188],[-3.121072545082876,51.49221262155618],[-3.121072556067812,51.49221262484792],[-3.121072558264793,51.492212625670845],[-3.121072558704212,51.49221262539654],[-3.121140303277544,51.49223325275355],[-3.1211403032775378,51.49223325302784],[-3.1211403107473026,51.492233255222345],[-3.12114031645948,51.492233256868204],[-3.121140316898879,51.49223325686822],[-3.121208627953539,51.4922531427716],[-3.121208627514122,51.4922531430459],[-3.1212086314687197,51.49225314414314],[-3.1212086415748903,51.492253146886256],[-3.1212774975777293,51.49227228530022],[-3.1207033198962937,51.49309654144707],[-3.120795848250795,51.493121060924366],[-3.120795847811356,51.493121061472955],[-3.120889066188593,51.4931445736735],[-3.120889066188607,51.493144573399206],[-3.120982890656667,51.49316705747341],[-3.1209828902172414,51.49316705774769],[-3.121077366469103,51.49318852494101],[-3.121077366908526,51.49318852466673],[-3.121172391238382,51.49320895083789],[-3.1211723907989546,51.49320895111217],[-3.1211724092541373,51.493208954952614],[-3.121172410132962,51.49320895495262],[-3.121267990444408,51.49322834256909],[-3.1212679900049887,51.49322834284337],[-3.121267993080855,51.49322834339202],[-3.121268009778416,51.49322834668383],[-3.121268010217843,51.49322834640954],[-3.1213641179434135,51.49324668998362],[-3.1213641179434046,51.49324669025792],[-3.1213641249739723,51.4932466913552],[-3.121364136838043,51.493246693824034],[-3.1213641372774594,51.49324669354974],[-3.1214607438495454,51.49326398731959],[-3.121460746486007,51.4932639878682],[-3.12146076318361,51.49326399088569],[-3.121460763183617,51.493263990611396],[-3.1215578391556007,51.49328022908946],[-3.1215578387161864,51.49328022908945],[-3.1215578457467656,51.49328023018672],[-3.121557858050272,51.493280232381245],[-3.121557858489692,51.49328023210695],[-3.121655373096548,51.493295410354385],[-3.121655373096541,51.49329541062868],[-3.1216553924306454,51.49329541364618],[-3.1216553928700685,51.49329541337188],[-3.1217533171042624,51.4933095269986],[-3.1217533171042566,51.4933095272729],[-3.1217533355595597,51.49330952974176],[-3.1217533368778008,51.49330952974178],[-3.1218516404134427,51.49332257408338],[-3.1218516404134364,51.49332257435767],[-3.121851647004622,51.49332257518061],[-3.1218516606264077,51.49332257682654],[-3.1218516606264153,51.49332257655224],[-3.121950314016274,51.49333454804168],[-3.1219503140162694,51.49333454831598],[-3.1219503175315726,51.49333454859031],[-3.12195033335043,51.493334550510525],[-3.121950333789848,51.493334550236234],[-3.1220493075865927,51.493345445306545],[-3.1220493071471718,51.493345445580836],[-3.122148590358715,51.4933552620368],[-3.122148590358707,51.49335526231109],[-3.1221485934346003,51.4933552625854],[-3.1221486101323057,51.4933552642313],[-3.122148610132311,51.49335526395701],[-3.122248132885075,51.493363995762834],[-3.1222481407945213,51.49336399631147],[-3.1222481526586856,51.493363997408736],[-3.1223479043997977,51.49337164346658],[-3.122184887761563,51.49426467901207],[-3.1223098520202917,51.494272878254826],[-3.1223098520202828,51.494272878803415],[-3.122435027703144,51.4942797154845],[-3.1224350272637222,51.4942797154845],[-3.1224350382492894,51.49427971603315],[-3.1224350523108146,51.494279716856106],[-3.122435052310818,51.4942797165818],[-3.1225603998586657,51.49428518850601],[-3.1225603998586715,51.494285187957416],[-3.122685856422848,51.49428929265539],[-3.122685856422846,51.494289292929686],[-3.1226858805911117,51.49428929347833],[-3.122685881469958,51.49428929347834],[-3.1228114334171266,51.494292030675375],[-3.122811445720972,51.494292030949694],[-3.1228114584642404,51.49429203122403],[-3.1228114584642417,51.49429203094972],[-3.1229370679927606,51.49429339982261],[-3.1229370802966074,51.49429339982262],[-3.122937093039877,51.49429340009694],[-3.1229370930398774,51.49429339982263],[-3.1230627205903874,51.494293399822624],[-3.123062720590388,51.49429340009693],[-3.1230627460769274,51.494293399822624],[-3.1230627465163505,51.49429339982261],[-3.123188355166024,51.49429203122402],[-3.123188368348716,51.494292030949694],[-3.123188380213139,51.49429203094967],[-3.123313932160308,51.49428929375263],[-3.123313957207419,51.49428929320397],[-3.1233139572074173,51.49428929292968],[-3.123439413771596,51.494285188231714],[-3.123439413771599,51.49428518850601],[-3.1235647613194497,51.4942797168561],[-3.1235647617588724,51.49427971685609],[-3.123564786366545,51.49427971575879],[-3.123564786366543,51.4942797154845],[-3.1236899365628963,51.494272880175046],[-3.1236899506244167,51.49427287935207],[-3.1236899616099807,51.49427287880341],[-3.1238149267475483,51.49426467901206],[-3.1238149267475417,51.49426467873777],[-3.123939618051977,51.49425512104895],[-3.1239396426596056,51.49425511885439],[-3.124064048255561,51.494244203817665],[-3.1240640482555646,51.49424420409195],[-3.124188179117702,51.49423193061094],[-3.124188179117686,51.49423193006235],[-3.1243118985751894,51.494218311579935],[-3.1243119139549242,51.494218309933984],[-3.1243119231827636,51.49421830883671],[-3.1244352422105686,51.494203343982576],[-3.12443524221058,51.49420334425688],[-3.124435262423925,51.494203341787966],[-3.1244352676969624,51.49420334096501],[-3.1245581493732995,51.49418703522682],[-3.1245581542069156,51.494187034403865],[-3.1245581739808257,51.49418703193494],[-3.124558173980816,51.49418703166064],[-3.1246805818234744,51.49416938942901],[-3.1246805980819934,51.49416938696011],[-3.1246806059915526,51.49416938586281],[-3.1248025017608683,51.49415041262574],[-3.1248025087915705,51.494150411528445],[-3.1248025259289123,51.494150408785224],[-3.124923872703711,51.494130110305115],[-3.1249238907198595,51.49413010701327],[-3.124923896871712,51.49413010591597],[-3.125044681459607,51.494108484114825],[-3.1250446814595976,51.49410848384052],[-3.1251648181645324,51.49408555408224],[-3.125164818603962,51.49408555435652],[-3.125164838817144,51.494085550241714],[-3.125164843211316,51.494085549418756],[-3.125284320159695,51.49406131417419],[-3.1252843205991225,51.49406131444847],[-3.1252843421305134,51.49406130978502],[-3.1252843443275995,51.49406130951066],[-3.1254031500854,51.494035770976446],[-3.1249224656162977,51.493188520826266],[-3.1250169040790645,51.49316706213676],[-3.1250169045184917,51.493167062411054],[-3.125016923413015,51.49316705774769],[-3.1251107474416586,51.4931445736735],[-3.1251107513963237,51.49314457285053],[-3.125110765896763,51.493144569284425],[-3.1252039473638193,51.493121066136325],[-3.125203958788388,51.49312106311885],[-3.1252039658188946,51.49312106147294],[-3.125296474839534,51.49309654693335],[-3.1252964801124046,51.49309654556178],[-3.125296493733985,51.493096541995655],[-3.1253883043782165,51.49307102292408],[-3.1259854567539147,51.49388889608145],[-3.1260993339506604,51.49385574497049],[-3.1260993396629915,51.49385574332456],[-3.126099357239397,51.49385573811247],[-3.1260993567999793,51.49385573811248],[-3.126212266145455,51.49382135861849],[-3.1262122665848753,51.49382135861848],[-3.126212284600628,51.493821352857765],[-3.1262122894341386,51.493821351486154],[-3.12632424322484,51.49378573949713],[-3.126324243224818,51.49378573922282],[-3.12643516280007,51.49374892025336],[-3.1264351693911694,51.49374891805879],[-3.126435185649223,51.493748912572386],[-3.126435185209803,51.49374891257241],[-3.126545058259889,51.493710890465884],[-3.1265450586993246,51.49371089074016],[-3.1266538948851035,51.493671661933384],[-3.126653894885083,51.493671661659086],[-3.12676157468281,51.49363126922327],[-3.126761588743691,51.493631263736894],[-3.1267615953347456,51.493631261268014],[-3.1268681297242726,51.49358970136578],[-3.126868129724306,51.49358970164008],[-3.1269735059580706,51.4935469794866],[-3.1269735235340668,51.49354697208002],[-3.12697352748868,51.493546970708394],[-3.1270776726214593,51.49350311538472],[-3.12789330491083,51.49424382103231],[-3.1280168132154134,51.49418982992075],[-3.128016819806408,51.494189826903195],[-3.1280168387006673,51.49418981867351],[-3.1280168382612046,51.49418981839923],[-3.128138794966576,51.49413450072832],[-3.1281387954060293,51.49413450100259],[-3.1282592343407507,51.494077840043545],[-3.1282592339012707,51.49407783949497],[-3.1283780210446026,51.494019898895324],[-3.1283780214840595,51.4940198991696],[-3.128495195938463,51.493960660280344],[-3.128495206483879,51.493960654793916],[-3.128495218347492,51.49396064875885],[-3.1286107181547873,51.493900142034605],[-3.1286107177153286,51.49390014176032],[-3.128724484873305,51.49383839875293],[-3.128724485312761,51.49383839902721],[-3.128836553212551,51.49377540081356],[-3.1288365523336483,51.493775400265015],[-3.1289467961876247,51.493711217076104],[-3.1289467966270723,51.49371121735037],[-3.128946815520532,51.49371120582898],[-3.1289468190356295,51.49371120390873],[-3.1290552735541133,51.49364581572424],[-3.129055273114663,51.493645815449966],[-3.129161862284112,51.4935792689092],[-3.1291618745866976,51.49357926095396],[-3.1291618842530395,51.493579254918934],[-3.1292665962101096,51.49351155661065],[-3.1292666010432226,51.49351155331885],[-3.1292666159820346,51.49351154371767],[-3.1292666155425803,51.4935115434434],[-3.12936941909222,51.49344271476941],[-3.129369425243457,51.49344271065463],[-3.1293694401821517,51.49344270050486],[-3.1293694397426934,51.49344270023058],[-3.129470302372235,51.493372762318465],[-3.1294703028116775,51.49337276259274],[-3.129569233749326,51.493301707766676],[-3.1295692333098706,51.49330170749239],[-3.129666121836984,51.49322961558372],[-3.129666123594429,51.49322961421214],[-3.1296661420477685,51.49322960049627],[-3.129666141608322,51.493229600221994],[-3.1297610013483665,51.493156462457485],[-3.130887947579347,51.493715918419404],[-3.130996234366042,51.49362938075574],[-3.130996234805503,51.49362938103001],[-3.131102087489884,51.493541675205286],[-3.1311020989129523,51.493541665329836],[-3.1311021072606358,51.49354165847185],[-3.131205469611728,51.493452830852604],[-3.131205477519911,51.49345282372035],[-3.1312054907003444,51.49345281247327],[-3.131205490260874,51.49345281219901],[-3.131306372390705,51.49336285511075],[-3.1313063719512346,51.49336285483649],[-3.1314047035722283,51.493271829733004],[-3.1314047040116857,51.49327183000727],[-3.1314047171917214,51.4932718171144],[-3.131404722463823,51.493271812450985],[-3.1315004943584754,51.49317972948825],[-3.131500496115763,51.49317972756805],[-3.131500513689152,51.493179710834696],[-3.1315005132496814,51.49317971056043],[-3.131593714004126,51.49308658044305],[-3.1303659515864024,51.49261703600908],[-3.130443579467478,51.49253636850802],[-3.1304435803463275,51.49253636878226],[-3.1305189571788485,51.49245485078004],[-3.1305189668440017,51.49245484008187],[-3.130518971237245,51.492454835144265],[-3.1305920566106766,51.49237250834083],[-3.1305920557318214,51.492372508066595],[-3.1306628276889956,51.4922893990744],[-3.130662827249544,51.49228939880014],[-3.1307312515327386,51.49220554739855],[-3.130731262076138,51.49220553395734],[-3.1307312642726917,51.49220553121423],[-3.1307973334232444,51.4921209470082],[-3.1307973448450386,51.492120931372554],[-3.1307973466023182,51.49212092945236],[-3.1308610408615034,51.49203563823104],[-3.130861050086764,51.49203562561277],[-3.1308610527225085,51.492035621772445],[-3.1309223523321044,51.49194964932483],[-3.1309223567249687,51.49194964274142],[-3.1309223646322852,51.49194963176903],[-3.1309812502743077,51.49186300580411],[-3.132311543730522,51.49220687045132],[-3.132242839775174,51.492307944768115],[-3.1321713104306887,51.49240826851472],[-3.1321713042806723,51.4924082767441],[-3.1320969815995157,51.49250780437972],[-3.1333966517758967,51.492894647324675],[-3.133481589503662,51.49278090032191],[-3.133481592139237,51.49278089648154],[-3.1334816057567476,51.492780878376756],[-3.133481605317271,51.49278087810249],[-3.133563332546255,51.49266624671945],[-3.1348838548059073,51.493024523358116],[-3.1349722100176947,51.49289452836024],[-3.134972209138806,51.49289452808603],[-3.1350568822493203,51.49276364193411],[-3.1350568831281995,51.49276364220832],[-3.1351378996400263,51.49263182842621],[-3.1351379075457126,51.49263181471059],[-3.135137915890873,51.492631801269205],[-3.1352152336649732,51.49249912460273],[-3.1338579036294525,51.4921992291832],[-3.133923313364192,51.49208058718843],[-3.1339233181954462,51.49208057813622],[-3.1339233265404123,51.49208056277484],[-3.133985407748085,51.4919612276317],[-3.1339854086269563,51.49196122790592],[-3.134044168357838,51.491841185355604],[-3.134099540758054,51.49172056899161],[-3.134099547784564,51.49172055308175],[-3.1340995517369525,51.491720544029604],[-3.134151542980056,51.49159934288426],[-3.1341515434193203,51.49159934233562],[-3.134151553080436,51.491599319293805],[-3.134200147382088,51.49147757012879],[-3.1342001482608834,51.49147757012871],[-3.1342453412554825,51.49135528474338],[-3.1342453456462636,51.49135527185103],[-3.1342453495981863,51.491355261153096],[-3.1342871079391634,51.49123252732941],[-3.135698057834607,51.4914115792619],[-3.1357411731034484,51.4912729857791],[-3.1357411783710587,51.49127296740066],[-3.135741181443986,51.49127295725137],[-3.135780407707607,51.491133941756736],[-3.1357804120967785,51.49113392474989],[-3.135780414730449,51.49113391514922],[-3.1358157480731146,51.49099449328197],[-3.1358157502673807,51.490994483681355],[-3.135815755095302,51.49099446448007],[-3.1358471845789744,51.490854679035124],[-3.1358471867725313,51.490854666965845],[-3.135847190283488,51.490854652153445],[-3.135874706727977,51.49071454537658],[-3.135874707606751,51.49071454537649],[-3.135898307976346,51.49057413345427],[-3.135898307976192,51.490574132905664],[-3.135898312801481,51.4905741046526],[-3.135898311922706,51.4905741046527],[-3.1359179791441574,51.49043348386739],[-3.135917980462315,51.49043348386724],[-3.1359337193935755,51.49029261417301],[-3.134496614648247,51.490237894126295],[-3.134507101521279,51.49011259310383],[-3.1345071024000446,51.49011259310376],[-3.1345140873133808,51.48998717310252],[-3.134514087747719,51.48998715307884],[-3.1345140881856497,51.48998714731857],[-3.134517563720224,51.48986169419472],[-3.1345175645989847,51.489861694194644],[-3.134517532978096,51.489736198073594],[-3.1345175334174753,51.48973619807355],[-3.1345175329741566,51.48973618243869],[-3.1345175329715995,51.489736172289724],[-3.1345139933676984,51.48961072176932],[-3.1345139938070763,51.48961072176929],[-3.134513992924935,51.48961070832884],[-3.134513992482447,51.48961069598555],[-3.134513992043069,51.48961069598558],[-3.1345069449208904,51.489485277076355],[-3.1345069444815135,51.4894852770764],[-3.1344963920825855,51.48935995259138],[-3.133059343409227,51.48941495765938],[-3.133068575135944,51.48952463788535],[-3.133074737420193,51.489634364179764],[-3.1330778311216694,51.48974415025781],[-3.133077855335161,51.48985397637049],[-3.13307481002083,51.48996376214893],[-3.1330686951553592,51.49007350210695],[-3.133059512031005,51.49018317896331],[-3.1330472689537143,51.490292700278665],[-3.131611917857042,51.4902222958501],[-3.1315987922066824,51.49031607986782],[-3.1315830516827976,51.490409677826634],[-3.1315646931969963,51.490503106732135],[-3.1315437268299586,51.49059631638609],[-3.1315437263908277,51.490596317757614],[-3.1315201595903748,51.490689275242545],[-3.1314939984884003,51.49078195861273],[-3.131465244386696,51.49087436210613],[-3.131433917030876,51.49096642180834],[-3.1314339161525964,51.490966424551374],[-3.131400017284376,51.491058134974324],[-3.1313635525980477,51.49114947910901],[-3.1313245528229374,51.49124038151937],[-3.131283006086561,51.49133087073052],[-3.131238944437628,51.49142087377473],[-3.1311923590783626,51.491510410673406],[-3.131143297434188,51.49159939117677],[-3.1297860212754314,51.49129944859065],[-3.1297860203968466,51.49129944996218],[-3.1298269164916346,51.491225283326585],[-3.129826915612803,51.491225283052344],[-3.129865723517352,51.49115070041615],[-3.1299024476329027,51.49107568971208],[-3.129902448950626,51.49107568669475],[-3.1299024546609804,51.49107567517396],[-3.1299370686415604,51.491000290990534],[-3.1299695764501574,51.490924525923354],[-3.129969577767865,51.49092452290601],[-3.1299695825994065,51.49092451138528],[-3.129999960966176,51.49084841892526],[-3.1299999622838905,51.49084841590793],[-3.1299999671152476,51.49084840329001],[-3.1300282134151196,51.490771991667856],[-3.1300282147327425,51.490771988101926],[-3.130028218685557,51.49077197712983],[-3.1300543245837638,51.490695269114184],[-3.1300543250228974,51.490695267468375],[-3.1300543298540147,51.49069525347897],[-3.130078286576924,51.49061827403274],[-3.1300782878944537,51.49061826991822],[-3.130078291407728,51.490618258123256],[-3.130100092817649,51.49054102836896],[-3.130100095013351,51.490541020414234],[-3.130100096769832,51.490541013556715],[-3.1301197358509514,51.49046355790835],[-3.130119736289912,51.49046355516535],[-3.1301197398029514,51.490463541998906],[-3.130137209978872,51.49038588404744],[-3.1301372117350006,51.490385874995546],[-3.1301372130522593,51.490385869235254],[-3.1301525103830774,51.490308032845675],[-3.1301656339998414,51.49023001088719],[-3.130165633121072,51.49023001088724],[-3.130176569866646,51.49015188866756],[-3.1301765711828136,51.49015187604984],[-3.13017657162181,51.49015187358115],[-3.1301853219456306,51.490073644243445],[-3.130185321945331,51.490073642323374],[-3.1301853237006174,51.49007362805984],[-3.1301918854206985,51.489995315468526],[-3.130191886297305,51.48999530175366],[-3.1301918862970894,51.48999530038217],[-3.1301962581101734,51.48991692785292],[-3.1301962589864307,51.48991691194365],[-3.1301984391500466,51.48983850361487],[-3.1301984272375165,51.489760068538466],[-3.1301984267956313,51.4897600526293],[-3.130196222387541,51.48968164593893],[-3.1301962219469965,51.48968163853296],[-3.1301962215062358,51.48968162975549],[-3.130191825054279,51.48960325803412],[-3.1301918250540637,51.489603256662626],[-3.1301918241731497,51.48960324294786],[-3.130191823733772,51.489603242947894],[-3.130185237449985,51.48952493088181],[-3.13018523788936,51.48952493088178],[-3.1301764617862124,51.48944668642522],[-3.1301764600270285,51.48944667572776],[-3.1301764595869623,51.489446671339046],[-3.1301654993963273,51.489368550447665],[-3.1301654980772975,51.48936854468752],[-3.1301654967575785,51.48936853453862],[-3.1301523516107004,51.48929053008015],[-3.130152351171327,51.48929053008017],[-3.1301370303144886,51.48921269554114],[-3.130137029434972,51.48921269060384],[-3.1301370272365148,51.48921268045502],[-3.130119532878957,51.48913502488621],[-3.1301195333183296,51.489135024886195],[-3.1301195298012927,51.48913501172016],[-3.1301195293614934,51.48913500897723],[-3.130099862833521,51.48905754088082],[-3.130099862394147,51.48905754088083],[-3.1300780333785623,51.488980297833756],[-3.1300780329391893,51.488980297833784],[-3.130054053315873,51.48890332015572],[-3.1300540506785017,51.488903312749876],[-3.1300540484804995,51.488903305344],[-3.130027920018579,51.48882660071385],[-3.1300279156231006,51.48882658919365],[-3.130027914304354,51.48882658507929],[-3.1299996462446416,51.48875017763315],[-3.1299996440470346,51.488750172695944],[-3.12999964009107,51.48875016199862],[-3.129969239476992,51.48867407367826],[-3.1299692399163175,51.48867407340394],[-3.129936711152892,51.48859831298496],[-3.129936704559993,51.48859829735045],[-3.129902068754708,51.488522917494784],[-3.1299020691940354,51.48852291722046],[-3.129902062601454,51.488522903506016],[-3.129902062162,51.48852290295745],[-3.1298653254767976,51.488447911891775],[-3.1298653259161284,51.488447911617456],[-3.1298653193237267,51.4884478990002],[-3.129865318005217,51.48844789625731],[-3.1298264909978535,51.48837331784284],[-3.12982648836104,51.48837331372855],[-3.1298264826475988,51.48837330248273],[-3.12978557631449,51.488299157563326],[-3.129785571480203,51.4882991490604],[-3.1297855679644284,51.48829914330038],[-3.1297425862700097,51.48822544010256],[-3.128394087703745,51.48854028298485],[-3.1284284761160954,51.48859925432988],[-3.128461207799888,51.48865858534415],[-3.128461208239325,51.48865858589273],[-3.128492269125961,51.48871825079438],[-3.128521664483246,51.48877825973346],[-3.12854937672606,51.48883857650491],[-3.128575398816722,51.48889918766971],[-3.128599721079747,51.48896006799416],[-3.1286223373558286,51.489021203490466],[-3.1286432419246917,51.48908257825071],[-3.1272324251823336,51.4892618339076],[-3.1272167506367574,51.489215810810876],[-3.127199788772866,51.489169956450155],[-3.1271997878939213,51.489169954255814],[-3.1271997852570195,51.489169947124196],[-3.127181547944522,51.48912429359118],[-3.127181544428832,51.489124285911004],[-3.1271815439893564,51.48912428481384],[-3.1271620329897525,51.48907883677092],[-3.127162032989699,51.489078836222326],[-3.12716202903454,51.48907882744497],[-3.127141250503843,51.48903359888043],[-3.127141247427613,51.48903359202313],[-3.1271412465486947,51.489033590103084],[-3.12711920708221,51.488988595005125],[-3.127095908441221,51.488943838036036],[-3.1270959036073234,51.488943828984425],[-3.1270713620546964,51.488899341412704],[-3.1270713594180553,51.488899336749746],[-3.127071357220857,51.488899332909675],[-3.12704557012318,51.48885511034588],[-3.1256970344074917,51.489169922185226],[-3.1256790262719365,51.489140638154524],[-3.125679024953702,51.48914063623448],[-3.1256790227566134,51.489140632394374],[-3.125660198300239,51.48911154916432],[-3.1256601987395998,51.489111548890016],[-3.125640556645429,51.489082663442986],[-3.1256405562060783,51.48908266371729],[-3.1256201180064886,51.48905400787079],[-3.1255988731569864,51.48902556818411],[-3.1255768453865844,51.488997375377515],[-3.1255768431895414,51.488997372086004],[-3.1255768409925597,51.48899736989169],[-3.125554023711321,51.488969415735966],[-3.1255304331781795,51.48894171997971],[-3.125530429223568,51.48894171504245],[-3.125530428784177,51.48894171476817],[-3.1255060623637485,51.48891427439365],[-3.1255060623637556,51.48891427466794],[-3.125480938511713,51.48888710997226],[-3.1254809367541276,51.48888710805222],[-3.125480933238964,51.48888710448645],[-3.1254550537137926,51.48886021738915],[-3.1254550528350027,51.48886021656629],[-3.1254550484410695,51.48886021217762],[-3.1254284211527517,51.488833611181256],[-3.127856832423291,51.487867672623814],[-3.1278020859875317,51.48781504943602],[-3.1278020842299172,51.48781504779032],[-3.1278020750024482,51.48781503928749],[-3.1277458771101228,51.487763031379615],[-3.1277458749130993,51.48776302918533],[-3.127745865685643,51.487763020682515],[-3.1277458652462857,51.48776302068253],[-3.1276882229304284,51.48771163381245],[-3.127688222930399,51.48771163353815],[-3.1276882163394415,51.48771162805248],[-3.127688211066613,51.487711623115345],[-3.1276291401480707,51.487660870995164],[-3.1276291401480534,51.487660870720866],[-3.1275686485383054,51.48761076075411],[-3.127568648538273,51.487610760479825],[-3.127568637992805,51.48761075197704],[-3.127568635795819,51.487610750057044],[-3.127506763921304,51.48756131597849],[-3.127506764360665,51.48756131597846],[-3.1275067538152816,51.48756130802427],[-3.127506752497067,51.487561306652836],[-3.1274435082685192,51.48751255422023],[-3.127443508268492,51.487512553945926],[-3.1274434964049758,51.48751254516888],[-3.1274434950867995,51.487512544071755],[-3.1273788855360247,51.48746447876856],[-3.1262841826853824,51.48804824917819],[-3.1262347351312085,51.48801274012005],[-3.12623472502537,51.488012732988615],[-3.1261842824296493,51.48797776128339],[-3.126184281990278,51.4879777612834],[-3.1261328799434915,51.487943351066974],[-3.126080513612734,51.48790949959525],[-3.1271073257921094,51.487279481578575],[-3.127036238078481,51.48723510532633],[-3.125018129493359,51.48851731967881],[-3.124981984853325,51.488495530452745],[-3.1249819795807676,51.488495527161284],[-3.1249819773838805,51.48849552606414],[-3.124945229983457,51.488474134018226],[-3.124945225589688,51.488474131549616],[-3.1249452225140306,51.488474129629616],[-3.1249078820194587,51.488453141071965],[-3.1249078771863057,51.48845313832908],[-3.1249078749894212,51.48845313695762],[-3.124869945794269,51.48843255408199],[-3.1248699457942823,51.48843255435628],[-3.1248314551396676,51.48841239197367],[-3.124831453382164,51.48841239115081],[-3.1248314472309078,51.48841238785934],[-3.1247923990708846,51.48839264816352],[-3.1247923916015248,51.48839264459778],[-3.124792391162138,51.488392644049185],[-3.124752797359482,51.488373333073945],[-3.124752797359467,51.488373332799654],[-3.1247126535200094,51.48835444835013],[-3.1247126530806315,51.488354448350144],[-3.124672003141252,51.488336010997415],[-3.1246719969900405,51.488336008528826],[-3.124671995671924,51.48833600770596],[-3.1246308308446022,51.48831801388375],[-3.1246308361170603,51.48831801607804],[-3.126261660150284,51.48683650980517],[-3.126178334273517,51.48680142406999],[-3.1261783347128502,51.48680142379569],[-3.126178323289417,51.48680141940725],[-3.1261783171383084,51.48680141666445],[-3.1260940235615746,51.486767244028805],[-3.1260940235615835,51.48676724430311],[-3.1260088049000885,51.48673400177026],[-3.1260088053394437,51.48673400177025],[-3.126008790401151,51.4867339962847],[-3.1260087873256133,51.4867339949133],[-3.125922651045324,51.486701685498296],[-3.1259226448942874,51.48670168330408],[-3.1259226352283567,51.486701679738474],[-3.125835608566256,51.48667031331333],[-3.125835601097157,51.48667031084485],[-3.1258355905525224,51.48667030700496],[-3.1257477025027915,51.486639894538904],[-3.1257476981092154,51.48663989316752],[-3.1257476844891015,51.486639888504804],[-3.1256589600913345,51.486610438224254],[-3.125658960091321,51.486610437949956],[-3.125658943835097,51.486610432738686],[-3.1256589416383167,51.48661043219013],[-3.1255693892363365,51.48658194711028],[-3.1255693887970026,51.486581947384586],[-3.125479070335898,51.48655444725159],[-3.125479065502993,51.4865544458802],[-3.1254790514436106,51.48655444176605],[-3.1253879800996063,51.48652793069234],[-3.125387973509283,51.486527928772404],[-3.1253879616466853,51.4865279252068],[-3.1252961628977647,51.48650241059612],[-3.1252961628977576,51.48650241032182],[-3.1252961444448966,51.48650240565914],[-3.1252961440055316,51.486502405384854],[-3.1252036464048767,51.48647789464101],[-3.1252036464048616,51.48647789436671],[-3.125110456098437,51.48645438940804],[-3.1251104394030347,51.48645438529389],[-3.125016625803489,51.48643190422109],[-3.12501661701645,51.48643190230117],[-3.1250166064719873,51.48643189955839],[-3.1249221809970664,51.4864104448385],[-3.125402705120669,51.485563175856555],[-3.125283919269114,51.48553764203257],[-3.125283905649471,51.48553763928985],[-3.12528389510523,51.48553763709569],[-3.1251644381385746,51.48551340662143],[-3.1251644337451476,51.48551340579862],[-3.125164413535371,51.485513401684535],[-3.1251644135353858,51.48551340195883],[-3.1250442946706314,51.48549047592932],[-3.1250442951099617,51.485490475655006],[-3.124923507308377,51.48546885379405],[-3.124538816277276,51.48633498573066],[-3.1246354349262413,51.48635228129473],[-3.1247315616195745,51.486370628165396],[-3.1248271313394116,51.48639001345299],[-3.124827132218109,51.48639001345296],[-3.1249221616656,51.48641044045008],[-3.124441624563087,51.48725770816285],[-3.1243703654788995,51.48724239064956],[-3.124370350980082,51.48724238763247],[-3.1242986596402047,51.48722784579139],[-3.1242265861281298,51.48721408977019],[-3.1242265738261272,51.48721408757594],[-3.1242265729474177,51.487214087575964],[-3.12415412560757,51.48720111874533],[-3.1240813141023547,51.48718893902461],[-3.1240813114662194,51.48718893875034],[-3.124081299164236,51.48718893655607],[-3.1240081726981024,51.48717755444733],[-3.1240081612748445,51.48717755280165],[-3.1240081577599934,51.4871775522531],[-3.123934709739002,51.48716696638431],[-3.123860976626065,51.48715718251485],[-3.1237869948839765,51.487148205032696],[-3.1237869874149347,51.48714820420985],[-3.123786979506541,51.487148203387015],[-3.123712744737983,51.487140031743124],[-3.1237127447379884,51.487140032017415],[-3.123638307904341,51.48713267197127],[-3.1238510917158155,51.48624372821176],[-3.1237515652661965,51.486234996109665],[-3.1237515652661916,51.486234995835375],[-3.12365180689562,51.486227349316195],[-3.1238147662176403,51.485334310775734],[-3.123689809867364,51.48532611202657],[-3.123689826122843,51.48532611284935],[-3.123827793782886,51.484431434551276],[-3.1236775855536876,51.484423230477425],[-3.1235646501657874,51.48531927585117],[-3.1236898002019404,51.48532611120374],[-3.1235518324135545,51.4862207894765],[-3.1236517893217774,51.48622734794482],[-3.123488828026295,51.48712038639634],[-3.1235636514275487,51.48712612160246],[-3.1236382925269237,51.48713267059986],[-3.1234255057120985,51.48802161411205],[-3.1234751515645147,51.488026522732596],[-3.1235246322333206,51.488031969502686],[-3.1235739644160057,51.48803795579397],[-3.123286941145941,51.48891872796341],[-3.12326227964929,51.488915735446184],[-3.123237533797961,51.488913011460234],[-3.1232375329192195,51.488913011460234],[-3.123237528525501,51.48891301091165],[-3.123212715454565,51.48891055737696],[-3.123187832527362,51.488908374293494],[-3.1231878294517603,51.4889083740192],[-3.123187827254904,51.4889083737449],[-3.123162891606485,51.488906462484096],[-3.123137901478932,51.48890482277157],[-3.123112869613573,51.488903455430226],[-3.1231128643411155,51.48890345515593],[-3.1230878030399047,51.488902361282875],[-3.1230627101055357,51.48890154005523],[-3.1230375969612156,51.488900992570144],[-3.123012468000207,51.4889007188276],[-3.122987340357538,51.4889007188276],[-3.1229622219414397,51.48890099257014],[-3.1229371087971196,51.48890154005523],[-3.122937105282149,51.488901540329536],[-3.122937104403406,51.48890154032952],[-3.1229120158627515,51.48890236100859],[-3.1228869492890827,51.48890345515593],[-3.122861912151267,51.488904822771566],[-3.1228369272961722,51.4889064622098],[-3.122811986375298,51.488908373744906],[-3.122787098175635,51.488910557376954],[-3.1227622851046974,51.48891301091165],[-3.1227622807109805,51.48891301146024],[-3.122762279832238,51.488913011460234],[-3.122737539253369,51.4889157348976],[-3.122712868090543,51.48891872851199],[-3.1226882940237584,51.48892198956056],[-3.122663805189562,51.4889255188662],[-3.1226394239955177,51.488929313960384],[-3.1226151574711793,51.48893337319741],[-3.122591003419307,51.488937696851664],[-3.122566972823808,51.48894228327744],[-3.122566970626945,51.488942283826034],[-3.1225669688694584,51.48894228410032],[-3.1225430700780348,51.48894713192626],[-3.1225193162715197,51.48895223786096],[-3.122519311438412,51.48895223895811],[-3.122495704373926,51.488957603001644],[-3.119470877934815,51.483906176615776],[-3.119636129508067,51.483868628600746],[-3.119802427589516,51.483832881962286],[-3.119969709372331,51.483798950957734],[-3.1201378830548534,51.48376685340999],[-3.1203069332790268,51.48373659205785],[-3.1204768503982683,51.48370816936601],[-3.120647465730734,51.48368161303135],[-3.12064746748803,51.483681612757074],[-3.120818862328346,51.48365691043469],[-3.1209909031417666,51.483634081593976],[-3.1211635104310655,51.48361313637985],[-3.121336731224288,51.48359406875598],[-3.121510452636328,51.48357689161018],[-3.1216846087899732,51.483561611796894],[-3.121859162364232,51.48354823178256],[-3.122034085263985,51.48353675458239],[-3.122209261090978,51.48352718705141],[-3.1223847236946356,51.48351952726859],[-3.1225603729318836,51.48351378044391],[-3.122736128868547,51.483509948770745],[-3.122911963410241,51.483508032797175],[-3.12308786120288,51.48350803279717],[-3.123263694426617,51.483509949045015],[-3.1234394411375686,51.48351378016962],[-3.1234394406982515,51.48351378044391],[-3.123615089935499,51.483519527268584],[-3.123790552539152,51.48352718677711],[-3.123790552978472,51.483527186777096],[-3.1239657560433214,51.48353675595363],[-3.1241037129045393,51.48264207733074],[-3.124303605548892,51.48265519324964],[-3.136505999660156,51.415676193711256]],[[-3.130203952752984,51.49277580769445],[-3.130119654717096,51.49285384027377],[-3.128932964354688,51.49234481366014],[-3.1290032029530668,51.49227979718667],[-3.129003214815485,51.49227978593991],[-3.1290032161335106,51.49227978456836],[-3.129071626954106,51.49221401273454],[-3.1302860476068113,51.49269687741845],[-3.130203952752984,51.49277580769445]],[[-3.1297430510375497,51.491373169050036],[-3.129698042669619,51.49144638462949],[-3.1296980391553086,51.49144639038993],[-3.1296509759555664,51.49151912577472],[-3.1296509763949913,51.49151912604899],[-3.129601902285207,51.491591314580205],[-3.1295508080324006,51.491662971342144],[-3.128240585146455,51.491290306251685],[-3.1282814540515664,51.49123299237885],[-3.128281455369521,51.49123299045871],[-3.1282814623986734,51.49123298058372],[-3.1283207220928877,51.49117523091209],[-3.1283207278039473,51.491175221860054],[-3.128320730000554,51.49117521884269],[-3.128358369505896,51.49111704928356],[-3.1283583699453312,51.49111704955784],[-3.1283943919027726,51.49105845544961],[-3.128428756340616,51.490999501529544],[-3.1297860133684527,51.49129946285451],[-3.1297430510375497,51.491373169050036]],[[-3.127579247494871,51.49326715021018],[-3.127481616031034,51.49331650839057],[-3.12738259966048,51.49336480528863],[-3.127282265173565,51.49341200743424],[-3.1271806020279906,51.49345812031042],[-3.1270776923943706,51.49350310660654],[-3.1262620825866807,51.49276239656504],[-3.1263444211299642,51.49272640327535],[-3.126344420690535,51.492726403001065],[-3.1264257237933393,51.492689525626474],[-3.126425724232768,51.492689525900765],[-3.1265059989231467,51.49265176087738],[-3.126506004635237,51.49265175813426],[-3.1265060156200155,51.492651752922285],[-3.126585205653794,51.49261312686066],[-3.126585206093227,51.49261312713494],[-3.1266633215747173,51.49257363564818],[-3.126663328604931,51.492573632082106],[-3.126663336513925,51.49257362796741],[-3.1267403198815584,51.492533299586306],[-3.127675493170836,51.4932167307509],[-3.127579247494871,51.49326715021018]],[[-3.12731340462681,51.49218170577075],[-3.1273134041873734,51.492181705496456],[-3.127246149571722,51.49222833888051],[-3.1261845467956157,51.49162114369728],[-3.126133126475859,51.491655569004514],[-3.12613312427897,51.49165557037606],[-3.126080757379829,51.49168942487464],[-3.1271077637448337,51.492319381672765],[-3.1270367045909193,51.492363745266466],[-3.1269644021553966,51.492407336440266],[-3.1269644017159552,51.49240733616599],[-3.1268908762104077,51.49245014147643],[-3.1268161948610826,51.492492122517554],[-3.12681619442166,51.49249212224328],[-3.1267403352600858,51.49253329108263],[-3.1258051864220358,51.491849854576586],[-3.1257474260857787,51.49188011248],[-3.1256888400024216,51.491909730440284],[-3.125629434763677,51.491938705438834],[-3.125569240688331,51.49196702321031],[-3.125508251186671,51.49199468677094],[-3.1254464992141573,51.49202168103248],[-3.1246309418360183,51.4912809597349],[-3.124672110651466,51.49126296339095],[-3.124712760933244,51.49124452514855],[-3.1247127613726535,51.49124452542285],[-3.1247529067412025,51.49122563952212],[-3.124792509408824,51.49120632324481],[-3.1248315588298508,51.49118658207758],[-3.1248315623449145,51.491186580157446],[-3.1248315662993775,51.491186578237304],[-3.1248700655491186,51.491166410534866],[-3.124907987385478,51.491145830561585],[-3.124907988703614,51.49114582973868],[-3.1249079944156053,51.49114582672133],[-3.124945342792775,51.49112483255767],[-3.124982090029459,51.491103439016605],[-3.1249820904688534,51.49110343929089],[-3.1250182493070264,51.49108164006396],[-3.125053778884163,51.49105945874193],[-3.125088696775503,51.491036885176065],[-3.125088696336098,51.491036884901774],[-3.125122971785142,51.49101393856822],[-3.125156592928826,51.49099062714807],[-3.1251565968832127,51.49099062440503],[-3.1251565995194692,51.490990622484915],[-3.125189570751749,51.49096694323566],[-3.12522186746782,51.490942913987595],[-3.125253494940499,51.490918530626715],[-3.125284435155806,51.490893807143024],[-3.1253146802054625,51.490868749846044],[-3.1253442195450347,51.4908433672397],[-3.125373044387645,51.490817666730706],[-3.125373050538815,51.490817661244655],[-3.12540115253708,51.49079165051401],[-3.125428523343665,51.49076533724268],[-3.125455154171978,51.490738729934584],[-3.125481032281244,51.49071184175668],[-3.1255061598691185,51.490684670240775],[-3.1255305233162183,51.49065722965105],[-3.1255541160331055,51.49062952739412],[-3.1255541177905375,51.49062952547401],[-3.125554120866038,51.49062952163379],[-3.1255769309910337,51.49060157224808],[-3.1255769327484564,51.490601569779386],[-3.1255769353846032,51.49060156676207],[-3.125598965554946,51.49057336723072],[-3.125620199076147,51.490544937578186],[-3.125620202151615,51.49054493346368],[-3.1256202030303166,51.49054493209219],[-3.1256406390249687,51.490516275610474],[-3.125640642100401,51.49051627094735],[-3.1256406429791066,51.490516269850154],[-3.125660278372858,51.49048738955701],[-3.125679099547143,51.49045830520247],[-3.1256971082606615,51.49042901459254],[-3.125714295727882,51.49039953199119],[-3.1257306557993485,51.4903698669993],[-3.127096056505354,51.49065502671313],[-3.1270715193235197,51.49069952064332],[-3.127045742553273,51.49074373976579],[-3.127018725752017,51.49078768325685],[-3.1269904882471407,51.49083132066805],[-3.1269610423369913,51.4908746325231],[-3.1269303774747286,51.49091763473064],[-3.1268985208964417,51.490960288064414],[-3.1268654800684454,51.49100258374571],[-3.1268312606996815,51.49104451436739],[-3.1267958689385518,51.49108607169929],[-3.1267593298257905,51.49112722776134],[-3.126721632375313,51.4911679929761],[-3.1267216319359403,51.49116799325042],[-3.126682813490828,51.49120832784263],[-3.1266428617472455,51.491248245252066],[-3.1266018140488723,51.491287707623556],[-3.126559652819634,51.49132673223714],[-3.1265164246304087,51.49136527547712],[-3.126472114541522,51.49140335188048],[-3.1264267480348225,51.491440937855764],[-3.126380330381621,51.49147802956144],[-3.12633288926123,51.4915146050518],[-3.1262844338996314,51.49155065719361],[-3.1273793324808774,51.49213435593519],[-3.12731340462681,51.49218170577075]],[[-3.123815380506196,51.489058758786676],[-3.1237945527656477,51.489049988847334],[-3.123794548371877,51.4890499869273],[-3.1237734745944814,51.48904144328049],[-3.1237521692794648,51.489033132234816],[-3.1237306262753664,51.48902505132152],[-3.123708868868879,51.48901720959209],[-3.123708867550753,51.48901720904351],[-3.1237088640357547,51.48901720794635],[-3.1236868913478784,51.48900960430351],[-3.1236647051358837,51.48900223984432],[-3.1236647033783873,51.48900223929574],[-3.1236647003027675,51.489002238472885],[-3.123642315505127,51.48899511813446],[-3.123642311550758,51.48899511676299],[-3.123619730803459,51.488988241368126],[-3.1236197281672218,51.488988240819545],[-3.123619725970349,51.48898823999668],[-3.123596952788099,51.4889816106424],[-3.1235740021093226,51.48897523144298],[-3.123550871736844,51.48896910212404],[-3.1235508682218605,51.48896910130116],[-3.1235508669037415,51.48896910102687],[-3.123527573094064,51.488963225702655],[-3.123504114528748,51.4889576040988],[-3.1234805021917866,51.48895223895811],[-3.123480497358682,51.48895223786096],[-3.1234567435521603,51.48894713165196],[-3.1239135628134775,51.48809476237694],[-3.123961079753454,51.48810497625226],[-3.124008303231091,51.48811570633693],[-3.1240552161124966,51.488126948517014],[-3.1241018096116857,51.48813870059863],[-3.1241480670340196,51.48815095819354],[-3.1241939857445966,51.48816372130217],[-3.124193986183962,51.48816372130217],[-3.1242395275196375,51.48817697867917],[-3.124284701147669,51.48819073306783],[-3.124329470601614,51.48820497349713],[-3.1243738451092695,51.48821970298469],[-3.1244178000669813,51.48823491302804],[-3.1244613284458262,51.48825060170766],[-3.1245043977332987,51.48826675695541],[-3.1245044008089033,51.48826675832685],[-3.1245470224294927,51.48828338453183],[-3.124589170021745,51.48830047154586],[-3.1246308277689874,51.488318012512295],[-3.123815380506196,51.489058758786676]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1231464567122256,51.48980029768287],[-3.122999906539917,51.48979949951172]],[[-3.1229999305416225,51.489799503960434],[-3.1229999270265814,51.48979950341185],[-3.1229999388898397,51.489799505606214],[-3.123011993717521,51.489801878818696],[-3.122999906539917,51.48979949951172],[-3.1229999169208416,51.48979950149177],[-3.122999906539917,51.48979949951172],[-3.1229999208752637,51.48979950231466],[-3.12299992570844,51.489799503137554],[-3.122999924390299,51.48979950286326],[-3.1229999199964986,51.48979950204036],[-3.1230850147300266,51.48981423419881],[-3.1229999305416225,51.489799503960434]],[[-3.122999920435883,51.48979950286326],[-3.122999906539917,51.48979949951172],[-3.123075026306517,51.48981610627907],[-3.122999920435883,51.48979950286326]],[[-3.1229999191177393,51.48979950615481],[-3.122999906539917,51.48979949951172],[-3.123063133628365,51.48983203742523],[-3.1229999191177393,51.48979950615481]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230603334095375,51.48979520133038],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999147239456,51.48979949490866],[-3.1229999173602216,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999913845187,51.489799495731546],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999917799598,51.489799493811475],[-3.1230596413531124,51.48976983686138],[-3.122999906539917,51.48979949951172]],[[-3.1229999186783646,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.1230555586620694,51.489789864346236],[-3.1229999186783646,51.48979949737732]],[[-3.122999917360222,51.489799493811475],[-3.123004784371165,51.489796989210255],[-3.122999917799598,51.489799493811475],[-3.1229999151633288,51.48979949490866],[-3.122999914723944,51.48979949518295],[-3.122999906539917,51.48979949951172],[-3.122999919117746,51.48979949271428],[-3.1230399110185996,51.489778169722406],[-3.122999917360222,51.489799493811475]],[[-3.122999919557122,51.489799499023114],[-3.122999906539917,51.48979949951172],[-3.1230332201591526,51.489798227379914],[-3.122999919557122,51.489799499023114]],[[-3.1229999191177393,51.48979950258895],[-3.122999920435883,51.48979950286326],[-3.12302874683752,51.48980623107792],[-3.1229999191177393,51.48979950258895]],[[-3.122999912966419,51.48979949381147],[-3.1229999125270416,51.489799494085766],[-3.122999906539917,51.48979949951172],[-3.122999914723948,51.48979949161709],[-3.123025929954184,51.489773998774126],[-3.122999912966419,51.48979949381147]],[[-3.122999925269059,51.489799489148446],[-3.1229999147239456,51.48979949490866],[-3.1230189420661705,51.4897886105487],[-3.122999925269059,51.489799489148446]],[[-3.122999919117746,51.48979949271428],[-3.1229999173602216,51.48979949353717],[-3.122999925269059,51.489799489148446],[-3.1230188080555146,51.48978905984636],[-3.122999919117746,51.48979949271428]],[[-3.122999934496037,51.489799480370955],[-3.1229999287841097,51.48979948421108],[-3.1230172820887616,51.489787239066594],[-3.122999934496037,51.489799480370955]],[[-3.1229999322991424,51.48979948201672],[-3.122999934496037,51.489799480370955],[-3.123015093978063,51.4897891525591],[-3.1229999322991424,51.48979948201672]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230147284123317,51.48978379116025],[-3.122999906539917,51.48979949951172]],[[-3.122999912527045,51.48979948750264],[-3.1230111949183534,51.489775709289304],[-3.1229999107695283,51.4897994913428],[-3.122999910330144,51.489799492165695],[-3.1230142020302316,51.489767319931254],[-3.122999912527045,51.48979948750264]],[[-3.122999914723948,51.48979949161709],[-3.122999906539917,51.48979949951172],[-3.1230141914906273,51.489784947319954],[-3.122999914723948,51.48979949161709]],[[-3.122999906539917,51.48979949951172],[-3.12299991736022,51.4897994913428],[-3.123013656327324,51.48978908672812],[-3.122999906539917,51.48979949951172]],[[-3.122999915163316,51.489799501766065],[-3.122999906539917,51.48979949951172],[-3.122999916481459,51.48979950204036],[-3.1229999191177393,51.48979950258895],[-3.123013353598675,51.48980280648923],[-3.122999915163316,51.489799501766065]],[[-3.122999916042079,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.1230112089826116,51.489792319586634],[-3.122999916042079,51.48979949353718]],[[-3.122999919117742,51.48979949765162],[-3.1229999169208424,51.489799497925915],[-3.123011113638571,51.4897979481503],[-3.122999919117742,51.48979949765162]],[[-3.12299991736022,51.4897994913428],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230100428683536,51.48979154442491],[-3.12299991736022,51.4897994913428]],[[-3.1229999147239456,51.48979949463437],[-3.1229999164814606,51.48979949353718],[-3.123009739257355,51.489793674337065],[-3.1229999147239456,51.48979949463437]],[[-3.122999909451387,51.489799493811475],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123009342493486,51.489774964300246],[-3.122999909451387,51.489799493811475]],[[-3.1229999388898397,51.489799505606214],[-3.1229999305416225,51.489799503960434],[-3.1230089518901454,51.489801172231246],[-3.1229999388898397,51.489799505606214]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230082168055695,51.48979033011456],[-3.122999906539917,51.48979949951172]],[[-3.1229999191177433,51.48979949106851],[-3.1229999160420836,51.48979949298858],[-3.122999906539917,51.48979949951172],[-3.122999913845183,51.48979949463437],[-3.1229999160420836,51.48979949298858],[-3.122999915602706,51.48979949353717],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123007379348247,51.48979403750576],[-3.1229999191177433,51.48979949106851]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230057523243318,51.48979149176027],[-3.122999906539917,51.48979949951172]],[[-3.1229999090120057,51.48979949216569],[-3.123002218831768,51.48979171202047],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999908133246,51.48979949381147],[-3.1229999081332434,51.48979949298858],[-3.1230003114839806,51.48979758086785],[-3.122999908572625,51.48979949216568],[-3.1230049891200995,51.48977827012162],[-3.1229999090120057,51.48979949216569]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123003926261847,51.48979241339651],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1230027522390125,51.48979386579637],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999907254485,51.48979949353718],[-3.1230006032321023,51.48978954644983],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.123000507886813,51.489799582683524],[-3.122999906539917,51.48979949951172]],[[-3.1229999257084455,51.48979948640547],[-3.1229999287841097,51.48979948421108],[-3.1229999322991424,51.48979948201672],[-3.1229999257084455,51.48979948640547]],[[-3.1229999235115447,51.48979948805124],[-3.1229999226327743,51.48979948859984],[-3.122999924390304,51.48979948722835],[-3.1229999235115447,51.48979948805124]],[[-3.1229999208752695,51.489799489971325],[-3.122999915602706,51.48979949353717],[-3.1229999191177433,51.48979949106851],[-3.1229999217540234,51.489799489148425],[-3.1229999226327743,51.48979948859984],[-3.1229999208752695,51.489799489971325]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999169208424,51.489799497925915],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907673,51.48979949326287],[-3.1229999098907624,51.48979949298858],[-3.122999910330144,51.489799492165695],[-3.1229999098907673,51.48979949326287]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229999098907624,51.48979949298858],[-3.122999909451387,51.489799493811475],[-3.1229999098907637,51.48979949271428],[-3.1229999098907624,51.48979949298858]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.12295844910747,51.48981796053995],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229918622075026,51.4898047915733],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999905057586,51.48979950780058],[-3.1229949725762536,51.48982289788369],[-3.122999906539917,51.48979949951172],[-3.122999905057586,51.48979950780058]],[[-3.122992426804906,51.48984048330472],[-3.122999905057586,51.48979950780058],[-3.122999906539917,51.48979949951172],[-3.122992426804906,51.48984048330472]],[[-3.1229602132032297,51.489835554190634],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229602132032297,51.489835554190634]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229998958306058,51.48979949682873],[-3.1229998927549514,51.489799496005844],[-3.1229998905580514,51.489799495457255],[-3.1229998874823868,51.48979949463437],[-3.1229998852854894,51.489799494085766],[-3.1229998822098275,51.48979949326288],[-3.1229998734222297,51.48979949106851],[-3.122999874740373,51.4897994913428],[-3.1229998694678134,51.489799489971325],[-3.122999862877108,51.48979948832553],[-3.122928545397545,51.489780129007244],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229965600584517,51.48979845779364],[-3.122999896269991,51.489799496280135],[-3.1229577219631346,51.48978579022631],[-3.122999906539917,51.48979949951172],[-3.1229965600584517,51.48979845779364]],[[-3.122999906539917,51.48979949951172],[-3.1229867724272853,51.48981460123763],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229869174239875,51.48981006739124],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122924419134795,51.48980908703206],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122962453614494,51.489821687407485],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122960609101872,51.48981573709347],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229986585367784,51.489800444797346],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229599482803065,51.4898088259193],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229599482803065,51.4898088259193]],[[-3.122999906539917,51.48979949951172],[-3.122816220712529,51.48975432883289],[-3.122999868149681,51.489799489697035],[-3.122999878694792,51.48979949243998],[-3.1229998800129355,51.48979949271428],[-3.122999883967356,51.489799493811475],[-3.1229998870430027,51.48979949463437],[-3.1229998892399093,51.48979949518296],[-3.1229998923155637,51.489799496005844],[-3.122999894512467,51.48979949655443],[-3.122999897588123,51.48979949737732],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.122999906539917,51.48979949951172],[-3.1229946922546548,51.48979726213524],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172]],[[-3.1229598230826365,51.48977959496686],[-3.1229998971487465,51.48979949463437],[-3.122999897588128,51.48979949490867],[-3.122999906539917,51.48979949951172],[-3.1229598230826365,51.48977959496686]],[[-3.122999894512468,51.489799499845994],[-3.1229370293515255,51.489801213359215],[-3.122999906539917,51.48979949951172],[-3.122999894512468,51.489799499845994]],[[-3.122999897588128,51.48979949490867],[-3.122999898466888,51.48979949518296],[-3.122999898906269,51.489799495457255],[-3.122999897588128,51.48979949490867]],[[-3.1229998949518483,51.48979949518296],[-3.122999895830607,51.489799495457255],[-3.122999906539917,51.48979949951172],[-3.1229998949518483,51.48979949518296]],[[-3.1229998971487465,51.48979949463437],[-3.122999896269986,51.489799494085766],[-3.122999898466888,51.48979949518296],[-3.1229998971487465,51.48979949463437]],[[-3.1229998923155713,51.48979949353718],[-3.1229946175600687,51.48979731397728],[-3.1229998984668796,51.489799496005844],[-3.1229998923155713,51.48979949353718]],[[-3.122999895830607,51.489799495457255],[-3.122999892754947,51.489799494360064],[-3.1229998883611505,51.489799492714276],[-3.1229911565649506,51.489796152057195],[-3.1229998918761854,51.48979949381147],[-3.12292401628936,51.489769317060215],[-3.1229998923155713,51.48979949353718],[-3.122999898466892,51.489799496280135],[-3.122999895830607,51.489799495457255]],[[-3.122999894512467,51.48979949655443],[-3.1229998936337084,51.489799496280135],[-3.1229998958306058,51.48979949682873],[-3.1229998967093673,51.48979949710302],[-3.122999894512467,51.48979949655443]],[[-3.122999889679291,51.48979949079421],[-3.122957393315392,51.48977683197761],[-3.122999896269986,51.489799494085766],[-3.122999889679291,51.48979949079421]],[[-3.1229998949518483,51.489799500120284],[-3.122986492107007,51.489800305728274],[-3.122999891436809,51.48979950012029],[-3.122969523693721,51.489800992014885],[-3.122999894512468,51.489799499845994],[-3.122999896269987,51.489799499845994],[-3.1229998949518483,51.489799500120284]],[[-3.1229427180373666,51.489774033598735],[-3.1229998826492067,51.489799488599836],[-3.1229998953912244,51.489799494360064],[-3.1229427180373666,51.489774033598735]],[[-3.1229998826492067,51.489799488599836],[-3.1229805648761126,51.48979056491103],[-3.12299988660363,51.48979949024562],[-3.1229998826492067,51.489799488599836]],[[-3.122999883967356,51.489799493811475],[-3.1229998830885903,51.48979949353718],[-3.1229998852854894,51.489799494085766],[-3.122999883967356,51.489799493811475]],[[-3.1229745440531396,51.489792941140244],[-3.122999862877108,51.48979948832553],[-3.122999868149681,51.489799489697035],[-3.1229745440531396,51.489792941140244]],[[-3.121452686373269,51.49131559243724],[-3.121410545521726,51.49129850787088],[-3.121368877066869,51.491280961655065],[-3.1213277034181552,51.491262963390966],[-3.1212870443486365,51.49124452158259],[-3.1212469152373408,51.491225643362405],[-3.121207304221415,51.49120632297052],[-3.1211682486490004,51.49118657878595],[-3.121168247330861,51.49118657796302],[-3.121129751596187,51.491166411906406],[-3.1210918227297033,51.491145828367166],[-3.121054478746342,51.49112483667224],[-3.1210544765494324,51.49112483557501],[-3.1210177156918992,51.491103434627725],[-3.120981571792691,51.49108164417854],[-3.121990753457291,51.49044057597751],[-3.1220088291244155,51.490451473380766],[-3.1220272066627555,51.49046217219308],[-3.1220458772846733,51.49047266692833],[-3.1220458794815755,51.49047266802554],[-3.122045880799718,51.49047266884844],[-3.122064841429472,51.49048295868357],[-3.1220840911882575,51.49049304224697],[-3.122084090748872,51.49049304224695],[-3.122103619530827,51.49050291460103],[-3.1221234211845093,51.49051257272836],[-3.122123420745122,51.490512572728356],[-3.122143493073502,51.4905220155316],[-3.1221638185011527,51.49053123450732],[-3.12216381937992,51.49053123478161],[-3.122163822455605,51.49053123615311],[-3.1221844066943514,51.49054023404416],[-3.1222052391988413,51.49054900646156],[-3.122226309423702,51.490557548467834],[-3.121452686373269,51.49131559243724]],[[-3.1219730101640106,51.48916950845512],[-3.1219555544619317,51.48918079258485],[-3.121938419929355,51.48919226323649],[-3.1219216061269153,51.48920392068448],[-3.1219216048087763,51.48920392150736],[-3.1219216026118612,51.48920392315311],[-3.121905120084774,51.489215759717375],[-3.121888967954327,51.489227776495234],[-3.1218731510537894,51.489239969921],[-3.121857683443522,51.4892523290231],[-3.121857683004135,51.48925232929739],[-3.121857680367835,51.48925233149174],[-3.121842557654108,51.48926485956182],[-3.1218277908216407,51.48927754782263],[-3.1218133776736705,51.48929039764578],[-3.1218133745979673,51.48929040038872],[-3.1217993256798695,51.48930340299694],[-3.1217993230435583,51.48930340546558],[-3.1217856396736496,51.48931655921324],[-3.1145005760571114,51.486418652253626],[-3.114596385658473,51.48632656543335],[-3.1146947393688773,51.48623555148772],[-3.1147956486051895,51.48614559834212],[-3.114899048325804,51.48605676605653],[-3.1150049086441967,51.48596907903473],[-3.1151132168114173,51.48588254796685],[-3.1152238998811392,51.48579723126648],[-3.1153369802582844,51.48571311109917],[-3.115452381483746,51.485630245604],[-3.1155700684034913,51.48554865808716],[-3.1156900339847753,51.48546835457588],[-3.1158122356054063,51.4853893641361],[-3.115936600766586,51.48531173311263],[-3.1219907782479623,51.489158416333005],[-3.1219730101640106,51.48916950845512]],[[-3.1197153700644016,51.49155064978736],[-3.119666923929624,51.4915146047775],[-3.1196194744612016,51.491478022703795],[-3.119619474021803,51.49147802270378],[-3.119573073064684,51.49144094389052],[-3.119527699528096,51.49140335188051],[-3.1194833938328297,51.49136527986603],[-3.119440160371244,51.49132673168855],[-3.120626769242604,51.490817666182124],[-3.120655588812775,51.490843362027974],[-3.120655588373388,51.490843362027974],[-3.1206555892521415,51.49084336257658],[-3.120655594085193,51.49084336723972],[-3.1206555945245937,51.49084336696543],[-3.120685127712951,51.490868744634305],[-3.1206851277129313,51.49086874490861],[-3.1207153723232053,51.49089380193129],[-3.1207153723232057,51.49089380220558],[-3.1207153762775652,51.49089380522292],[-3.1207153780350483,51.49089380686873],[-3.120715378474435,51.49089380686875],[-3.1207463186897066,51.49091853090102],[-3.12074631912912,51.490918530626736],[-3.1207779400111932,51.49094290850156],[-3.1207779395717856,51.49094290877584],[-3.120777943965552,51.4909429117932],[-3.1207779461624288,51.490942913439014],[-3.120810243757253,51.49096694323569],[-3.1197153700644016,51.49155064978736]],[[-3.118142571125239,51.491731124190444],[-3.1180893116411696,51.491677909296946],[-3.1180893107624583,51.491677908474024],[-3.1180375546424175,51.49162412856891],[-3.11798730100422,51.4915697836541],[-3.1179385762050194,51.491514901985205],[-3.117891387270695,51.4914594895989],[-3.117845763632683,51.491403582979785],[-3.117801710558746,51.491347188164404],[-3.117759236831034,51.49129031694963],[-3.119069436594917,51.49091763445639],[-3.1191012861436906,51.490960279012434],[-3.1191012857042977,51.49096027901242],[-3.1191012887796794,51.49096028312696],[-3.1191012922944092,51.490960287790124],[-3.119101292733831,51.49096028751583],[-3.1191343361978507,51.49100258703738],[-3.1191343366372486,51.4910025870374],[-3.119168557763373,51.49104452012779],[-3.119168558202784,51.4910445198535],[-3.1192039394194913,51.49108606539032],[-3.119203938980099,51.4910860653903],[-3.1192039420555497,51.491086068956264],[-3.1192039464490597,51.49108607389373],[-3.119203946449078,51.49108607361944],[-3.119240484243863,51.49112722721279],[-3.1192404838044583,51.49112722748707],[-3.119240485561882,51.491127229132914],[-3.1192404912734744,51.491127235441894],[-3.119278174225299,51.491167984747015],[-3.1192781737858946,51.49116798474701],[-3.1192781816943067,51.49116799297614],[-3.1192781816943334,51.49116799270185],[-3.119316997942642,51.4912083253739],[-3.119316997503242,51.49120832537388],[-3.1193170040936087,51.49120833195722],[-3.119317005411685,51.49120833332873],[-3.11931700585108,51.49120833332874],[-3.119356943535171,51.49124823674863],[-3.118142571125239,51.491731124190444]],[[-3.1150185519347433,51.49186298742551],[-3.114962096941936,51.4917757323604],[-3.114908069951257,51.4916878429868],[-3.1148565232242027,51.49159940352063],[-3.114807444448996,51.49151039256918],[-3.1147608731456264,51.491420882278234],[-3.114716809300704,51.49133087374795],[-3.114675268713137,51.49124039934923],[-3.116062744988755,51.49100029044197],[-3.1160973589694128,51.491075674076804],[-3.1160973585300145,51.49107567407678],[-3.1161340822061954,51.49115068450653],[-3.1161340844024177,51.491150689443984],[-3.116134089673609,51.49115069959326],[-3.1161340901130457,51.49115069931899],[-3.1161729050454667,51.49122529813909],[-3.116172905484858,51.49122529813911],[-3.116213792354967,51.49129944749348],[-3.1162137919155257,51.491299447767766],[-3.116213798065538,51.49129945791709],[-3.1162138007012152,51.49129946258027],[-3.116256754685591,51.4913731553348],[-3.1162567542461566,51.49137315560907],[-3.1162567603962747,51.4913731652098],[-3.1162567630319202,51.49137317014729],[-3.1162567634713523,51.49137316987301],[-3.1163017714001255,51.491446383806654],[-3.1163017705213347,51.49144638380661],[-3.1163488275708,51.491519110413584],[-3.1150185519347433,51.49186298742551]]],[[[-3.135996080090974,51.49366826085528],[-3.1346963637190908,51.4932814495082],[-3.134597229114068,51.49340837982029],[-3.1358859338184195,51.49380929558869],[-3.135996080090974,51.49366826085528]]],[[[-3.135933440380829,51.48930495899101],[-3.1359176252552445,51.48916411990224],[-3.1359176239344086,51.48916411030202],[-3.1359176221719522,51.48916409274723],[-3.135917621732579,51.48916409274728],[-3.135897875262651,51.48902347626555],[-3.135897875702024,51.4890234762655],[-3.1358978739412042,51.48902346447095],[-3.135897871300173,51.48902344746486],[-3.1358978708608,51.48902344746491],[-3.1358741922000712,51.4888830404221],[-3.1344437418365634,51.488984939008105],[-3.134464788750039,51.48910976627815],[-3.134482339281743,51.48923477409691],[-3.134496395164699,51.48935997837495],[-3.135933440380829,51.48930495899101]]],[[[-3.132499719300091,51.487698910843086],[-3.132439528115322,51.4875957077756],[-3.1310910667002667,51.48791058169932],[-3.1311426564971323,51.48799904206189],[-3.132499719300091,51.487698910843086]]],[[[-3.130555431559462,51.481110426945264],[-3.130311410540802,51.48102943184502],[-3.1303114105407146,51.481029431296434],[-3.1303113679268946,51.481029417858544],[-3.130311360019134,51.48102941511606],[-3.130065113053107,51.48095109101842],[-3.1300651126138903,51.480951091567036],[-3.129816707762464,51.480875460397975],[-3.1291971085436914,51.481686753571395],[-3.1289694492320907,51.48162048291661],[-3.128969446156877,51.48162048209388],[-3.1289694026643957,51.481620469478436],[-3.128969402225132,51.48162046975275],[-3.1287399256208337,51.48155668935967],[-3.1287399260601,51.481556689085345],[-3.1287398970652887,51.48155668140645],[-3.128739878614044,51.48155667647002],[-3.1285086549775336,51.48149540607413],[-3.12850865541677,51.481495405525514],[-3.1282757005322255,51.481436650053276],[-3.128275700971493,51.481436649778956],[-3.128275679445249,51.48143664484259],[-3.128275659676165,51.48143663963184],[-3.128275659236899,51.48143663990616],[-3.128041146600562,51.481380442953],[-3.1280411470398337,51.48138044267868],[-3.1280411158488146,51.4813804355483],[-3.1280410982764066,51.48138043143461],[-3.1280410982764346,51.4813804317089],[-3.1278050581669987,51.481326800121714],[-3.128285475006454,51.4804795185912],[-3.1280241723494777,51.480423351052046],[-3.1280241723494164,51.48042335050345],[-3.1280241345696482,51.48042334282476],[-3.128024118754856,51.480423339533864],[-3.1277612861143007,51.480370027453475],[-3.1273285144427954,51.48122726070847],[-3.127567474734965,51.4812757308748],[-3.1278050089644474,51.481326789426156],[-3.1273245791520514,51.48217406941379],[-3.127537084025414,51.482222353536486],[-3.127748171062363,51.48227293703575],[-3.1272206631522446,51.483109231672906],[-3.1274070306362622,51.48315623709263],[-3.127592060548807,51.48320526740133],[-3.1277757041445646,51.483256309166784],[-3.1279578621544375,51.483309335244236],[-3.1281385420655403,51.48336434728606],[-3.12813854206552,51.48336434701175],[-3.1283176147318583,51.4834213058061],[-3.1284951043337674,51.48348021903945],[-3.1286709019320766,51.48354105024274],[-3.1288449974374055,51.48360379640677],[-3.1290172797111198,51.48366841749743],[-3.1291877470093232,51.48373491242553],[-3.12935632861034,51.483803253773125],[-3.129522990257044,51.48387342810961],[-3.130338256952738,51.483132643144266],[-3.130150782828679,51.48305370607438],[-3.1301507678910343,51.483053700040756],[-3.1301507441664227,51.48305368989323],[-3.130150744166476,51.48305369016752],[-3.1299611311051168,51.48297682331606],[-3.129961128469061,51.48297682221902],[-3.129961092443078,51.48297680768342],[-3.129961092003842,51.48297680823206],[-3.1297693606390484,51.482902018993514],[-3.130521396584345,51.48213560733866],[-3.130305985666253,51.482054810365064],[-3.1303059852269937,51.48205481063938],[-3.1300884329516965,51.48197640307257],[-3.1300884333909558,51.48197640279826],[-3.1300884065919288,51.48197639347378],[-3.130088388579415,51.48197638689175],[-3.130088388140148,51.48197638716607],[-3.1298686843799044,51.48190036350881],[-3.130555431559462,51.481110426945264]]],[[[-3.124566884181321,51.377450850228385],[-3.121432925064509,51.37745085022832],[-3.1214454305165575,51.378349648049436],[-3.1214456181140076,51.37834964805194],[-3.1183382312304793,51.37838350929214],[-3.118338231230758,51.37838350654913],[-3.1183379669279643,51.378383512298946],[-3.118337591732371,51.37838351639852],[-3.118337591731953,51.37838352051305],[-3.115231163186857,51.378451242507005],[-3.115293663437633,51.37934922288266],[-3.1183751008681875,51.379282045759616],[-3.1184501222325474,51.381079091686445],[-3.121483133913565,51.38104604094955],[-3.1245168598720787,51.381046040947204],[-3.1245418727872476,51.37924844573061],[-3.121458570708031,51.37924844573892],[-3.1214460700134707,51.37834964805792],[-3.1245543787291967,51.3783496480495],[-3.124566884181321,51.377450850228385]]],[[[-3.1229999090120057,51.48979949216569],[-3.1229999085726248,51.48979949326288],[-3.1229999085726248,51.48979949353718],[-3.1229999090120057,51.48979949216569]]],[[[-3.1229999085726248,51.48979949353718],[-3.122999906539917,51.48979949951172],[-3.122999906539917,51.48979949951172],[-3.1229999085726248,51.48979949353718]]],[[[-3.116839290983609,51.34244236994229],[-3.116764405790065,51.34064530667811],[-3.1126090974183955,51.34073589527748],[-3.112609096980628,51.34073589445452],[-3.1126090098273513,51.34073589746412],[-3.1126083568365934,51.34073591166991],[-3.112608357710885,51.34073591880188],[-3.108457037685233,51.34087174077069],[-3.1084570372481473,51.34087173802759],[-3.1084567775377603,51.34087174951605],[-3.108456183665931,51.34087176891777],[-3.108456184539753,51.340871775501164],[-3.1043085117042395,51.341052839707835],[-3.104532988331071,51.34284500835394],[-3.1086314266530644,51.342666093346736],[-3.112733806772836,51.34253187246631],[-3.116839290983609,51.34244236994229]]],[[[-3.1166303945380345,51.49344271476944],[-3.1165294941225734,51.49337275024851],[-3.1164305807597583,51.49330170776674],[-3.115335595206418,51.493885373199774],[-3.1154509914507447,51.49396825519001],[-3.1154509910113237,51.49396825518998],[-3.115450994526281,51.49396825765887],[-3.115451013858447,51.49396827164923],[-3.1154510142979155,51.49396827137496],[-3.115568710656234,51.49404988340444],[-3.1166303945380345,51.49344271476944]]],[[[-3.1053551045490937,51.49369858663],[-3.1052487965060394,51.49350571066602],[-3.105147918302578,51.49331174454928],[-3.10377457455407,51.49358180453987],[-3.1038832286352624,51.493790734314004],[-3.1038832299536305,51.49379073403992],[-3.1039976872169173,51.49399840644899],[-3.1053551045490937,51.49369858663]]],[[[-3.105118491674686,51.49560852278276],[-3.104958820414999,51.49541279648961],[-3.104804678802269,51.495215401189114],[-3.1048046792417034,51.49521540118918],[-3.1046560505317524,51.49501631468237],[-3.104513013723915,51.49481564123504],[-3.1043756328781997,51.494613472766915],[-3.1042439355993174,51.49440985181807],[-3.1041179099676053,51.49420475865622],[-3.1027690567992057,51.49451930382468],[-3.102904051398208,51.494739003768935],[-3.1029040500796845,51.4947390043173],[-3.1030451678863242,51.49495719980179],[-3.103045167446786,51.494957200076016],[-3.103045181499427,51.494957220924924],[-3.103045196429974,51.49495724396833],[-3.1030451968695174,51.49495724369412],[-3.1031923659383964,51.49517382551483],[-3.1018716978917698,51.49553199490301],[-3.1020351425058488,51.49576131775506],[-3.102035141626853,51.4957613180292],[-3.1020351622679483,51.495761345188214],[-3.102035175003199,51.495761363568334],[-3.1020351758822,51.495761363294186],[-3.102204974641157,51.49598882483896],[-3.1022049733227117,51.49598882511303],[-3.102381155725856,51.496214463181275],[-3.1023811425497856,51.496214447269764],[-3.099803390064194,51.4970160604949],[-3.100008680949127,51.497267742109315],[-3.102563632692078,51.496438160330115],[-3.1023811794425815,51.49621449226083],[-3.103670019358573,51.49581366134566],[-3.103841073558715,51.49602334852719],[-3.105118491674686,51.49560852278276]]],[[[-3.1018717290703486,51.49553204099038],[-3.101714703520345,51.495300943821185],[-3.1015641716073774,51.49506818209251],[-3.100224274273443,51.49539734454334],[-3.100384195868432,51.4956446365172],[-3.1003841949894224,51.495644636791326],[-3.1003842121150744,51.49564466175559],[-3.1003842279225653,51.495644686445296],[-3.1003842288015653,51.49564468617116],[-3.100551008705418,51.49589014939899],[-3.0992302992586573,51.496248288728246],[-3.09941418064866,51.496506306884385],[-3.0994141617657123,51.49650628137105],[-3.098103639352412,51.49687874118067],[-3.0983053375098093,51.4971489655201],[-3.0983052962300563,51.497148912572264],[-3.097005359869073,51.49753557962024],[-3.097225548025879,51.49781761668412],[-3.0972255471468038,51.49781761695823],[-3.097225565591479,51.497817639180255],[-3.097225591939711,51.497817673198774],[-3.097225593258235,51.49781767292476],[-3.0974536364459055,51.49809726811669],[-3.098731170072801,51.49768251208467],[-3.0985144968173572,51.49741686639775],[-3.098305338388112,51.49714896661748],[-3.0996052505561806,51.49676228239375],[-3.0994141999710467,51.49650633239781],[-3.1007246975090967,51.496133855452705],[-3.100551043397343,51.49589019768177],[-3.1018717290703486,51.49553204099038]]],[[[-3.0992303339475904,51.496248340577246],[-3.099053679181225,51.49598833248055],[-3.097723142921537,51.49633201278251],[-3.097909605555997,51.496606468031565],[-3.0992303339475904,51.496248340577246]]],[[[-2.998405762765002,51.35730142591618],[-2.9962263216373186,51.354975691600806],[-2.9924854473504925,51.35637747054931],[-2.992485446476628,51.35637746972543],[-2.992485380688125,51.35637749543655],[-2.9924847925656923,51.35637771586889],[-2.992484799119267,51.356377722185165],[-2.9887841013262832,51.357819750570414],[-2.988014974494483,51.357060791788754],[-2.98433315974879,51.35855167581666],[-2.9835430462736587,51.357801199123145],[-2.979882335344959,51.35934069710121],[-2.979882334033142,51.359340696276696],[-2.979882256378175,51.359340730195306],[-2.9798815812091686,51.35934101409612],[-2.9798815895105335,51.359341021512456],[-2.976264845830476,51.36091984626152],[-2.9762648418968256,51.36091984323925],[-2.9762645580051785,51.360919971805686],[-2.9762641012574886,51.36092017119986],[-2.976264106936698,51.36092017641873],[-2.97269093871103,51.36253850128812],[-2.973542611401222,51.3632621264409],[-2.9770955047048404,51.361652971160126],[-2.9787583741638395,51.363118537997146],[-2.9823142886827188,51.36156623158994],[-2.983125232642125,51.36230794926993],[-2.9867028682743717,51.36080334508645],[-2.987493080248173,51.361553790202734],[-2.9910914198877556,51.36009666874917],[-2.994729198231848,51.35867913104544],[-2.998405762765002,51.35730142591618]]],[[[-2.9802135271109926,51.38873555324984],[-2.9783139617715815,51.387386848767946],[-2.975476758407945,51.38897882847854],[-2.974508365622331,51.38831491917324],[-2.9716974369079288,51.389948221426906],[-2.9697239789689367,51.388641665330084],[-2.966922698003074,51.39032704526571],[-2.9669226830648703,51.390327054572055],[-2.9669221198477573,51.390327393406714],[-2.9669221294716372,51.39032739972848],[-2.964168643279438,51.39204269445261],[-2.963146123089714,51.39141130129567],[-2.960422124385307,51.39316829183022],[-2.962502116481393,51.39440858838457],[-2.9651906392759906,51.39267443035267],[-2.966213209215873,51.39330579729623],[-2.968931721857032,51.391612242981836],[-2.9699365510777302,51.39225464553304],[-2.972683623841987,51.390601815726626],[-2.973670423084305,51.39125506802562],[-2.976444620025213,51.38964306996296],[-2.9774130627572735,51.39030695460576],[-2.9802135271109926,51.38873555324984]]],[[[-2.967465428384443,51.367299668218855],[-2.9656825044864217,51.36589041164084],[-2.9622480433266047,51.36762363888164],[-2.964069958836051,51.36901325138252],[-2.967465428384443,51.367299668218855]]],[[[-2.966803722646043,51.3710972712724],[-2.9658926725466834,51.370402488055305],[-2.962583688018022,51.37213273967278],[-2.9635139614137733,51.372817489095745],[-2.9635142516314605,51.37281733725329],[-2.960273094335082,51.374572928963175],[-2.9621716056775536,51.37592192494399],[-2.965375259306948,51.37418660930063],[-2.963514642831559,51.372817132882346],[-2.966803722646043,51.3710972712724]]],[[[-2.9621236327986042,51.390779899974525],[-2.9611011710916304,51.390148489939236],[-2.9583427338906736,51.391927642791146],[-2.956262960218215,51.39068726036491],[-2.953519957056345,51.39251911841239],[-2.9535201377210423,51.39251899331804],[-2.9524631514142343,51.391910215412764],[-2.94975480407597,51.39378316191036],[-2.949754797511534,51.393783158609025],[-2.9497544734889662,51.39378339073738],[-2.9497542422546883,51.39378355058739],[-2.9497542470673643,51.39378355333752],[-2.9470988894770027,51.39568532962768],[-2.947098885537042,51.395685327975954],[-2.947098714482491,51.39568545472061],[-2.9470983389892096,51.395685723794955],[-2.947098346866001,51.395685727921304],[-2.9444962224928863,51.39761615115744],[-2.944496212426727,51.39761614620466],[-2.9444957475429328,51.39761650373373],[-2.944495688614825,51.39761654725783],[-2.9444956899271024,51.397616548082745],[-2.941947072343388,51.399575435138864],[-2.943069423105674,51.400136699435805],[-2.9456021956159195,51.3981899554861],[-2.946708726347308,51.398763351285154],[-2.949279027039614,51.39685646919574],[-2.9503694016555437,51.397441820403685],[-2.9529760109801075,51.39557486363031],[-2.955633647680802,51.393736897818386],[-2.9566907146754535,51.394345640348995],[-2.9593821670194025,51.39254812727497],[-2.9593821705191465,51.39254812947427],[-2.9621236327986042,51.390779899974525]],[[-2.9519024644020457,51.394977489621965],[-2.9519024578372894,51.39497748632075],[-2.951902148765031,51.394977707779084],[-2.951901909179794,51.39497787338143],[-2.9519019139927285,51.39497787613148],[-2.9492793836591473,51.396856204200986],[-2.9492795591093746,51.396856074168085],[-2.948189212347269,51.3962707078249],[-2.950828290772898,51.394380558450656],[-2.953519584738422,51.39251937599132],[-2.9545766021807567,51.3931281418406],[-2.9519024644020457,51.394977489621965]]],[[[-2.9433897383646865,51.39704272611517],[-2.942283291532038,51.39646929552284],[-2.9397024523562947,51.39845287468824],[-2.940824748613966,51.39901416031405],[-2.9433897383646865,51.39704272611517]]],[[[-2.930725549792471,51.39396183110638],[-2.928481485335142,51.39283905003917],[-2.925801337111175,51.39497334505306],[-2.925801571649367,51.39497315151672],[-2.923526594964637,51.39387494717171],[-2.9208755026353224,51.39606332664732],[-2.9231808235862693,51.39713657196473],[-2.9258010365654705,51.39497359361288],[-2.928076121799425,51.396071744820944],[-2.930725549792471,51.39396183110638]]]]} \ No newline at end of file diff --git a/benchmarks/cardiff.bt b/benchmarks/cardiff.bt new file mode 100644 index 0000000000000000000000000000000000000000..55912b796ff5b079e40867243aebeb85a3d4721b GIT binary patch literal 557824 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

$Yy-P>-XCAs;uIOI7!chU&9kVShYEgT!u@r zC*y&tjdMVVwbLaYT-R^wC1Jl25?4FKx{XKb8Kk{=k+Yiakn_#&ki3CmpAI`$p9}iOK+n)ue=mW#A zfqfafe3|1u&Qabb(z*j0flYB^-3=8W#CRUXLi&?tjjt3e!so!Hq){b6hLBI1;h zkrbMw*$>7k?CYS1p*0$ZG*2ON7q#cs*qjy9DvEwuKcp*mr#(ikN5m>SCJQ#cc}$v{ z$DjjtVhr|QXaXuk_CZu>h!~wYvX)+x@f(Q{^+Hi7D2{bGUk^Az^@M>&DT5a^VmzTi ziVt3CcoJ4*)!}IM8Hp8S<~@XV>h9zHL=wnIira52%BB( ze#rJFL!nQy$i65G9mub!3xBB17AKFo&;t;g!V<2(o9*O;GqLW)t&M^jjW z-HQ?{@Dm2WKU5wLf~gz;d)O5-wsSy}ksKdT3 zIYam`W^k)mw&a=u83G~f&0SCy)E1h!PG>0<03AIc+Sw8`yJjHkX1#sgdyb?9dlGs|Y{A%2HTl5BU06A`54;osPyg3bYu(<9Ph}W3m0ZSl1_@(UT~R4}lLa@c9g;&;>Ry zghwy3A6m0lRTx5j=Kh`Y&#@w< zmT!;pP@7{^Vk-k8mIiT-!}?c%AL4_3sz!qe!|`RBGwPOn<{a?BDv_($ZyIB6!`2U6 zvzOF#@MJRVrZH%|l?pxfgC%A@tK-Am8ho@6a=QXbAdAQgU>H6;dC&p3q87en- z$HuHTl2xnWi40m%73N%P7bD79sKJnbhk7r=jts}hsf>)~=p|K%8k!~91`AVpG>1Xd zFy^R=s9o9lNjnbz?uPjdwuxmU)99)byN;%c7fRk80uwvCLu=-=PJ19^&W8o!LL(FKh% zbbfPX_C5D4&Vwk`Il)$EHsm%?)F&-4NB zd;ki(#P@oA!Uy|TKhAgk6|7(r?|y+z{tmX-G07T+eV9daY?u5%q98kQ%mbP2MF;D< z?Es9_9=WV^glnaUeXPAAH^zX?ylL6nrSnQSDmw zA@+6?3`jLab@EZhqn=q3_EVAlnvm<<3(K{4^ekro`TXv}>$Tt{2QbcE@t{iK^^8dD z!6?KsFk}W+KN>vh1g7o5xhjJN!(cs=@jBE{JHSn<;K5jddM18}JtZf@ftqr>U%49} z;6qh=Pz=%o&y^m<4)hpJ9l%>SN(nCDEb6l?f1b-w4CS?WydHPM6h-} z_o!@+9DwM}WX*vy`~Qm%T9&oh+I{#Ks&-*la(`nGQH^CjqZ!#|6p0q<1ZHO$Q*Z?v zJ3Vy)59IKA|G^&)Wv}KSLtox&!1yYH4blJ2YD=>=#ENPlL=WPNLperwJ|75I6+3sl z`UG{@r;zvL-m0hKj~Nlxk%&y9pFOOMytd?gvYa+NKbSMv6{7~9EBHV9PJs_zi$0Xq z-LAkBI>{OM7L)NTmSa&5V(AYj{`)aDZnyd}*w$|Fd^PyZcpV?WEUe~ymVKQKZ{t%N z;r`FU9X7$EKY%Oz2o`M1r<`jK#VV`8@Jq9mVV17NJbpN8-bm(PqZQUNT!05Z602{A zci#}Za#foae6AK*N@hkqo)nJfz@Fc;%5a8WJnSzoK9~<(8f^H5NWgR0-U8yabBM^? zz-L_j<`X!}ADKOyDl?-Wij~`2-U<)nsONE3^Qp@vhGd_*(u`svtYHP%V2_7O8RdAG z!2rhP8a5uO21gkP&h+8@_4!MFRUM=`0bFoZoC{Gk#^L$w#2xz=_eA|fsENe z!~FeBy3_ZA4RI# zgom-U&fA$-d$GzYEUy*&Hp0eb>2mbQmyplvxocBxd0(5Y&KM2_V|rm-z1ZIjN|DG6 zDQEB6{B2fM1NcCNgbsy1vf@MZldZ_;Ti|^h!I4|>32P}T@mgr9Y76!FEApSb%K8Zt zqElY@5iJsmM6^Qfp%aMI7u2#lmEG%VB;KL+5c!=g7_mIaIxnwA1|dR3l=DQihe_y? z*YZt$94mj3?PWAUJJgoMB6jCzapu8an7hBilm3uzyc(sEx>bCqT?JzUv!GcHo0#E0 zVlS1=?coUr;e)qLcHELV)*8(YaD-vZtz%#gQZd#N2S<0E%6Ktx> zC%eO2CW1Ebo6lr+L=AAP zA)_rv)MQsaX~gwNFyTC|#o7!zKQ!kae9ir`v(96n)mqTu1|G&Q9!Xxsz2Mn8USE@t z;%RH$%`Sq5%g1xZu zCd~2OvA836`15FHV&fC1!NX ztot%!CR^Y?lc=@k@Qa6AMmlD}D-}`3J;&ER65cT6vY})nn8mB13 zX;|Fo9rIA6s4QE@U8KFq1Qbw&-co#+&3K`bU!s0}%WfR>P zT48CmdBob79=Rsx5nYT{xMycjr76dhLDb~+sFd!AB}Vm=8h|skYv0ImDkfwwzjNzK z6$Pv?qsxp9*RRpmYqGc6L=FB9e6T~MyeRx9RS9#W?Ka^jT+2dF#2BtPVLq05;gNSG z!ijO-Bl}_pK8SW5*~hp=boGz5K8$jnkaDc2Vo_Fjt1((%W#@;I%!}G;ac0$TvC;R_ z_8!>qArDvNyp!+x3jF*VlWJlA+UFCt$RBb(xffP*2o~HE4zHeQ)y1)B4yUnM?=*|e zTqv`X$0YvH1S`%!1bfZe0rUIBSl(c^U6s!9Fe9{&LviM7`?VYf&p!-Susb~d1?J@? zTiC+_RMz#N%A0)tH>`Iz{F|!St84X~%$esTZSrc+=@Rgv9cUv<`V+-v571&Pug(KM z=J4CD+vD*Y2BR+2!pHgyHe$c}?ZB=KJoyP<>W{1ppR(KRne1z(*EG=Yc=*NkjLQ`` zUg6%XPj}01HLh}6@F{Ks$8O*rTFJ8T@0-W}{3l9cJ92_x5aD6??Jwj9MV|xp2sin7 z_#(3Yup@bU*jKAG14lxC7@cuWyb4JT(7^~yb!=Jhra3lWpCd&LrVObzXO4=q zSOrKVk{9{gHL~;@j7+p=wCW*&5Mqb^MR*wIVXB*|in^|cee=!e91edt8TDZ*^X@G$ z_{Z=Pp215{(~~{ylvIabi9MKC{W|vcHqYMY@e25`p6|BbYx}<1Pu_Y9qxzpQ$NmYv zs0r4`aype27di_y%r0S?jxfLIbS7@I#v1wz7h0aN;6>4`|b0`bl=JYngzlfS?xj`e2 zA4*2V7*sOME-*4-Wm7PJ_fq?_zT9nJHdn?qdsClAZgVhymH#h%D9axIjSPh~uT&~4 za}HI^z=x`d3l#i^x{N2VAy)MWCZLkyrqzoCO+h#F8dM*w&S=ZEHRsj9gusUQDfSq5 zb{!s}Zx|JqY-3|2G_{%|S}*Sb8N`TQ7S zheyKSJF{mQe3_5IpLaNud05ZD9n?9l<4o6LTesn9Y=q-{gC|f94p9r$aaUOU%Zz3j z=x`ZKXfgJ8Kd*cNI@qD674gc!s1B~uW0jUY^p~(Lf+JkQNV;PAyMTnMCS@7xP&9-Y zpu5l;s*SUYZ2n!-(Z9cU2e!i+3q1`YyTN%r@Im_#2jUeq zxyT?0uAyCt5d{@ObwOK+Tm`)b^#>Kow#>uooz{H?*RPW7J*qh(LMXRap|rnU8L*)| zc5ep?SJSo&g&m{K-n4g%af-kMQRKgQL}(I)b+5`NE>bn&iG6PBW5Y%$^g3h^GKZ)* z3$3+~>m>q&kI@#@!FqIi*Qq>4^_L!$en_wl@kEqs34ZhgA4ZWAbq3pM@P@H$_O3Sb z;UfHYE234-p5r_HGaklo{QRC7@^k){Kj?j!Hyt%vuIRlwed8CTS}&(iN;LUj>VJhqL^OAM-nw`XXmu%?vyX8(RQhcV+Gmxq{NzZcC6SR`9w2o1dAK z2UoLMNN&^R_&2BWel_sHE}I$n)C4Yb9(!7uX>SKJy&Ypayrtiht-r!gQSt-sjoA_{ zIKptQXCywwXxPxHY$t&-&G1@`s=UUP+{0C+m_XhXN)9&j^eVF^p~oI{4GS z^oxSCRN;(jmS$_l`dl&k7yDzzavN-JU%0*NSJz}#w$uF(EbSOjVg#Osio{Sh>n9Gy zmJVUBvM`p~=+c!W{a7a5g(bC;t_&g8KS z^l*)z%`l9L9JLGFVKlnHRIJ^#@aCW`%x9YmRv0-siIFr!q4*8F`7qj}b{V&^n&efk|8w|BdGN%3SVw~p$ABz$?KeyOc+P6y>fiB`UP|M; zkr6He39exLuEybJ5B`PxJqKjFgste`-@5~)zz2PPwL0xy&af39^a0Ef+KLd7QB>%G zpiZdID!Ab^UtEb~9*#FIbmiC~T zu|*Xf#d|~XKI-EMSY@5zvvh{lOlH3YsWxjCzQPFX-(1d}^G_3QJ%-Nm663Vnjal2h zQ9TEPAxCqpVeEZ8dde`au^B4r?_jH|hO7lYWe;=H-MWHjcHb9U^(fitqOvzU51>fYt2rBo#h(^nv2 zj>WgbzR!bW*s1mBzTiqbqPP7LJ{*}c!;eZxF_>3+ z;!}wa?}Bx%YwQ}q`Vn@{y*#1BJbv5hD$qd&SM=}i+<|Ri^Uk^AgFWOTd%A!T{-w?9 zHH2ob{~r}x;f<(3=pRI;K*5WTc!mtZT5s3XGNV#$uW|AaTm#oE$3p#+XOV-55BA2j z`bm7MoYV!`gN)(8-MtqA^b^50`#2|3RiqojljLP(`iH8`?Z4HNL#_#U<7xIT`iG{nC z-b0|l)7blyX>;W%=U$_m=0=r*?f(Ei*p<>1_8w$Tw}SgoEci9-SRY^&_;49EY>(P& zvFSVE{C0z}+oUU2lq3eSb3%zd`Dvwi4RpKa*iLh7Q?#hb>&8%j#*-0=p5_e30+(a= z&a6|xhO>B_pM0QMiHTcl8Z+)J_L!b(PcKQRXXlEyVJ|y#+-`9FvtbIZv%N6oO3x=E zF`jw84bhL%pi*f@v_HJ1BzA0n%Wd&UI^j=DgFW2Bwgk3uI{SBrJy;3yJon&!uJ9H7 zF7c-g=ja1d7>K@lB$#8CM~}pfI>9R%fe%)MJj7jD3BR%~L>1*yw%JKpfUK13x&tneBA^3092 zuSHMZx08NbK4bL82!{A@CipO)*(|Dz)e}?$t-{uie~4$BVGrBlUD#XpN38Zk7{v#? zZWiMj9`|6uW=lSYrK|xTw9(mM&H|3Q22C-doS$RyIrDNcP$o~Ykl$hCJ2OMOmW1nI zH%mBi5a;cgPc?TI@q;F!}vg|pet<=K4f%M~>jF$2%Rx@N){R3u!5;}ZUw z147-z6}(1lqa+c{uGslxyb3d+T%X%)$mzsR265&C7>5}Q#o0=7e%BcNkn7$VoA1Lu zmr$2=E7hA<@l1TsyC{{v&mFiwUEfFePE{Cvti9I{WEjXMI&?*KsK?o><55+EI|V+- z%$9MdF6WwNG3G$I3&90f8IliKSwE-9=KsbWFmuw?^VIeW{6SSeaN@u5LEASgNLw~@ zP!A&*L?B7TF$%R95wR>-nVE_D^sY$Jgd^xVcmxr`+$4E|o9g9(phIcKqY_z@zqk4l zYLpfEOkjohphg)=Lpfd#Kcdi;UVlPW#k^0S>&>(zMrqB|(QNi+uy^Hf{_fAL-wxY$ zjIstHFh1Dl(Vcd?G|x|aMF zGn|`iGw3Ri6vN1y?aW zk8LWi&EozQ{rl^8z^d-T8W)lGBql`MFVG?KBm*7PAi}>Wco^!LfhNxXMlK5Z1L0vr zMP%^z$SN?y$R7eel9j=zGHKK5_W>UcO!|gh=Jh6I3y}w5ZiJ}dYZ1XH;DZR~ z7K|bCsiS{IAYVPu!R!Qk&bz{%o#{rijpXm4phgc+Auz1a-7b3CT4`mkxS=44-7ekR zRe9{d?J9viQcgr`a7D$UHG3b;(NCe;Vivye%`gFdfj6)XW0r33fdk)Q&&9!q64;P^ ztG^+N=lWTjKoi%`x`FK`tkvkjgXk8Eu}{^2Sup2?FbM6~RdQa%;_MRTr@!OpSK!4T znK{?4WLXP8qbkb7p4jOp@b(9=duQ3}m}i%QIdeGXd5m-_wsZxE@C2i@Z^Ty#OCDuk zJK?GA>CrFYlXqafFM?z{a@=;z=A+0%h&<}6Qys+=Ug?YCPyyuoH<<7vISauHBhfS9Hfs=QDvJ4Ez1a@u z_3d(d`F@{p@pGR( zQ6Pd{>0%oTN*o7f3`+Q5JR<7N)i7PDFZ_#Gb;~@b6M2l_7_PY?J{*CMVds2%MyOq= zKe)!{=q+nrEW+yU#g1Qw8N9`8Z?=#98Ggcww*?;}KPtZI--8eO7aQOUs)ozJh&5=4 z;>A+%;lhLum&5SQ4>Zs5el&`A67wizX1|Y;@k{2az183lWw5vHax*hs*YjT3jJ)AG zj|6?WI2p`n3-d3To3(A<$B*%wtR)d4zX4Zjzy!t+^SlOhSWAD(b*cBmB%%>V zfCVMV(lCp}lL;87mViKKsJ#}Ng!UL~WJT^|*t~gBQO7MdM0Kb2T3gW}7=$dN z5W6Vk7Dh+s@Xed>Su>-f7j)58_)b5XcTMau#(CyTIwas7Ve00bC7uV8Vx!Qa7j5$X_}IOSZ4AUGeoMqO-2G zmsVNz#P;nK=Q?@jMB3$LEWcg7Q+&|Ba32vcluhHIM-suXUULfeJRf_!2Zd3e;tlLX zZ1@p$kUi{>yo+KmaJ_<`dFNwn)GVKsSg`9_E`vj?PF5{G7*CkR3}~O*>%bjzDXo66 z8r(HCUIBxw?ED@pFPE3cr`Qo@;=KI=`#qQcOFc*zvBEH285a%{V_(Nv> zbp51R*ezPWeo*<2>uZ92|LM&4$jT0lg`zlKSZXKc}5Yt5FH}c5uICQ5auh^ zWB;fTk6bK!*qJGL5V)adVqXTcql|7Ey^uR>#fPo=Pw`A;(%dHzqkP(ohc@9{v0|R9 z=Cy~(G~mqEUH3@{VKs!7J_dX^gB+$a_&o}19?bjpv9Zd+>?eC{yIN?U^jbgOk4}=J z!&p3%WAGt{fHkhi53r<%vEv*0CYvoG4p`fL6VIF%FXX3P7nY!Gs81N@d>sa1<)Xb~WGU}6 zZ6|k`z-crS8Y|2 z;*6;Qwmk|wS%~hinsvR`(FOl{^oNVc^&AX8*f;-_vEGTb-_1RHl{;g13o}FO@!5u3 zxI{Pbp+494Huv-aMsCN48r8fE6f~o9#a}m$qCLre*f!e< zKJOYhTk*ljftxx(bgYgX%BbuNWGK{r2R<0%+*++v=$cSq5bBavUa2k`Ym7QCRfqDN z!5XdbO6v0NJ|KjZm-Tr^FCns>^f4l05q?EfXjVwbP>5ev=SWtA>Jw<~)=C@-moOsf zY80-Qaa__K#E0=zOr1&3w=v+w5U?Ot?i3S@TpF`bU9iiGD|NZ*_h_(T49wsJ7{mxL zLLI_2evDzrSnOeKwx#*ir}6zfpZR$@R(Lbt;fUA$EAa;_CPRG)?qD}KJ5HOI@GAJQ z27A4n@A~ZI^Dkp&T*|lqLin->F^eNcX5)HnT~v4m>)(K-h(RwfV}FolYCVf@v1l_N zALab_U~>;(v9I#VgPcQeeHwS+0?u*+?|jVcelT_@e`t;+Ho_w7;-!>@=lsgpz5sV( zRg5x3CaUsoYxID@Kw(MFm_?70h(0ewZMl$w9|;D%%Ok{W^G%;Wu8^kTSm`YyE<8UDeIR5goki4_B(-i z|C!A5_QxNFr4M8e*WXf6h|Vs05cYFWn>>ck+C}n2eg;mA0x^zG970Ud$56ZI3hx-q z-cf;JKe>ze?&>9M#9H1@R`xmSpZ%8P5kJ5vzUAll{AE}B7qR(UU=Opf+l!dVRaJ@I6#z1LzLTK(`S#f+uqFZ_IN3cz1nHABR+xaW?CyX zmS=s)hT0cK^d^{P)aL7Kd-g5QzHLwzhZEDZTg_5d=e&z;HRv!8bU2lFdZTHU&A;Xz zJ&^n$YcH)dc?sP56|S`tsB<9b)dFnj#J&|d%d6Zgd5{?ovp@nBNb@+1)t=4obGd^v zxyH-zr1aIU=bBe?)S`cX=MEI7^W+|AfLd+TOa(rKJ{dUSPnC#Z74nK$fvTWR27ahN zgl7@HNazuTOsSUGytSETI;k6|9$00e_7I(4?Bim#lbx*85t_kBWF^*7RZ8y!Iz*17 zUWHu5Eh3}-v^#AB5W=38s*CNJ+wBCY!Z?DNe=Lf_si4Dn(80Qh@%%L!+dmo%uqr!p z9IVIc4`vJkSNieZF=!OxL--eCleRe)tT+}#aV^h*;D|Zoo~;i@If3_1PUkt3@98wY zpG&dgC$QIl!MtB#vwA{Z|0`kvo8b;dAHIU)KZ$i*hYvB0+0T3g0;6 zj&L96{uw*m1=ZmoI7BmM`_^pDnX?ZDGt?~i!}jf3T<&DF^R7H zT^Y7vezZMf?2&I>r!}RciBMdK&Tus`&2{-kR?WFHUx}YFJ!MWF$#D)wt9=)Idw^{t z=-@g+u21?HN3s^pI#5WQ6*QzG;SMfE&H6|uoQ$pSJ2 z4+(rQx~axmCw=}f=5%uy%$FR1-MiMEYgvs06Z{5EOxt+yVhomV$ z`_vEP9lKD=Jx*dfIbqDH{2rA)F*u=wy&*az|HABt37lb4;<^5wip4Kyrhl66`jgns zCRn#B*zD!hjoe7`-y`N@|)8!PsRe&_XA%y%|IX;r~ORC}wa z>@52@$M)#

|D9`^|1l?>rAX$gu4Fn9Iv1W$)gkX-rT4g|(PgbIUG@!4d57(gM3~ z&CjNZKiG9zWY_^^;b%s^4LM1!yInW=B5h#&UD&%Z>gMkGkLV3npl>G1T9?^=0MUxG zUHp^h?vu>WOi=IDY|zi@?(5k%x@Q!vkMnoXASkH1QHlmKd%Xv@!Yc(9;X6@-VHJiZ?;EI)AEqT|B?8u)suPQckpd!m5G!47X$T?IrTu;a7 zL*Jwz3{4Ecy6dx&jSR#9n zfw-c@$^1PMzeTmOA9$oMGlbXW428^O=Qbk`bFpdl!Mm~B*ZH>p0&g}ezla2Vq%NlIHj!=eZt~namxqpZ3k{`$QU5^m1rK%)s804Vba3z#Lp@dpj)u zQ!wOREb|+pv(Y2FOv>i23G=VP@k^r${EKls!9FFh=BDV8$8JG~<#-iq)4JaG!XNHL znY;#X;}m#DC$Oj*?7B=*QT5g8|7L zM2EAuS87THe29pq9@=$W>#fOOaRrf={+@aK&+lD~4C_+KRz(O^N~4eFD7fiChybz& zf2%cwml12|L=2;#PskhMGX+&sTQ%QW{jmv0Q)k>8bl7VPBAEqUgFVCty^kvFuV!Gq zhB*b1U)7GeS#+_Fwwk1$auXvWOES9NiEUBw73XZh=X$^Z2ID;(i-n(vRiDW>$xYwF z9u23%1_B>Oz!X#G; z+ymcun-T4Tm8((KX71PKUF&LZvYw5E7zc5sa5d3QAjRkGA2_iWc59`@Hu+|*?NJ!S zX4K9q@Q;45hjYk(S_*eqiD$7Pt;V^5*u{;hE5tB7i`KA^3gk0vCN{D&45u1@?Vf)J zCamI)T@6CG62J@aip`+THYg9DbA|`t7W2W~^FTS{6=G>%YWNoyqtnb|4`Z5m-`}|d#leS?DF?#Hq1;^#p_Lc5Sfw_QLNzk7DQ^_`d)f-8ZWLp^v4LiC4wM34ID zC}|W!A7u=iK8D+AN#Q&$c^E1leL2!(EYG?98s_EOQ?$;Nx0mwwwb=6=*w1rJH)t^*?l6Q1spwE0)Y=iRVL!CdwtT83BUNE|g1d1A7Jd`gcR$B{hckQ)GCjw5 zt$DYu%>Ejpy*`-Rnf$GGGXr!mY9Tt@z{n%QW3;vC-(SB2IV)dmi-%DPt2K8~Kf_K< zVncx;L{?LvMR16~2Ryyae@!KnOjH0c=NL?T*CwM<4tL*TXV)IfjR^j4>QfK5`nzK8n3XwLZL~ zu6Q|f`*Lh)BR21+JX%;yg=D{jK7?9jX!7Gc*1tG2AlcmQ-*1&YkZ|2a7w|76f- z5?Ek;)cGJoXc~o;Jk=rWa9}UB71+!5pvCg!Y2U>e?P2Fy+}~#VV)52t)W%cT0WaZ8 zJc+yb=eKA#PP;jCRT% zNF3yJs=FG4O~vxpLB7RY<>I76m<{F%yY}3>m62FGaxVAhEO5^MpQ3~Rch5>3>k|GS z*t_$dw@9$^${9AwBIEwZ}eJBAwY?m|$6~i*vteQXp9kl<*RQ~_hW9e_$$04e^ z)Fbsl^bo?gFyGQOXzUrK{hHaZC!WP_RD|upbF&%5hjIxav~#;Nbi)pfHkf-LM%c^6 z6(#)H0eiP1!>TLKY^U59UEqUA6uM~Co9o%wKfeRVGO{^}O^enu@Tc5e20sS-R(m*> z&DHoqp)}rUfBitGg32jAjK)(@jqq_&`c9q<@952*c9%PC3wyAKa;(wv9N)|5u%ef+ zpZBrDf3bbeO!x(Vy~;b!Vq*_uYtH}IW3QL+eHVkqa_lKs!6NMPYQF6kCu=aT!noaR zR0um8#4NcG8*)FfLe^q_QN%GyVD0tUj8pE;9B)45Q`p^H>}Wj4aSe+Npwz#!{Xme0 z$+xJIbj)4zKN#oBjBF*CV27HkIQlBk#D36jW>v;|;!kjmu6_9kSNUCLRdy$`ANuY-jkEU#GL5d-8jR{n8&Lhe(hF1_8Souzq{G27l1@w82pR3f*I3mev-<2j7pXa1~3dEv>waif`*QE2Wr&ia{ArVHdDr zx5QMUe}gg3P!q(E`ltncu}&*2ha@|-M$#{59!G8_EC zNQ(JdDxZhpW4PM4{6HUL>-?|UsBfXZ5E0HHoP7X$55mhB!ZX(pwi8TbV47hi6Y&#b z$uVHWSP)?xulEEUI`Qerd^6?!qJtGw<}_M+VSSeQlV9@TR zS%{5af#+~K;~WjUnS{o$jM?u-X6(gSi3l;7_b+EZGlk6tROPoK+dL}!En3&*YTq)K z7f=YwFgMo%9jd|JU0K2vJ@00}8O*e2fDiVWeVEad!XhI#stF9@0AiSbf+a739XGMh ze9nF~*YpV2@+L2O4RWOIA^Oy72^Vjm{ z^M{CGxL(#d@CUWY&S1k(d<|8KCHNuN69YYyct|Bi@Dm*9dd@8x$_19CE40_FJ+v=O z3`jrmbhbbURM0R@;Cfj-ozHB39Cn#fT9`EzG_MRM4}qo0CxtBO!Ky zGVggPmOVPLh2yYnZEzI7)gIL)?ICAW(|DziqxoqzrMhDQAIyai8~lt>3o|nHTaJO@ znAv?abJrYZyPL4kSReKsc=x}+girZqMvdlM2`{2ElvZZ{$7|sYm$TXRXd1|H0w{I{ z&+K=t{kbaCBD{fV%$XPS-CxcbR`S`q*w%3_AF)D|E5SI&-^skc2|dr8r-Rt`$G?|7 zY=UQ7FMfW)wHb_c4PL=_L?cxx>?h;u+50nl|G>Tva`uH>kt*gLFoaKt%Gw*>tZmn> zb6v}O7=vo){k--K=unLu$D_z=kUOk^JKUc?mA{g2;_)<*i(83XTuEf}eDb13v5n>T zIpk+wnRvz;5MnMoqC4ZZFZCl_=@l@l3wX>)dcs0*%Jq4sb0;Q&abklylD`8Ttm1a< z9-|i4o4D$aX!%6aIO%U!^zSd<0rdwxjP0`>sl(WlS>AfeLWP8!L6mR}3OT(C=^l-c4->5Tmk#Jw`x$ z(>j=gSy8GDvJ{y^^oNka9LX!zU%9@QD}D~*HM6KhhUf)hJ%{z;!@vhoXc+h~mwC>J zK=gq7gcRACf4ox4r*=>VL=b`c$A|(# z!gT}D=_S@D>vxQ-{x5z4Q{Al>Vq7Wj$|c95606I{5h9z@O8{uu4HM& z=2!R>c4qiG;lz8)u}@>q_oaDvEwiJ_f^(r=OrqoU>50{h0Uu^EYn$J25BqP#j+ely ztu$J|8B`hW9Yqle*!=5Q`a!<0FcEYY-WpuL=N14E} zmVp7U5vSajdA}aqp%o7+v-SW>UgsQkiCCV{!JMvQV8dQ%vzz5kL>;zIRqEEM?@Y|1 zHaXWrQ6(?M;#Z~VX-hgo=iZ!`lv+F8UBL6m8jCy>W5KSEeh%nh+`=xMD;c{HUb}TY$#GoE z+m%b-|2xJ}v~Th+R48{${)H70)=%ltZ&d*8$s`{LU!V{vkS#>VdRMim%1my?WORMm z8*f6bVGmHjO~#-CAxANW;kp(FaLgK5`{A&7RR^;aMkd8?0yDt`Fd~!!BYkEl494#5 zb#2X6XE3Eb&&*Rm5wISlR~K3JXYrgqRiZHMuyeeLZN7nRwOBWWa4TaQjq`VdAk zqYhk^vTxEz?ayxp#^Gp?R(YvW3`%$=o~V@!23tH=FOckF{D52F+mB+g@4^?XtZv^khyiFAHLuT|(uz@#utGiU>2oWOZo=J614q7gdkSG7B%$r3o*{fnGz-95i5GzVd`Kw#ID3lOL5FS zII0~TO7nAPRM6ddWe*TyU$h5%w=~1DB7;eVa3q#;Cf@_|;m!ab^fb&6GKcACEY!-- z!$1II8|^>_yG^%Y<~GvNDKUt)JPSWz0QPDhdwWb<|D})7n|Gr=)4WQNK%|f*GzI+* z;dfv5F{)|qLl00Waxu)nIGn%bIFUnT=La)0RV<8i$Wo5rTY5ROt{E!wsO%m3(qJ z-+y~K$(TQYCzxR+I+%@MRfo*q4h;6Me3e(XWp3Y(Oefc(dzw#A0)1)qKiswXUYqol%s7`TPO5 zxeO8H8i7%Z?nq zDf`=-!FZ=N)y6ONPwe1e%|=@+dH_f>96agAzUEoE=C-j6bqG7X-t4@B# zEB19K+ z+A->Lj{XrAVE-BGI(}yRj@PZ7-V_zqL!xzKFSKzt435xBB zwZ}SK2a|_gp1uF%c=v%vGkM$%vRNDP8ppH>)mpAHL{97CjdY^Q`y@2Q38)TJvHWH5 zfmLV;casmbaZ4`L6p&$T(j!j+A7+sqwHOq+6->B;O3pjMhg-o0yHU>N{Za6chTxSE zjAyw6R*3wwb=%REjn1+Bc>tmlm`cPWGe+41UBr( zbMZp2L!Pof$F74%U`>asWrOv*bW5S9EBFLSasXdEPCy;Dc(UYie4jX%FibC>sZ}hewnP_&Iyq zs7;C&vJzDZt#}ZKVoi4k&gFY;Ic_ul8UbUs-^0Cpt2e>OzkxaIfK`@&)qet`SeuxG z(K+?^v$-mJPw1`aT^YGC3&Z|*<6#f8nY)*uK&VBU6S*G7u!e8G(M+on?&RC=I$ED# zuU~=@pR#REbsfJmzgsQw8qDJ^Z2S%W&huZuj4#20yEy-u+@A>vAFgM#?`BqSxq?PH zkl{c)k=@gnKjia^nU&{pw#ZJ7>haB7*Y4PFEj)_$H}ThU(BTT$!)f46TfCJ6$ff>((O!vn zaW>zFh*8KI3b^2JUzKrQ!d1COsc{|G?)JJL=l_GNaJ`0i@iEx>3)i__{@1OeXwUrr zWAD7iLm^UMpdFU2Ms_Q#cM!HWgjX4b*xjYR zoeH|n&^41_9N{~xnV5w*13UM1 zUCwU^_^^N#{z1H2xlrF=m7;^${(qA-R7X<%^*O9|W5Ggoag9)VaizoXlGMACpP~A- zp0X3-L@L@%Yu7aIl>UWj4y5hA71C#9GOP-p!GBM=8S&>b>71JSdMjG!8wRW_BXx3G5(^8Sq3k| zx#6v;Wsb+%*N|aYMAUFKNO4WdI<5p87Eq@c1}gN%=DVXX*&Pcstk-(~kem|HUt$!(K#11y=vh??B;Hy)Xl@7Z$A7AB<-?&qfu|NnM`RK6r0g26|yv|W3OflPRBm%eX>VV ze7Km;!^M0a24g?Huw40*s>nMrvjJ9V$8{gRt01eoo1VYb$#$&Z5j}Ka6*e~M!!ynP z2Oq>VJIB?aQ?#dG~gX@e?(X zlGv~FKAU6B!-)u-qbWLQm=Q#4C2Xoh6$J!TQ`*yQhzl<%shv;1MQ9IXy(Qei@*jmwh@+t^t zhW7j9KkWhXl_npcWIU<2P&UN__I8R7!Iuo4V)S6y zwJA1~0tt%XHHZynG-Oqnqb!nq3H=jm7e*IO!ctGR33jH1$V8O?Je<#g{rhA1P2bx( zL91l7D(72+=!}(`&vWJNmhVMa{}4y?__g`d*`GY9KExu;IEIrpt*pqMI3D{CR)jNc zTCl%Rk!-{3oa(Lql{)=y@tf?7P??cg>5)Vuv8e@nGGi(;t2yU%0sey(!#l_nY{I_2 zO!@x5`2HoI)Ggq{b$s40WxX58tIcc5$r#MvS7QIpo?gakX&08CcX`FmnYG8loP(W4 zYEdrdIhoG4<3m4*&6^bn4Oo@s3R8D5&+sii^%Jb8E7P7;yAE#hO`O3Lj&BBZBA(1r z_ABEuoB!u@@Rz`{r@**%9DfFwWu5gtavADK{*q^xwJK9}L5DM0?IUH;61xK;XF(yK2k|FC)p!gX(Q|Q27}M??E*uBLsWH>tVlbv8X=y24`Vi zuI1u~bp)#lFXrhBqF%CG8~a)&KAO8tC%2+t>2R59;Lu7pvAdR2i9c7N7oJBjl% z<60klFcTRZ3Hjb;G&}NG3u24lY&zGoKj%FS+r5c3`U&jT+0#F!?K6H?Uw$2*;VV+j z;%v^`Y-dkUY&@AtSqP8f6|V&iRA80^n9avklYIsF5WNI9;DKljPRUV$Z7Uf#GxX|L zf5_1a5w-ut&wsPlKZM0Np;mmkj_ulnEz?0@HM2(I#Y8W<3T%tm7UP-N?m0|@Rb`*$nPe55*?k%Q!U8sRtYa$gIm8pEgA5&bRcl_WQe9*I z?gwg&0X?Rr8s}o7jH`LqbTSydsDRYPg3EA(qSRSbxw?(Jps!_A5%>_kgPnE878imY zs_=RC;#_dao+gvJ9dwq@u9nR~cq284h3Y3gyzT|~@Q?Aq?kqEtuJl>u(bYW^;9~l9 zdHxEvg84~1qU?3h&g{wz#acO0#ggA3I=Dx_%h)~u|3QzU2ysOP-g69bi+$bpbRUE5 znQfF)Jpen&Di!|EkKprbMWY8E!fDBiZ@>!O2~;>6BsrVs`tq*+d|90|f6;?InMrJy zFvPuy59-I7qm*lD1QeT@h|tM&(s*#OozI~k5IIb>C#-qsA31f`DSIl>iW2${oxlV4 zdJ=o`KAglW#D^KIxGLH|!kjjuS z=g=9ypbzM99yN>U#1eBs24jk;coU=O%yNc}Gi_SnHPnZOj2S=X)T5ZOr|8Ozy)MyFYt>p9CiLD@&R z_tq<{Xa1U3ge>Q=)L)x&Mt#%K#}?qjKg0)flY3yh`(n$oqx2H={(}Xf0<4jS^X%j^ zWp&SBNm=F8gK(Obx-KQsUiM^vfe?WYS?<9oqZF@mT~;MZE_O}c?b>X$L7%`XMQEXf zE|V$?G6VWzNm`<@fO!RL88V2>^~)BJog}{W#%9e}cEIkOPowsm%*bFtG~~#~actQe zQK8+bP$8=;>axZa4e(Q%<1wgrrADq;QlB%3PILVTITLM?PojUJ|8yLCms>49EX8g^ zt?et&;U{XG?-2c~`r@>@IcYr{oKQ_=s^P4F&TUzVt*g|&j?ej3SfsNfowjLLlD$_e zu>gID?Pbd^6U z+ImMrH7{7o#&^+4K9P6M$7kOJ^6bbfhmE(!E9i+A(2v+*D69S$_zqLB^qIsIbFljJ zc)Tl_hGyVGbGAl_ZFMY}3KeS4;vJ)iB*uUdWAP&95M}5+T!1HX3i-~1K?kF;?>OG` z9Cr?9VxMhHBM=?L2fxN8mXvwPn2vV< z`-m*YzR4Rg`=I|2xky! zc$G+?+C(G%vI|TMl+hiNHDcPHT5{^`>Rosbg5}kh&+Sfp_?S<*`0zFLh0R#Mx(?G= zq3zwa@5@MO2-oR+nnm~qYj}-aST}$HOL$}{+}a;e%RA_ASoFZszkUXJDw` z`XZkAo8$)m&9Qz?OsFzcBGheoi8VO#4f2V!F4elt`iiKkaq72^#{Qx@;431&3l#;k z6St9x_<%g?Ay~Q*MSoV|A#B63xC@h=k7NCxfVEG8;czAh(wH8vMk(LWkoVL`90~bT zvLr@<5a;nV5=_wZn8!AS$2;L+*z=Lg{eoqGgva$L*f^PU6S=JHjOJd2l9p_TDR>S} z3s!kHxRQ3XKSx~g8nK*Q&tJ(p97?{SMLMn>U`wc~Tu0U9ADG8~`AcLyhzSQ{?`4xc z%bqklDGOTNSSyf58P+es9r*2>^jVQj8S9?f4fc8( zaRe*DT!h_CB1=E)zzXT<*s~l;V~ptcRL9>f>joDa)VZ|wDeuXdH|8hgO{h6z#=^>I zbaGnTG@}ukSxz{w&k=fYZmPwrr=TM2cUY?vC_lm9-H7kIG=1Jja89zS%#oZ63YxL- zGajrSnU&Y!DO|&5Wz&`MHlFj*n5k_q<18%0Y@A&l+fo)zR-?zu;h|Sy)hq=k%N)cT z*x7a9NpQG_ai6WxdcW=ea|&Xn`6>Jf|7V5?0}M?1WVK?xURNe#jGFfy4+ zY%!a4eHh4dB-I70vR@>0*vxg$;!_~sJktXXH6Q!8XK=nw(p0tn7Etou6lcAbvXRav z`-LwxbgOY>749bEH(U)i$mYJW03ZGq{c>o+*pp?JK%b!~Kg}XKhtmkde#?Ww0};Yn zr<)yDff(vLsLv8iYx}y771w9gjEq-?wyd7SAodb`>E7&1|H1xGW03wJ zhq*-S6ZU_~0S#3=vnZjE8A_K;i7d=u#Ow^&+jYQz(5w?7r*r%&*(mUlkM2tulVVevHRAn^4-9Iv#{`? zSe+Q*b^&q4R6K~`pg>)Y?%eQN)O8DIeGljF1mt(Q--W>#XLOVx zk9rXIpcc4u7JkhlI9oTuwoqMSWdT0?Ej~m}GBjb#8}5re8w*7BF*N2%vg+$G1eekX zLyoj{hv@z`2N6tbd%Vkn4|}C(#ZFKwrQ*TCW9(ZGOkpn z?gO^8OFo2CdSd>USqLp(#6Um2B9V~gOKAJ6qP zC3881Gq!&50CubYAkX;=KDp|%t>KxAxK1_eWN-`x3CHmI`Pk$gpuk$THOWTRd{O5` z)DRuSjvK*)C1f3DVIR(fT8JIrOD66;tU?ZV5iCMR<4GyzuanfGoWJ>Vs&Zb(doJRh zWawZVv>f|?iTB&X^&Yv3SNUrjwyD;YYFFEN%KNRrEa zN-pKeRK;1rl}7Ht^+J#GV$NC3EaNT_Rb>ZfY(2}FzKN&wd)@)L3Mqeja;lMfEFC%-{f=Sngje`_B9^-pH_p#NYD;HLi|yShYvY+)yMh6nl&Wxxw(YU@wPyw31J zORI#Ru|HnJ9_+{OS>{2t2jdGTUD%UlcEjG#qw&-2aA?E|?Cd*r9i1={Eb35?AB|_} zjFX9cDx8qnj|f2($nN+9&bD+`jQI&;YO|ScLwQy3m-@1=bMY@im3j#8AAkqa2_K?4 z_FWsRjvRz_T6H5DkaY+ib@W{5LA1f%^&adcv2WdKhYamHU`hBDPWK9Qu5a-tt zJZlYNjUs+of$y-A?<=ULUcu4+>mlH8Z-7+`*-KH^6eFx|`ZJ;d`HgDG9?197Dd%AR zp%`CQH0;bUz7Qco_n|zmD*`UKSF0fzKA4#dEjfJ>^(F&fYG6qnuoJtQ?8LTXI-72p z&7KK1OlVBodC`wo89P|VG^eLRu@i1G4QhGG!N#^bVi4#Mxi}dWc88zMF`ShrBicHK z`47)ue8}eaIJZ+Cwf$Lbc%>19)l1_MCkWeBa#V_mtXddZM3vX(ArL=X9*fqfPy#@NpO=TRpa#&LUa zHz%^UwV=zZy#FVdg@xfF?TxSDm)y&JKoyzR2VvufvzIzV@lDy9g8-+ob;O!`rx;-< z@xs~EIeT#IR-iy_*6&Ij)j3-wz=ulUgY&l=f>~Wa2+>PUL|4vp7}-dOPElj3Zu| z0^SVZSbf?592lL~f(%PxXUyZT2_V_unn%Htsd5qPeBgrL-GTuf{StB>i{3D~cxsWT+l~uF@o7{!a zjEd=0G5t<_kSFKt8Y>ksx5m!u=m59!t(tQ-!@|70S~8&u<@_pDOZ6?xc#p)l2quM5 zLp^LcW{^88Om4W*gG$%-Wtm;*06y4}c?yr#1{%ab^dAz+leZdE4i&~#P2jAxx0D?%7Wtile=P0FYaW%gT=y<7n{ zI2lKLn2R^DKIIL6&O4A?Lqp*y_Edsc=Rl5Kk+Z8wM&e|i?Z8>K1I1b;EbEB}VSQA4p3R!x0etwD=;A)IFXmZh zamV~0R6p2U$x`s}-Q?4JN5u9CohJ5E$Q3QYIUmolJAn=psI$&xf0KxLMt}}8$UN8$ zaut5VrNlsE@pO6=;KMF3&yS#5z#T=N{^pRu&&c*u9#HNp89p6Eub3ZZrMDC7k?jhWldF=U4R$-^s?Vz(;e&GpN z@hNx;ZcVV^R%vU^_m=Fb8Qwtyw)$+1@!UJITI&gj3r+tALHw;2_F5dfEyDLQU`~1B zjT3piDSNQ)*^sRTtGhXfkz^p|vRzEvQU*@cOJp0>+OwbA9Fw{qdRdp_@4QINvmOhNaXrm*G2HN|s|NccnLHy$kdB zuYbBwewHBe5Bp*9`=wPskRl!pmbA49eFO8CJ{x>#e;P-KByuAo>##3KqHct_OnbNk z9qh-7Sr;nImBaH0r70u%=#8{5Qj1bIUYm*>G9)!6?wQWNMOAe=#bc`edA)MIRhFGC7C}xII zmEFj^?o^!PLy1SZNJ58>a?o{SZXiO;cT`+c-VQ*f`9XW?HQ^#B7nMK4h&cykQ979Rg{CZe=XJUY^cp}}{&gAQK{_X(!v`pww z9}oT{_IMoeMk5|mdAbEwuO6M#d|QASc4#)CYEhgRWlz2iOi@PpsxS~ zzTm@!Sh0Ov7xUh7xgUuy?&BWJ;s4LM$)dj5=;_=Wd(eLd8FpiH&!Jyc4lJq;A~oXd zyJ7#65(8=lbyyo$;Z9NqrCq;i?~12cv_1 z6NaeQ;A2J_2k{ECn8AtMKcPmJkJQ&V1kXT!yE+(9DtQm~X&PPlU0y}>hFTx3hJDI8 zQoF&vNOK1EZw}4Jhv3_re~1`EW~In*KA#&ilX?~+M5qYqZ}^v88+L~~qtb0EK86@F z3d@LouC93Zc4=C*3_Y9RL^VoSVE$1)Ms#E};dORv)dcfY-pz6r!M~JWmH7{`r>MuM zSfiqTOO6w&m66Q|WtzsIjujjG$@+0t7hwzbJS@iJ7ZVnzEx1wsz7RxEYjG-`gLCR- zN}Ih`ar!+n_U7c8Vw18N2Z0IV!+CrSVx2r4%RUkRp-}EKqV=1}UYtjKp>oa${Fy6> zdv^LDHLz+Ul%AkUFFf!w)7A|u79X0k`ilb2<-q`P@(7!`HHsB zm(rsg$+<4U*V)YVs&0q63kb0n-bqo8Qigq20e9+yRi|?gM&Us$Am0#mO!E$U5A(@L z3l4Ss){w_k zldyMOy&3Vre)L}WOk+7udDQc<*DI;r#c%V|PruLRYE@mF&a3R85F?zeaW5ACA(nC| zD|%}_`Tg)8BEA>~It=FTZmg7zu;qiW)9E}$@hJiw6=4Y+sNz?={j^-%G@~WQrFT+8m(?O5& zWH*fjT-(=bvf!K>s<`HZ!V z%Girt40c7!W3CJ`=$iy0I60>r@3OubN3~*TmvtyHI2FgroBo5D2id*yCqu#9wPX}% zpzk2FZ#v)gBE$rdVJx3_H|N(n8)XLgU=O4j%(3jz`MLIYI+07}v^h#M4r)7Sv7$i( z{*vpU2cgE4U0bzM6r%SK6M4)$=skGPf<0k|QVwP?wDpIg3sihKh5fkIPrv)Ob<|*3 z*~QVFxZ|Sa8O%E%I|!^weG1ufcfeCwTOW2Y^_j*6`BdE`ca zXH&0cPyQ~$t81{I=6EIYtnA>p0E8IN_pa>kS8(hBqN?eHzy=wVUMh$Z4tZAqm zGZkwQA?!ACGOPF?Q(_|TFshir=Sz;^WS%w0bslkxijm@jyr-5Rf}Ir}T|TwFSg!jg zCp@qlE3%b(7_!HsmMa@P*ieBIp|Y1{A;bqc)`2r>YI`5-3l)Pz8@IrRCdq43YyT|H z&a?K4W~Lm2+~%poN0Yfu5l`R9YmRxmc3mtcK3|Kyn4R1QYi-EN*@d{jI~La+WEhH_ z^x?P8_!TE(I|s9he+ARwPS)kgL^M{DjV~4xqnLdtl=A;ZDOMNSv$Z3lP|3v%WCu{j zTxDZ?f|EdjWAGlz5-(KbyDIl8(#c7x&sp@r2G8N>J$P4h{P^;C5I+$U*uz>lp+iNG zJ zQ;06kWG`2ccUX%a)jHHHA7u*gGtBC`3lCxeG0YgwuPOLYig)e8JPMws!g(OpTNUdq zgU!o}l09wxQQtt6D8(b82^ZW-vkoGNU7Xsuld|l>wA=d#{wl-1j>9g(>Kb8hM(&}9 zubruYT@e(~qflq2Mp~(3GL98LC*zpO3wERmb54qy%qK-2lvQw*#MCSB8S{0M6Gj+= z1e0namL>BzR^F*RYL3ea$UxA+o@|+m!I9E$Ft$+@zZIE+X8e6}ij1@ySM~6jp zi^z8{4;e}`naZBHp$B1P(uC`_=3#^pUE}6H?c)gV;ne&H!yM%qtmfx~ZK}bDc4A#z zO*T<76c2obUXzLti&$N+hbi$mR`O-uzSz{Msg~fXuQhjJ{Wrhp_jcG#RWgOY5Q%J} zb}Gku1nAHm6uty6{0*0pDoybbW(^8PVSX+wI9~L zFaEt50I?$Ce?5Xe$^ST$vuQ=#u`i5<&)H-)mc`Gg#&J&MNR7dd(>UMAst(4F=*7{h zfIVj8T zMj5gqL;GF~F<#IosFdtnJ!@Ce>O7{RgMA2c5zWTAN@p4i&fV5euME0~FO~Q^G#H$8 z<4oS}qQC@oD(&sIwqeJq@kH<-#6Z~&a;1zeL&?h-j0qM?rmCSFQx;Y3Nhk(_n^ z0{E~u)_O8l-4krA7h>i{O4o?1b4|Tbs@HJv0aJ;e!$dhFtM2k?lY|BqG zprV6!!~4^k<3_zUV-U*>vxC{F+e)onC~k7WoXC3}8Aa!6Jc*q=OKkA(yxs8bYL{1^~L zO&7Ti^}vRsu;(h+|B?-*)Zx8lef_G`7)-p~35v+2WdF+qvH_RQ* ze!l}D3gOf1X&eeh$OD&Y(TL-8#>+9s(VBP4tJ;tL3l%e+8FUfXe*yoe>h#*lEIUG;nN&}DxnzIfoC7m z9TG=Aly{xN9{R(fm)!YZeondT=$Wlj&mH8Xq!QD9=e|DX-Y zj}$*b-^iHV2*f@vRnDiTcbV06o{mZ=PPT9YR%lGhgEBri1;pxz-Kt?bkXPwPbWI*a z^m01=LeD2uYV8TH20k3c-%Y_9+1JfMiik0cNUVB@B&y3eiLWjDJ1=3JevCTyF@H~W zZCMe`K%X|;7ppcg^`alEx>NO>pcPDz@T4wD42c!gEY!4o1}k}m7~F~ApV5`HKQ>qe z+dKt}JAwG17FJV@@9Mam&idQ{3;mXNttNMI5&J!ZtM0@VPs1Czi~U(ORQW!STta0m zS|+tT$5X(Z6O!GQ!LCbTz2)&84kW5jFVC5QJMz?gmAzOU9I=nP2H2$kVBX?X?C?;Y zKafa7{pdeA)6$?oHKLefIKNXlj;yPCoV{GCTuwFqZNx#h!xB@GRzFHlaW>qjbt#^D z2aoAnFmXT5r!v>7-pmMUql?kFy^(DVvBc}3!`Hd*bKmguZK8~)$W|@{J!U0#^{|8w z`xM~AKfnjo8ur8b)rpOIzLU2_1{sfHgqZ@>X=PE%nl8$#%|1AfH_PT5gGU}A?87Xa zUbO3D;Dbsis=0RNZ|el1AFsu^A|DO1$hD67HtJYA*XBPtkl`g<#A>3VgX^lC8NKe% zK#N?SwN5)e^(TxtWK^pdqt!ciPm5INUT%V1XzjT%meLy^Le6%7tkgB$SBM@m7NWvw zw?)Q`I*w;ru)oM;G+|#+(eMt44tfy5Z|KK4%w^S|%^4XPsX)RB-0PBIP4spQI@G|CzS-Y*~@dk?wE*LaouYUggq*LDi9 z-B;I8%e;pPT#t}>csch$?lbV=+uT>VkMSQ~%x$3BITLopXyOlhQd)5Qg8aiS;UO;+ zVh+Ui}2E)j20sHj%>YodesqR7C9|j=99e) zfe)%a$GnP`Sdm>%c2HUqHA879XS?J@$UBw=p>0Hs&&a`iou0S&pbDL_xp_OWKn9gn zKsWgi&V08QLybk%t)0IezP*ux=-`?JG zcc@n3b#%bS>!;_vdr_-xz_mC>{B+LA8M;?um18+uJ4<_U{cSm3phFwZO0CTH?8~X) zs$}-yHNBHJ;T>=a=|tYIPE^d&dje~I4)5V@q5>yo85!)z+XuVT$3KQhzD{sN zJ=o+r?UDP2b^h~|0g(4}0Neh2m7Qj#DOh2;@PV^gzS8y#nhX+#4 zVhi5FJD|cB;KP@>Pw*aI&TWMQu@qLsSs+7KFta)DJd|@P__wP&5cp6W`P{UxvQi~jn2T;dx*IaF)6zv z&uLjs%&^L-ZoSz|J#M?3oIW`eM35OIfBHf`DfVK>##i+vR4R=ztXx>z5Fhj>^eF7; zG*@BNU{y01QQ^4+2g-8}gg6;5L57yPGipb4!hZE{tUT1sM-nR<=1a`9)aFc8$JQG% zYH7sTM-D=?36?`c5M(f%9zW}slR+KLIop5Hn|siSD>P4P2f35G)S=RYi2Kt$#TqJU zo&%|Ou{`v_UtYV%3)*Qk5UmOpiF!_T&ISMvK zUeBIPr|x{pk$>j#9PvhB(8F^m!?8>8vlwS#kN6&V4#pxMa>nXNJJ-&9g_V-(L@u%} zOXNNV@iu}~_H;Td zCieod#Rp^_z62pYpmOm%lfxe&BQcv^wXXOo^|>o2fMV8j3jXct4%orD5A_JMjp9Sh z%9Eww^s7*r6CbLOoe(3+lbI||2BI8~#f-h^TD0pirbX<;2Q}IvJE=$DBwZ(DJ7H3M z=*C}WBkCs)LjS>vhYV-?9%NcOY0n9i=BKRmnbns~Ej~n#r@dH#4rV4oM@kRE_(Hx! z%)E7WMs!8RtX<=adf0fVMv90h@R#|9Ch55P56yW^bY+<-F;}9WV}F*l8E13aEh5v( z9?#}HVqHd7L|}>&e7bN(>Kv&KKMp@2GL+U>)!z?vFlQ@5I00O|k+sw}UAa2FW*$U` zS$H5Tun+YWAE9m$`0x(#g_=*!()*FvVDD5#u&%!w>%H~Hx?~y6{aA`Y&=L_F=z|zw;L7=@j!l*r#lXBiPJ)mL&4onmmUa;Edb9 zK8^o9{Y1O(%urtnl9?yjh>!6Rd)|+CoxoKMrk~;}n32xze2}ceW~vt3@fbb<9lj(p z`7->6$9QHfxrqs6OHWM^kGd2^(V+QoSH@BBe4ZLH2V(Q)CU@e4k@k^bfxT2#IDIyz za8}^8>Oskw41RQm4_Z;=CW8Z{f35GJ1^D^be-;hFH5}^G9K3AeLtAb5OT7^+hp?J zOj*j$u|ntR?T2mtMwOrhcu>ft}Y+4Se^+i{%H?D%XeEqQGByP9ZM@Yz@sz%+8uFpwC4R_`oww~IR|SPYG#UrvO8vCGfT-!-aurqny)qF=pH3M=`?B?#%@lYeU}c3FR)T%9T0^OZ*m#*ueTcINgU{2_J6Y5$Ej6Y^)4E91Av71zD_M?vCGJ zOz}Ib{#W_-|6}qKe#J_^#=<_J4(a6EH}PcjV?G8mVmh!Bg55sh%wFYepW_@q#Y-uK ze^E5wd#KDg?St>2R@6HD1LqCeM<>!->GglxsaOl}oz&^G2KzJUPyw_%gHDah=&`ty zsA3DKuoWzLDz^#$;WhB#QxM{PB8&UrSuZF0m_-J25ci=H*ie{jQXBgXvKV?yuvg6I%_5j(3~jk%^6$?vV1?d;+7O;$ z$Ak|~&^ieWkv~}rtZ2#Oow&B4Y4vk1oI3nY=`kJ=8C1xNI)%#GD(~x6i4N*-+Kptd z<{YB#6~q9cP`d_nSO@pvaX#6u$ItQeIVu^?gAvY<`w(mVg3tawpo5WpU2vgA@*Wyv z_Xp>G=5-rciASb;-jjPamp%Ur+x`ZxKy}ILtm&2TJPu}!FP!@Wf8o1?4BumyB9F?H zZeM{7pMeDLgE-Hneu!5<0VjXH&Y9Rb^#RYxfZoot|4P+U72y8B_t=kk!d?xPDGwlS zc^!06XHwn037nI@VTKMDr^w=3uKF?d{w*<3QP8V76^JQ#4y%bO9>Qzb0xE1H^YE|q z+jjU+?~!h8Rx^?w%fdTZU@)&HFxS|&g$V^8ArkM#202CGJLR;K$f)F z;O3esHi!^`67r(UB))ZV-erYToi))x+l~mq+GcPAt?)PHFKd3XBVBRD2hqVgMy%}F zylpMk3W#|K`w}`PJn@zGK&u#MSB5#tnBgMp*iB_9do%UQgKH=w${FATIhIp7JF~fN zJIkUmwjWhXqXv5`yk4)g8h^=}jGk<#>dBe3)^RMa2o{$ff(YUHbpRWT5kjLh z6He~(N{5j*RR=EfADlJrRU2a&N%Uvy2P*Vp3%%{|9!7%>#ufHxI*IxYVsB^WtS4Kb zhP%qrTlx6}Uz^xo!h`<+ix0w&R{h7 zu$t_{M_BIe#1k@~%CV*&Nc^w^ui*!9!1ezFatM3zNcaq&@cQ?#eH9?z1Qo10JcYIW zi@b=8&aL3pb{^fzivJ|u$>aR?7I^X#7_=Lny}8LUe3c}FSr{JmM$q9}&|yYGhp1eK z?$5>Cx%nW+9VsvQ9%pe7u}^zAl9z%G*TZwTo7}>qcn;69ZNh)p3_@%rL-{fl%_mdV zVJa2Pp=2Iph?ONO`i3+4kn{T&sB~|E{qOP)H1SsvYmDs$#QIgY#?bb}%Ow6%BKh>OAVz zM|HFXwikZ5b1uzRhV7V>3`Hrwo3+%Na7LCZuUwi@{Nl`qzOl`>v z;5|60;u6lv>Za@mvoQJ!YG@i!sI+Z#;iGb-)a{omIg{+6J(^Z6?!s$$fbBs()sJCO zBEtrLdkpK_z~9efsUPAy{Fb*b=uinSpa%KHy2KXx4^4^Ii;*vQA4`1%k6}9J(VnA? z#`k~#=KU_bu;mGizI1YE?`s`MZ; z)(Ix+?M+M9FFHIz=E2%WVGyh(HOfi!XFBiu*3_T*5J>PeUr(?-PB!uh{@Q|9v7YE- zHjIZMbZoUJBB=~EeGk^XoqPw;VcjmRqu>SNgMAnFNo8sVfe=>mc};sNBFm_4Y2$8k2aZX5J`u}OIX--Xu-mMv5iy6e^W-W9wnVR%HA%A; zQOhu+FJo$_nxyJc_G`s-&i;J1%v-8t+mFw`H4E2v`!d~gFd;oB{RVRmBE(T#q1P4l zT5~X&KV)X*WUl5|?t_t(y3}e$=uzkona7BVtQ}~2BStE9cq~{AJvq}WvG4_0yS3Js z0~*K>8CsbR;)F;cHn^#GuQJ}HtnQ2PADl&fd-5FaPZ*&G;Y$4^xFAM6L_XpfJcIYK z^B?o}#QJ0@9fmI;KdK?s%365yx!mWhnj1ix>o}Xf;6o2$n1$?Dzun2!hom~@9=!4o ztT}Y>mjm|*AiPyZC{LBy z*IlckM_@Nb4t7|G5NBZZuIM6!tSPH{!8(XeF8i5ORbW_FxWD zHCpF$_fKo_Adn*F?8$;u#a?7En;=%X`fJC>gALIyA*Z1x_*Dgb5dXZ&$U@2jvD$0x zA{d_4_}!i>>oQq?RrFYS1Y@JX2cwVB$M3;;I#+itpLe?mGOwmL=PDjp=M^2C{AbNV z`#6hj7-(Wm&)K^Rk`J+xH8$qtI1T0@EORrMunF7IGVkN>7qOv_u{YIHb|bU6KO6+v z3@5`ts)jxOz{>eNcA>uhdEA@!9CZ@Rt@~NQWg8X2f~`~h3^M%8Uj76Ve!?n0WY5oo zAbaNi1b^NE9gJ%p#Z$Ns>%E7g>oeR7E;#S&CicIMzaHlNUS!RGk5&ISGKwWYpMy9j zt0B9k456{g7o5|hAfOX_oU}ZcJ7i8WbmX1_U0w!X-cQ*P_o3ocW93qr_%Itm+V zip9&63WktX4G}^Q!3Mg&;6R26MizbZH~TH@&C>U=J~NgY-%PR( zYRFxQ@2x)V)#Md#WX*GK{i9f@Dk;yfdOJgA9ajDnp1#v)KgJ@z!M^t;$5@(Np408h zVcVbLCv4(%E0gzNkNa7i*D7q~ZLI(2lw0_WY=e`1%@pj875|(N;W<#~CH8C9;Z1CI zBX}S-+|9Y%!T0<5eND2q>xfO*G>h=P7G84=f z8D+eQ|5Lc$^;q$Cu10+*_fVc_NoC27)F^w=eL0@U;i{wovmP|Kg-Bx!$YA&OvZOS* z6eYRIWF-gi`lg^t8L;m&?!Xq#&dB06?!$79Q}AzBcOZu%weu`8wo}%J==zyeIzvk> z(^?cQjsOGHoeaHNd$~#_-nAN(>c_;ii?X0ZurTfCl7V#`mSbMetiN5>&d1h=&_gh1 zX|}*;gAH&d7H+OT{09{wVjAaU(7_tHHA81znEzMpB)s)tUPb0p?z7#R@+HLwYp8k; zaV?^qIhD|>Ih-@Bz~)aUgQ-#>LYSHK@1s(LWDZtdMdDZsZ~d?YJb7wPhq<&i0X%MSJkXK zKd~Pk#lv@=-b+L%Z-D^+CK~uXFPAgV|9SEkwtxrnlB{9A$*VVDUrw*`%Y3PE{Hk=O ztHFw=*^}7tF^FVN(rjr(;+x`$G4UmjzK>t=Jm~fup2&k-X!d@LS5lX*z{0>zPz7&c!2$Nf`^k0ktJ>p)2!Ra+TIG)v}*Oy}}8>W9ZoGM-|jb zURCiue&e{$fQI*T*0&I2T}@Q8WLL&f@I3X4y~!iE!Ur4Dek(uck#UTSTOftsMGdX1 zDmLV#y^_3BRZ4riD)BSsWR$|YsK~2Sj<1sMOQ={~iT9q8Fd;Jjs=7G^+pMK|eQSbF z%IU;kz0+E&r(yomsl75OgA)*HFk|@JIXLRaTQQYy6$sOoeOj|HM<^>wg?g)$;)9$? zuOO;3S^N{-CFu?!9!xFr1>zdAw(__$we*^@uS|JL&j7`7B*9&9- z?gc?s;al8+U-2&ZjSyRYWbrIV(Hu`(T$&+*r%|@564) z6ugV|$}sp1eEFWeyw4iGCE>y2X}=$0`Ok75ci}HM@9%EjdoLJq3pO2nrFt=M;c0wM zM)Dgx1?wJ%kO?`2xI#YFdz|xgT!rz;{p{yD@Zfy@7l*Ko03GLY#nwBl$Cz#12hTx{ zS10l85Z$R! znei|E2se>I+>DNH`5Y=vIornlsSy#pa=D{{5OJSmYd7G!uE;l#wNgA# zhdVH36~GQ369F7L=mx@H45V5=*6{q_8O zh*!OYovTG%gnWGwss%fE^;WET89eQg+%LOF+u?JK!?(GDV=d=68$lby8Ov#?IyecaNy^E_e2$vrUJl2PDok_{laX)WPB~5Fsseo26*Q#h z3#Iyn{)67M+G%F>GnE%V_wm^eHR>$47rHKLNU2|6l<%U7^C8r;)*m^7y#yN~=E_t~ zR_H_=GyGOKuK5UA1V#$}HGogi`PfuwG#Xu;&7;nqu^JMb zWqk#)Kz-Qg4QmDJG{%y(SnXLZq{tU2q5mLysh6wo5LJG5Ie8UUjzsHAfk#IDZVK~?cx{C{28L5)x5)*dFlbmfw$^w2m1`X zkga4JihwAG5R)7Zo5_qrOwSn!I;elI{>$a?CTH^dMKBvK;A?Esy`IP`hSRC)yz*nH z?^Yn|a%f_6s4DR%_v%URb4d%OhB!Rd19*U=L($J_94( z=O{0+&!@0uJ%>B;QR*I$=VA7weJ>#bipd;T;(;u}>K@@e@-OVraB__uSY^q4Xsbu? z`){DeYrOwP-Z_)&mEUT&o#-%vGn);fESX>uk;u_ywZFc;biY#1_-& zv>HWc)&LZv2J&+lxNt663HAKDCnbr}C_vUsXc29Lqof2OD!QyXLv2A{z>5V7utXRiHJOu0z$!5&ASRW1Km@Wzgg zn(Qqs)eND!5>`Te&Xw8sTOlxBcLfebIynWhtK~!6`Rs)6h}mN%hB>_He8xtS(~7*L z^S@;%$#_)vC3+z2%oYuz%R(G7Qi>Wztn{)XD|1eVf@sd~F~0D-=wLm^J5rPP$mkRu zRiiW(QX?@Q~>z6+1z8RCO)u-G^FeHEF8 z@z~-Z&cwP(Th7Yt>{U8ZatJRc9sNJ!htK3;UbT|C>_^RQMSRMxFykOkqE_ z@a$LAK`Vd^DpIzA({wiWel8wD_y`k;E+*hJm|^IHpWuAFj_BTWl_vtCJCAXxQ#_2=OAku><__wP&V0>Zqp**%~ZZhk1w)Y@5e+#yg z(ROIU={;DntbrXB<=y5V?9#Fe+TZJ7TXGR&3RNgcSp)Rh3LMLM8P*Z)mX24s5{KfW zSxcw&%7>0jV{~$cR*G@DQTjwaW%3cVKNV$FjEszl*#)mcw2D4daY#$|eATIv9~IeF z&tFDp8N8mDEv`nEK903cvk!VY>PUqe#Hk!fENZ~HdcNMFm~^Ap-aPp)=3MIH2b}?a zsdY6FPe?CFzUUb#kD^EIOb6#tix8oUrw1`DaUQPZle;|G-!uyRa zj4IycuV={Ond85Wy{uwi%djaYfQk!qc-IUtOy%D>SlLzhD>va~Y{L4#1s!BTnG;oi zwmcC+WqgN<{QU=h&KB(R%Jjdc3Px^d4@M(N2l_)K1a;flX(!li0A>09Dx}?`;T39Up zGE}IowB|fRX4^WZK*uN~igHqH{zUS=j=d7lIQr0qq1uM&A zKKSx5p3&#LyEt{odZ5EFB8UalCFYW27>x%pj2L1N$j}iSaJpYD*iJ?e(T!dQM5s+v zaVqghJHA)Lcko)i1|8I-u|H%J=&&Zm79ztHocjWhbP;!^;NPz9z@B&yrLiFS)#8J- zdu>^NITYgTWQ<57vj48VS^mE=*@u$6S1;U5U2SZ$a@vP11A8(f-Zy%15{=9vUt?9k ze1~;Ldq(|=yr{VdtDa^7)nF4TY zo`JTncThI@2T{GWGEp(b5N1T20~A{pVeG^Q&+%w*&U+#QvoU95wnJ~lt1}B4Js8#u zoyXMAVRIT6cwr~dPm!~)K^J(v5`iF38ML zYp_by6yzy>Fi&f*iIfW1JJ6YvKHfDZGi zU(UgMI1i7&31D6D51N7<&IGOqGN@ORM=ytd%3=AQN_8TWV|jLe(C7`awy%SHZ*ae! zBsa1i6f!b0^ALFxvB6wT!N0%117;^>M}_`FO+MLX0wS7L$;nP<<9ZPy@{`f2X`Nr+ z-RZrDu@YzMF7_(Og0jcKxZS+nDPV-PgXrnB`dB-88QNY}O%-v(2Q&X>A?$MqC0X&I z3pqXc)#kYaA13e_AAzOGl?=7Wy6oXdkimE%w!jAU@j?g7@8%gYG|*S@cYTM5E~0{w zKVf&pPY+KOgIKGLP&B(LqIO zxsuNBkP~J9Na*d_mo$Pa49y#3s9D(PBKC1JE4nep(_ny__HVO3euz!0v|zu{>!5?Y zgf*<_>ex+YeRuxH6uc}|IaRYiopTcNJ8|sUyz((@$84u6E@mEH=kKSj{;)7yff|I!q!*?hNCrL)N8NyFNfm=bX zv3M?#WtMw!J$Cyfc=rhzf*p7d)yPS9!e5v|&2lWcho0aF1laVWscNjScxrg>ti4d*u=eyt|WI2CTALLe#O4%*dCA)(l zdL>TwlmRKrNz2#jV~VKLgJXhlJQlofr+LIyidTykQN_r7jNpr@8e?Z_;8s)c!AfOI z&@L*Q-VeLL#Rz$t@*z$o<6!UfHCWn0tZYQWF*%d!*4u+*gkfKqy(99&Wl_2Xi%=Bw zDyI=?=nLG)I(;{v_Qz8eLJowh<9k@OoaexYt=Pjotmt!ySVW#-d>4DvQW${e;yn^~ zdx95>v6@HmIYfsq@IpRjZ_l%D_aJ|08ArXGJcF|VvQGL*>{$iO;A(E--JZjTyjM>4 zH)JNwN*2dT!)qu4GVDVa*6z9Ad8Lt$Q^VBGFcQs&sxW8YrPaYq zX->U+<8^1>#8ia%?4N;We=7Skva$0c@(G842wJ~7+-?W+n;wKX5&lGm4m&dsfe*gF z9DB0z?wj`>=9f2|nmQOvFDJh+Wuiq5mL8 z7-6Viqe_Kyd3-MBUg$%pl4qByKEzx;(=wm#;!`gR;pzN5#H(1A3JmHnyn(fOeWKB(g~ z3Y0LWSO7NIl_^T8A^jP(OlN21<#w?87slH+mQcgms^Xrk^E+7I|Kv6AVzKL4u|=){ zY(w}t4ZB^-8vi0T{sR?{lJr-!h9fzI>cl`Y4fUveR3v^-E$=U|=P!=&8%XjFHoXyS zdx-ZwN!IZtqLa6iFJ*T14I-os_*ya~ujOkgXKk%zE(kFn%oDFy^5y-Ep4S2h_`5rx zw%p!C2;zfYK$f4(@()%T8)AF?1SuW+^Lx59N{-h5ryNfD_r1TJj=+591s!w9_SF$$o<=i!~f|)7-MAKLj`a_e2~Ervx76XxxJ_IKBGguGiTQX z{1Y9#f(ATeFPNR*C-M6LR)1sk#aP9~X$4marVmzYUsgX*!VJECL+HcECbt_yg)H+B z<|JfCOvIAr@wvVQi;ft>YNUC}SFwh7un9Gq%s;5bAb0s;KL3;0i+P#go;nXqMPC0W z&IEVVq`e(WcV>4~E#4qT*u*>6<2~FA4y?eIVqS;6l=8jx$h9fwZoGoe@+H-Qy;#@f zG98R>e-OWw=F63SUm}V^x!=f0s6F{6_Pm}WE&%J!=NboriWAu93Lf3WHGGwq<9#Qh z(9nm9<`6Oty~#A%Q??%n^DSri1-V8mweNG)PlF715&_)|xd5~kj0>9&@qRWnjd5attydRGze(N_@!B z!Hx_)iRbz3F9BC%kEw<01Rw9U=+=c}T*AI?!n(B1_lXYP1y`(nJdvuJtMR;DeHY*} z7^jTqDwg1H*qM26%4o{K_yMm${*#j~suBS>ji(BmeHN;}s)jE!>#c-WvcK(NH4kGK zuHM5!_V+OM{y7rRWEvp$WP+N3s|7Y~En=Iz7iHIfFHv-_@Yi627ls zzh-V9`i=e z0CsaI_@FX#F#lqB;&DIC>Q#0I9n?(`8|?AhsX!Ynn?cxHD~>GFsS;OV#v$_> z#DWYPd`#a#T+nw2M2M_pWGeI`%uHqsYqj%?x8ztFKj}Y&_akQ6XKKDLSY75z)T7j= zFxS$Ob9G+iG*;hnSgKQT%ulL%VGml=V?+p}j+iEB>@6-K9fA4e9^ zIXcC_2xkGmoGkWc;(a?pCH#G0B?;TNlFd#1C zv#a()e=M#UYqql|>?l=pBEto-A@IRWL{uyM9$ZPYkYYjPG9$*w9`k2K;uT|y=mpn1 zQZ?7JZI`Uv{`4kbfxeDe3AvGWlZzQmIcIy(LnqVueohA#9YX6)o>ZnjsrTTjdM+N( z1nkk;gOjpWVGTyn%hOtEKao+!J;c|pmc|#afe7Nli`e<|e7y=jM7Hv2-aDP+$COP` zO9V5IGZ^c1mV`OF>#_OA@FFsFP|e|X5MmWaoW<*gaYm}#U6Fhj`^TT-m>;KVgA?^i zp~+N->cXjM3ZHX%j|3a`104>6!T3HleLGh$H|2_)cxEisKOxjL!~ri6S?r0=(U5FI zPyB}-Lk6%l@uH?anC}F_AaxdsKCDD9F*C{h8~u8$^7_G7cFwn1yhHhn=R;ml?Pa zdN5hF!`ekm1gn@(!|bG;7ZF{^?hqfmBc4@Qx$Cl?k3A!@uI)^3&6$gn9g@%E8Aoro zv%~Emi=3;zMpt4DGZE@dj=+{>7R=)FJ&(`x4SeFQ*I$)<;%oVQ-^}{AipSUCl}E4E zHmp_cYJWb1PZ8Z)dK9l?S$AO@W3fnQj<)7J<(zqzT{)WdPdN-)&b6${_h5nR!HQ6N zxeaVt#CeS8?v5fFaq6c`f$-zieX+8t0*yJzvUm;ks7s!V2T_Ciqt(nJpu z430Jwd=wkZu?*p?)V$onKK8`lXauLJ171UW>X;3{mm<0E@f*yxnrpoU47-7^Yq=9w zu&>FS&n0}HoKRvK7&slAn8DQqr*j6siyBve8j*_>8PZ=y7?C$~; z_`mN!WGD9_1F;{LWv*U)aPo9yAGB+;0`Xn`gNm(kBBQ(WMAp`FDMMKe&m-_5auoG= zg<4CIixeZGqucC-Im{;DgDUTBc#YlCD!`aSlSLqBvPH7QsBNm+>g-%K0<76xfTuc! z@7C^yuuiw;yi|Cq3!i@Wkte@-niqE=LP7%TF8CL&)rJ9C31Set0m$pxGIr}_^JL|nPqhtL@ zpR6nABR@&?e7*3?@Yz=-lz51D-Oo|XPR_x9FqWGPUR}-cRnUF_4`MT(ibt_}@-f-N zzw!=-6I~ZhV@P{zG(1Y2|?qk#%U8(89ha zSr5_aWamOmvpEJkDhjr!?5yWu1bKgJY2Sptxr*;j z_4YMdpG>2yGdk2KohcQQtYr_WE2mo9S=d-hZ1-r+pd!~`Y~jRlCyz&DQ3~HdYu8(l zU9ECvFsSVR2<0g8!M;*CmFm>`Tc(vG6I*2%d$si)0w02z;Wf#55Fvcdn8|2g1Z>F_ z$#xjR%Gs0av|gikC6>fKI)NHm%^Q zg>Co=o3N!P*i?tu!ry*v<+1z0mATxh?i^EXJ-OgA)MTzZ*)%5b#AM@3Io|DH!v?C@uF*_sWFbC(@nfBs?6^vt2=EBH9WmfBa z`VU%r8@`MgL<%imd(wZ%6r=2Hv@^k8O*z%RBV#`JTxic}Ymu8&MMdSP!T1#Yh~t~% zs{}Ku%>Up+V1(I7bB=au%jTAkr503%3mIC79eNV>TZk3D-dEeBVK0Yy+nsTj3@_s* zuO`$jy&kKZo@+<(uO ztI0K(W6#2eSDF4%zFTY1d$2q9Y`(O~tb&pGF?VtncW^FpGVTQ_K44vT65p>_;`_uO zFL3;8+3RTb&^w`^iv9L*uizb<$N>D5w+C4YXN^}OSFu~}2OfI?Y`7Ct(Oa-bVkQ`6 z>@bZx6LE!goW7uV@wbJlT5?DoL>dFR(6KABBBu) zdcwsTSbz_I2M;{ATmGaxs~74VWcXmVAY$v7Luqsoz0yZvHN|$&!AqDy$MDOF?T|QaJF4&y_tVdVNy-G$mkoJ+rc0@*t41GNXbR&#;0r`D{<5| zok;1dTNyxSVvkKYkLs-ZBHqOWj;G zsh0A-$#@yz6Nn4Z^Bx(;g<#hmpoo(Np9Uwbb*|#E=tMKeu!XzwCb5Kbf_~*FdxAcP zCLF3u6mtgbiu36BQdQ9M0T=K{--Ib7V@k02=pJ! z1gg&Hs(KVYy$lGoTQi1Xup62tKg20{feK;wVt}34=J>>in6PJ@5$GT?gib=JN9tpk z>32qNbSwmGXdIu~b9lG;zy_R$(Zyl-3f40--yzUJB(uv@ExFL7wW~9pPOyu>#9p&gLHU zv;BE7_b&VgaX+fZo{<@6{lxa*!yN2(H8H!n&s*8k5+1oE z6gM?1BR92etZ&M$Ry$8-h$^&E$A}4`;zQ(K!y}N-C9k6~=&BFl zD(&<3kOY>W%ZU~t+uLp1U~)2*kNUGqZY4=*xIg% z;84eu7=4J$^5qD)a>k6Dz=xQu9VikLwPMP*ydf**a-&pxwpJL^dHtM@CjY1RP%Bw{ z74V@fXOsC4W**eBQZ-UtDj6HviAW*i$-II%q5t3&#Uyh5j6e^wlH!B7V86BU7caCWHNsBx^$Q&@wo z?VG`0g59bCCqAfd{{%K><>Fbkt>g;tC)Z%V<`mv(&DZ^ip+i94CY-Oi2dh#YxR3qP znM6*=%5!I47hcP3-fz{@Ssmwc*X>95|3UtVO8mj_QYAb%nf?!oAm&#u0+nW9*ULGR z%Q%O=99f;sQS5s?XXzBa%^;lYZ51*fWqSxbv3qSMXFi!d$o-hc@s|-bsKoso-i0c; zuP3j=PPDJ7sFtD9(TbW!YjTV#*U8(g1}fAfmvI7hlvBwr^reU6eBy^oP^na_QbpT^ z_zE{LJ;(Vu*C+4cW-#K;0({sdK3K(2Usey=4k=eYa}V;Q?Je-L6)~&&Of|74dmIkI z{wiXD2lHE~KSbptGIf!UG}4GI)YW7Ts-t9f!K|a*0qU>WC!or-*?%o8W_&wO%MPQM zD|HSC5%ZPoz_7;Y8r7OJ)7~S#5Faweq*HoibOh^LPM7&PyGZRTJsuoTzeZokOoSK_ z-6#4N<|xcc8dbYKc+ zv$(r0xmwR!?TyCVXXlLd=59NctS!%)4e5yG+wmb!L%zcVzMq}Y;Y_Z^Gndy9N`LLs z|B?Ss@jsG`fCWC3GxHENrr;fS@T^cp0Np^#UJ(w=`Ab^A8?{=<>Ur}3<0N6Dlv%_CM> z^lHKr@(RqRG~z2z#X7CC%8e-0q7WhU6O1RKN@K=Wk3-G+m`xu1FtNstO|3hwEt^W- zjjJ@4u&3-yeisSCx>WCvSBrtZDikjCAv&h}&>Oong1QiV7@uPM%Trcx5gxkC>PK05 z?`Kmf#(CLW_}U0wti$d?gU0C}F*~Fe_pmkpYkEwgLnDso>|&?%^i5}GL}#_xoU%Q# z-LdkRa~v~-ofcr{hSAV}=1d|-BtnELxA+kX!txu2@;|1Ee|OMk4pGq-q5_p4Z^HUR zv(lQ(JmM#rkaEeV;&C{mbTwD<5)7tas5cxyuUA#L+fA_eIz!94Di~wLU*SW9PPJ-s(Xna%A+W=>P+qk&^FklNOr^@t&W#wxC$t{eq@tZw z2)!EP3;Var;uC1^YB9(<&?j=vo_@c0p#o)O9L>2JXPA+w2@a?Oa{|BVLzq?3ixMIH zEi`gmkArVyRa4f3H5TV+>XXN{nfo8iV`f~$JQjZkPK~oB?=%-@Wx{AY z*2$Po(z*S-M};F1`kMRC_B_TjMps=cn`YqUHde9DNDq)SVn@K zs?m#~Evw{ju2Roi2BRE^JMh6}LO+N%VPC>h&|xt9wlb7uL(C4_X|B&>MyUhm?{jiO|L8dcfGpqJaaDI z!dftFGv3ZEod2cZxwDPb@^?Cc%2eaYJ*)ujoXGbv45ov~B&Z|V7|xW+vn|1fR@ih? zezw8Vd%{X=@p9os6#TQjHtKFBsuo%Y21 zS41{nhG0b5&V|uma253vq^0P8s^%R2MBsx{@XXnXEMiI6OK8D6na)lHF=8O-5Sl7| z*+WC@S0t15R54HG1}hj*yO5J%m$~c&E!kXYa2<`EB4cUJL_2a4huo>~A7WyjYPYId zgerb5-eKozsLTZt#_Dekq61f^#}o5EWkn7I!_EcU^eMFYL7cta)@EGH`B}BGGs632 zgkg2ZzD}oW$t5=v8tJ&l-%2~LP_~T;s-ZB5$T$Cq3 z;M8a=a!#sI+{n8YVVf#vM6U5P?on2yG6FOAR z=M#wx`VQSW|8v;?GV&su@o}7?H;-4I&tr1PRpt&=>=odhJ?7t2g@_5f^|0*bZ2AjL zK!{Vpi#n|PEwFm)5u$?%)~BafVE|D>FMNbEz=jU^8m)O(XxA1?eISK%JIGu(iTqEF zkVht?2x#HV9=pog^3Fj8`0$VMVRzQtnE7%N5qL#x-|hdgcjoanmg^he3lWleh{!yr zOc63Gb0tz}q%ef^<9RspPz~4sC_3gSle(RkC+pPjIEIsXAc`AlruRQBWl8o_Zf4s)5NTzn%0xq zXRl|cwQFk$*1ZIabH3eeaDg#=5=V1wB7)Zw*k;th|CiQz4+5tqaE2Rsoz>Zo17v@SpIFHW7#XC((vt^n_O@+R%s{Uwk-{qf=rK?WlxyzD}Ez zuN*|=QLfOJzm5hWPT*D_kl{FDlD*&=szx}6H-AQDnq5RV)z0(yg4?_3I{g8h*auyS zitvagyhBfr=1-f)-~NgDu`H*@$VtTq?M&6@+E|ZvWM(4z4nm>9uBe!uWp>n^+MUNv zjfiK)EG(I`zO3IakwBj9Artp-&k2-J0WI($7`MoBJjh`Gb98qbhp>)P+weCG6VvtllesP%Y2B zv?I?B?htluuZU5FW3cw&_}5dwfiWD~o%z_|taVi4(Nnl@7^^p9dpf^Q0U`87A`c*& zGF}+fAMnoiKPQ5^fQA9dt zfhcQ;YT7yB9Iod!mIP8*U(HD zyKI}dL)(;(Xo(f8O06aLg+H81L}3tEAhU4h#ZmBzUOd*7dyW7{4x)GT8!Dwf##{LS z?0KJ@sM?t7bBhpS#813u5m2N$8ByQuZ*TU0`UA+&iBS(bcgH*wt{#4a9ZU_lFVqi$ zrAKW|=tS8MrNW#Yj#`z`K2@kAR~j9hR!eom7J`Fkks<4oM_xnUyeHpFJq&kzZN=(i zdwb;Dk-<=tEhgJu074Am(VifZcqT&BV%4h41wK^gYMNrtp3!f;*cP6)9TXm6?-7eI zE*Y6m?Mr{$ys7x$=b?WU*$*QaMqsn}U~bZVb2wI`rA2L_)mzpwOvc;3BxUZVW9g!X z^Tu8IVC+eDAF&wm!3lxkRT-tUZgDjGv~>*jW~ftZFXPSd0Q(MRVr^r1=T7{e@o1hf zE~}&KD$PptG zv){q{f2aPr1dP8j)>@N2y*@Us-i(uVn{qfsvu?tN9x#Oy@COF*yBk>0nrF4<=m67b z$G=T^wG)6pOm$Z(PQAzNPhbw;!ccbS`WU}}4nJ}`A2?Eic!ZVLf7(3qo`@Pm1uWez z??%{JS?tYun$`i>eHGPDdZFS&>{(6Oubs_jcbCex5xbPDhhA;;V|3%Y8j270VuqKh zrz&sIDgrs|;It+n`k*7iDWf&owWmT#-t7cVr*E1|JBD)`Pt?n>n!#ClYCx!%S3Q^4 z$QN9<(G#;7zK0m3&ta_6+9~&3RVx~E&0?YI)ZPxHGe_E0KDXjd*Tb!v@4 zI6Y?)Xy8N_`!Q68G`l;DPfrwcjaIrxtwwZO#0vXxrg5y{KB53BMY*4TfaR!YyOq7& zZmvh!;a9;$X0kpjBwe3=P}D$0@2nM+e(vKyf?GM8nljGSafa^;RAejyzs_ep)>aIL z+g-%9UzxDLF6&jiW)`2wM9@=RhC9I~mEFFKfn_5Q)^w6p3QRj6P5TW z%R3e2zI;R_j71c|(qX^v@gO?kHQ zK&ShvmtY^I2qQj3L{G0o{Q-4g)PB(#thJ7s2xIPDv5S5wVmAmhFpJ?UA`4>7?nLn6 z|4)>$f=CSrXTI3&V7xInL_^-a1_)twhMK$8S=Axfy&V%`f&T_J7?TjSj41eO>o-IM zt4NLN8Kd39gravLFh!J5L#jVaz&xuv=h^&wHP$;j<@lW{GX)E|g}v3i`8x2yj_HY5 zpmj)2vlk(ZScaG6=MXVUm8Bw{8CrV!?c#&;s;r-OzRMN7uevzqZo~x-yXA~H=-cT5 z`AMJ5o_#Aj{fpR)I`p5WL;n3f_q;-F!e(ssNp|^AZB$`l67P0C*Q4gO{-9Vjf~%X% z_1y&Dc$~Anl^FcH*rUpHk8+iEl6z%m^8EAoKV!eTJtXr$16AKEMl0DX)GU_*5*x_r{7(&sn=|3QT4n_>?}Agh2J)f3~Wh2=XN{3DRT zIe{O84aM;^>T#Y1;7G(YI)f_B!Jn#}*J<7bK#2k3h%AgfsFBIY;zMLP&D7YjDucKPYjdi% zdWy5LyNj^dW4Pj|?s9r*)N=S48++9|>kmH}%R4_v=fe)H=8M$T^dk)0=-sE_#SW}= z8!^I7@CawmxpL>|U4bQgP1^cN{2sykO=bN{IG38w_D88b`!26`R_Fc6{+&254#YNd zBg3--G*t0#fk{{yCFh&M70ic$JO{=&x$7&=v>Pv@WWtAnSRJyM&c+rGx zgIX>|C40gp>cRwk{sACEMXY_F%r4HQy8m{ntA5HU3JNqMKhc#}90TW2`F1#&%v118 zTERK$z*W@8ECM>@;lp0R15Xwq_C=Ah7zlA73_{&FV{&rzh*rt`V>*mEPP?krdsN|3 z4M&-TYR~q1Ma6YHEZ4pUzr~(QWHAaF-)1LXbYnNR-q8KDcS48At=YvDlW{^B#tgd0 z7;Hwn8Ob-eAGRPrQBm7GgVoU<2Z395V5sHLkjISQwc?p_m#7kmIw_H_4Ud@dlt0MQ z?NY&dSM58J?88tV+-f=GXrZ}$nF?3?X-jYQ|geX(yR za}~_|N{_}{aGFN zvfoJ+=uoFK3hH;-Y@BMYX3xxJ4&YYg*{pOlrr94`QK!v#eqe*PrJt#wl300z8NoZbK4G@`pYo(%UJlK)3RjVdd!H8IdcoY7W@m3K+lnjN; zzU-3ne`BTN6DPlf@4X7@cfb|qvR}@^Y96L`@L?GC5@LX%x^gM@q573sOCygLV8_P& zqk}ba!Tq@^b2c#}LxfP9(wZWblboh;GFNOT%$}L0qJs)op{p^3&uR)QSOh{nizo3Z zoI8UxRlwrhn@hs2f5OJU#I`=cu3loD>xmn#z*AUBykG_X#(dssJgd`lx{AM6;71sd z{D4WYB(*VP*7ps37H9MSaWMbCn7?n$r&l4fc4z_0hvhJ`p&z3=CQNpaKlPqgtr|!wtH`eB;2SNmoaMz1Wi7`!g zy->5ai^(&~DrE6`-2bhNR>Q_9glxu6ZPCf7 zNHd;i)sNMIW@63B+E?Nc-KlEQidn%&h&5#95wkONj8mG&aAx+U z?CW|d=fgAnR0AKv2g))BQPx_hsl30_EjM62A7DA!pt_6Bs;Gqxm1YOdj}_+6{Dy@( zU2hu}yCKy(zC>i=S=hpS&N7})dJOomfH>nLcoRk*zD(T12&cN&)^Og>p~9_``P8z% zh&3C3b@ldboy}EVk*?mT@}=PC-7u?d@R!e1w?!yk?+>r}jqHN;O!+c}lMfMf5zSLw zL|1IS6$s~Kjc-}?7kCqIr~2*ZK$>sp?JUWaHNYE@YxGW@#X0m|OoTm52OaFvnnTCM zWpIjqcq+Z{KaR@7hyMZ}a?rh3)4@1Ib!;OWnapwr|5YdM2rS155sk4yvx-r95Or0R z;1#M$*!`59lx^(NSrQ&vYfR)d?-4OIcRwqJ?DKHegc`Qy)FZcM*F~U%++6Sdl(g?g z^`HE~?1O!op5J;Yqm)&+4!bLSZ*4!i8O>GbZ|KKF#fDyndva7ziVu<5jNS`ttBtXC zg3;&=^vAbwH8KGwT&WYO{=7QVp|$RgtCEX~uaENY!?5ak@a!uS6HqI0DyU*rg!4l~ zA;%grYr^blwYNPxZ*LTcV(+t>?UQ-5O+rBxZ;Yl!y@qujeR!QUT2AJPX;)jY{Liq# zeb`xR6RkUxJ@XJE|25$e)*UO@mbPd*$gL`nY@g#taSlZO^;%W zdiYKa|B&;(%HJFD6dvb@e(eW&)?MJ^O`zC#@N-N;wM)3hv%w4_lurM-0_1rRtl5r_ z@-1kPpZ6~cHtfdcAUk>1+Gnt+FX@p<#1F!o8OxsBv#U?Oq6G-z3 zafd=&%|Se)4OVa5VG!QMaPZ+0_`}uU!VQ_5=-9jojJS-Rjk7t1!Z7|T^Z47pXdmpo z0TyO$!y(Bo>?889a>mL?dxNzo=hiw;Pk-N-pm|06tese=@?#Co;^D2DSgC9ydZEml zM)ZBp?yMiQ(&C#sbG;JJwxWKWVLjRUy`3ho-B&?bd_Y$D|hH z6#hPvl?A?fJ>rAhMn%v5tmXrqX+@Lx^BsJrFxFm~ z)tSX?1}9KMzd5L;!u57|jPtZar%fsHpq^X~SXZ9NLJOi4$E0d()#NUMKU@xfxHdC4 zGe5Hc6^L8t?4Co9_Y}IoFU-S-{|f60VdZ+`<|gW5KkecCk!|S6ZTC@UUs+qIE$Qv6 z-sChYr^;02mbaZb;RKqh|A7!HGi9}3{g#UoRv~Gl?&uLI>;yxxD%+auP*;ksEISh1 zwL{HlXv)E<9IvnA#NhBQLSfR#X-vg23K810#z3NTyAjV0KO){U>rv=S80l*UcF9BZ zHmu?Zm6wyiC_Aa`u&~ZpwSBeeXW(5}(dfLlyZLcelhOW{`1ZOd@8sXd@iP|SAmy)eS6CaLeRcG6+=GuHIy$p_0`W@cecuYQ*-K}|`GuTM z&r9rjoilxchvD>a=jfS%c%Acqn)pr$*h5vU-5jO3W+i3$%&#yPt3Ors-@yB-T(6h% zU5dV1>rffAYmfJE0+rZjgAe19O3ZA~;a1chZbuttdFCJdECDBGWv;t!(3S)hb< ziK^(>aoGV33|!Sii>e2E&GpUt^1O5LcdmoS+z(@U3tRg+r)Y}W)y2Zv5aa7djq(}9 z@lT=Fs6R&^qID+{)o+U(*8GD_RLJ~*y{-lERFS?3i*`PaRaUR1V=Gp=jUV-Kp8|>2 zC3G;dxs*@A>05S{UC-@1`AlZ=*J!ZrJk~Z7?6RMGJv+aXG`4XL=XgBFdN*^%_wg}) z$uT-v0q>$N2vG-iQwQcyIHSt-OW;EIGaI?>EYL5LZxMA+2d0>23-C?`p?@)!yv0n= zVPR%5n6Nx^5BhQsW**{ab>=Sk#NXc3|BDYm#ksmzTx%?@7S?qT7S#+y@K6E5ssQ)< z=wZ?a7A1@`*i&r`z|K!S45!&;`9r8e>th%zjPJO=v$Z|u3*yXv+wCJZo-gAbgk7GQ zJdE@Bo>?y>LRiORrJs|jj!M2x)AZh2jkES*j(5~rJ2xv-XhYpTszhZ!MkZw*ktZ~s zVvn~t5oIx-DbyEyOG5WjaIG8B=qy1?R>ai(H+4Z{XX$gYWw%`14=! z?-m%vN}?0DaX1NUF({$sSl6r$w};9J5uLP~T}?Nuuw&Mz8Klm9&Z1UCa0260-mvCD zMb9CuXa?A`0*iePOma4MNo=bY)_*wh|3UOakAZWKCPp_DoH&zXC_g9Qvv*|Q?a0vv zB&otq{T6n3Cy~~v_(Jno?Ftx#x-^@)k{7T|XZopb_hjM@&hEU6t6K;yM5I;c_)PsF)ggJ2LB5N()E)L}lFa?8-2d@!>v^LXaz%;wB9 znJ4n}C;tm{z>y=jc`){GOusRfrINE%i24|II|QfIb2npPRfAR*vC7bEtee<`=#a$+ zRp!-=*1M>O?M3e1`oG9Lx_4)}viVfIrbB7Yjz=fiTBT^ckTF4z3EZ-~_!MkP9m=d~ zoV6GBp2u8GV{YPf(_zYHsJTI3pR>1n>fDy`dx^gTQI>sV4m@a%e!V=Th*L>nU-<~WT# z#LS%NX7|d}U+K-~5pz#fs<00|{0ouL*n_nxJ$T-!tjb!2C0O4RaPRlX@XdqSA^w@1wDzfyDD<6UVdfb|Qv(K;{>0^(nZ}0=yw71-t8ueQHN; zWUr6uUC(m+aqhdHXNrBQUthx-qT}>d@WJVLx3VVZUrmJlO-ivEd4=5{_wc%yrtuKx z+zKD~gwN_1;txg}E3l4YtmHGU#7gdsypsz58~Mx3=nwc6yFrKIu!cJLAcqsjY>t0n zP1Ba8Ksp%#)etGOuQ~WnKXz*5~nu{{kTjU{g(D3f4Hb;@jAm z-|o%U09a`daR(WMHW|A1_6ddlwUtPX;rI4RdFWrL8*c<4(7`-scok8@9CZ+S7e)m9 zzMH$S_CcPlr+*fQ5z3K7-$KFlV!mk;u~EAr2l8xnYO|_v#vkJSoyQrIcVit+z^Tcj z+P!%TajgY^ncL9ksl%fY9g)`bPj=k+hlUfcsR zr~>y0`|Ng5A>#4B@b6A+>QT_cZ}>wX#cG~?1K6UbtW&1!{kHPqG!F4WB}oFo7)!5;JlK4fp*kIJLkSbQsb9#w8U7mGO`WH^Ug z>NLtF&cRnd9X39gcz%EEsv#El0~v}le-BwC30Riq~-D+1w<1zcKXF*! z@HV*cG#C`o&wKggHoE<{&a5vA-v;e12w zc2s|*9gmrLFqfddOx3i5YnRTo)B;tca^{Rj^nB@|*gGBS`GF2rTd3KpMv*LA-$M23 zn17*nF(Dn3_^z2}w*pZeN~^uirW#?;*D)Rv^SmRkBAYQ1V!f33VD7@&C_6Wti4pOM zh?3Mv49ESs1=kb!Fpzf|o3eCP{*33=RdDFp9M|&A4{Hc~SdV=^N(Aj)zTd{@^HcG& zoA317V1|ltD$I%$D|ywG?6pnQw@9Pdf44zZ}tw>|04Iu#_of;tl-lUdpE(#J|nwPH*tjnS*co;b@7V& za0Mg5x|87z_JDWf_khHh#*@LAjk^6}@L^qMBfMb?9OCKBBg7*1+C2XDFDO9WWIeu* z=FRkM^~FO+r31EN-%{iowCbo@w$f4GIO?$N`#uyat(J=r;)6En_uA~H*buc3*8Hhx zB4e;SLXRbCv5Zb0&wlDYDtj0XbMOew6qU)WD7+Z{V13@H$%5?QY{dJB4z+mih(9=y zvut7!2c(#(s@9<+r^Wq z-}CG7sof9nfDt&yMh|%%-}U!W-J(6rCGens=6i3YqE$#wvj?x`TYoFIq$<4;4K-!r z5c7;p4&};@=h}{B6~h9i0l=UCJ>5Ml^(|Yj+T_ zKUXvij&vy*&bh=VSL0DU&hZ#H@cMa8#-b?jj`L91tkVV zJ)!$=)E2ejJ8DmcecyITs*0*6WOZ!RN!Z2)V-}UlwxJ3cQ)fg5591A;I9q6%=}X5< zh+y054#*t>AJjy!_s6+wGV}AXEN6Hh0Sk!PH`PvhK# z2&%L7A@*<*=+U1prlw#@K|G9)*sHgI3ah!YyTG%j*u9_O*vKI^SoN@$M^|FM%Mv@V zdrZx3=XT8J6A=}RK=`lPc+0tU9T?(_tZP7ro52Preu*aw)4N#T9a+-stK=<@@P1An z-U{Y^lT(rv_5{;Th9Mlxr&|Ml)SD>ECDc#PWa7nivYMx+%#2yiVYxYs`Q$6^PnnA~ z#3{{iF3sGThYx#&4;eHdim~5XRb=&}s&U3BWfIYaVWiAVL(Hqyn=p26t|2>f#Ymw$ za&2rb@S!UHMNGNV!%$UPm80lsh;C^$A7XB==Zn4zBXy^-gNFJ;OwY>lhsk`$E(Iy< zUb0R~1|Ilet~Kx>m_r%ZP}F{h?wl3Z#u!8_D;+|y!e~XHgB)I#W3(h@f?4MslQPv# zbB>o8$I*#LUxQU%0|&73S$r@n;m>luYCNnX9|-2QOuQ(v7LoDsvvbaR7gly6C~^r=5F?1@7$R@D z6Bhn$np$n|Qw?_5!@!8niA6Y>b}$HWCRWrB+-T3ynQCLF*7jj1ZUtX2i*NrkvDKYe z<$BJ$0wl0j@!5oK>gtOQ>)=YU%in>0I|obOB8v|41|tl2@RL5~qE1NFYU6^&AFNrNl(@slWUt3?F7v8J6k|TU%K0b~8I0)P(6`vgdpwztXCt`u z7N4K>SVmdPa}C8Z-+~dl`9zx#dpv{chQW9dDpYplN`~SsO-z%rZlcrT5|BZk>0H>u zZlnT$Ni>`8PNDy|{eQp%A^@g{gknpYHAwFm!dPt!gwjX>34* z$f_NR4}L@C4k}ZJPPKM!?Nn1<>s-q$gK(Br=*UK|l-ZC_c`#GqRJzcp43#-6nax{7 zq%Num?No}qfjR<4!c{C90)`A^hc|u~aSic7W$nO((qNs~;7o7vq8v3D`aP9XZAQc_ zt>!wA*XVgf95w9mV6NVnh#3rhj8Mc>uc1FH(-*LQ(*7)!k>KM1QI1 zU`3RDV%9&KU5JXT?RXZUuJ&)(i@Cz+b*jJ$T7w41v!@Qgat7gN90x0R{!A^RhheyTBg?C#EnRY?#Z>6p+CftTBn%Ai^Es!zzyDR6<-$Mq>i^ zUk%&X3j_IEKQ+*y2;Rm1=@1{vVc)Tb+P!2vG7us=Z^lXY>dvY>YyMu0aJr_|j7I!w zVsqA48-a+pgZx3y-pZa^-Lm!8d5Q?{%H#FXRzv};@v~rU~1}%n8Cid5Ib=W_H@u<78tRB{d^E#Pyuva<1v(6j`zMOa3sH>pg|fC%WUa=wR%j8Hi<0~ zuM;cZ#kM}=J*~U=3igmg9HA(lP1#f-&;sA#7?^o){Py15>doKnKmxVb4op#smi*lw zM$wvDf+o}y96-hOS0K)__${mXc^p)Txqe$f2rD1VY#LQC$C1ScGnb1%2$gh0$zEhI zPNSBVQ@Q01#&XSwJVtC`3tZs?xWO(^LA}Ud!3O&;4q|QALCAeNu%=3xU&sbk2Ehgr zU%iO=HW$DntlH=gUW~@>XTTM%i2!mfdslwvlnGgf8ixA0pD(hgMCFPVqYXFJuo_uxk$Ev2)=1 zeZV6X>W$xt5mEb~f1&n%iG&YX?%*})Nkk8sdKKnAqg%vkPkYKjQ^qWaIan*p_4Mrt zw=+#OdUYMG1T?RCBS>&P$1T{%N{;zhyET^TMJ|Suzl5C@NjZeNL;*@;uRmi4+u4O5 z=GpGMDpcCZsUn1ZB`RcDQ`whybGkK4lkzTSS`6lS)-dbWIGyu3c*7@n75~E0 z#D{NEbg}}~QMIsi=hL;pcj(Gq+lIZ^j>wMuZpvdt==3fMgRhGPw&iHeb>sD*iSzmL(1<@h6gS;Vhvdw4CW3|?yTdyrT ztm7O{bFQ~p@#n-#euVGXuT?Phj8ui!I9aa_YjO5fN1~DDGwb6g4FL@iKD6e0teuJv)i`ACT3g_Q z`GZ3^XBS@UE1fLm)D`1@R!R=W{;V#x>(3r2RTe@s%It;OhL`iVe8S$Q z2P!#fuT0_&&i@PjJ2`_0P!WWv&YGe+BI>6?`6?=@#E7Vpl8?j$&p=17y*uxx&ifef zAuK_^T5sF^a3xkT4eYWy;u0~ zokN7ftc4XFav`ruY!Lmd*Rpr5AI}-b3antZGvaZ)^&N>bd}-JNh|~ntcp@IGwP*`Ll}Sj2i(f&quI&~;?7z63xa4I#_jLTLQ#l6a;lo}cpE!{}A%sj^)mfu;PMXQi-?axj zJ0Zcyof>e_b(o!_*$w{NoSnQ@vcqa%MAR%AXUk>}8}f|K*qT*?Cvu1lLvuMnR07!H z5Zpm@P;E*7+}x&GO3ro}jV+xBLg~-wUsxOEd&U&4@GR85%l2`K4wYaGYGoQ1u>yM! zYp9ZY+rBcp(Ib8tOvg$~^SMWIwbmLqXZuR_MRRgS+l|7nz*1K6{htAXUC1i0#O|$i zegwAgbB?p9>+$U_2}6D#4_@}LICa?!(Wp_~nl(A` zqBlQ>^C>px-&2x*F$rs*ivEj;ARb%^B3z!(VRF)xn?dZsIoN~1s24|Fb-IjEawhv>w#od zdgy9C&gA(+_!OP0t6H8t+(v4GIRuYUnW8;tH~>^sY2J*gS=6Uf&5*H%oXoFa!q-G0 zRG;;Q zaFMNWh8Kxb>Q~sA^(y~b!?6JlVI7kdR8}#l!GB9aJtGfZo9rR(wSG)=Fkj&e^2hlU zUf@h`@Oh~F@F^ZfsOX9hYEl~4ZOoeG4n2u6s9)U^c5^sP;sjJ@N5dR01rx3&8zDyM zZA|38@vw)>Q-)#&{NZ{ygPF|RL5G`op6XFf>~%h8gFJlLOMKupbfxBE&0-j()bBTEp`UXV-+yZ+?@GvU7jZi4 z{jOu3=YwxfjGBZGa0~YHGCN~2_QM+N+dr`zJMrGAo;&P3j#->f#riH_u=S}?X&SzT zahuSy=>R&M0FH)=!Xn<)D$Tc3&Tk)fT=iOi$JRgM{hW7UuamsM9ajbD!|>!Q!rb%Y zQGA6xewcEtc8TnUX;g-3sPuRQM@#l?u}m$uk2%xZ*zi9&LZx9F`12~Z{T#>BL_Y54 zx^GXugw>EYbHz8qCgyV6i5(v1b8b&qYChBMwMU6Om@R!J;ln>!iwN;0{NX43qJ6lQ zzy~MhSewzC$_-~|oxr}|g}+W9E;*72r99#4l&_q^Ut_2VwLf(d_sS)v@z`wYA#NsX zu@H2)ikL%xK8u4v%^F0FtLNdvUg1MN>Z1yzSA>f7e&jlhR+fNCIE6R5oz<7K{fV9n>oBr?TJnWJfEvlCS7|DX z4)%aY&4yTEzh}e*?J==?)vUol-q{XLRUwTrL|>NrtmgErfS3fz#hkD4Fo-#L=MQ6F z`LQ==HS8i*FFu$Rv?6E$)-#i979ZLr4AoDvMoWA!i(&`8eIPyfq^NTwMCy-Pymyir=9g;`Q|NN@5hxW9MpY+I=yPPvb^# zAr7OGW-Vk7xAN&M0TH8%!Y?7h;<*5@S!`X z&>7aypQ?@H!HE-z9h{Z$VNxzrxExd%0XG;yEMi=WTpF900#2wsc>`X?^&rM5&d`Rl zR>AL5eWqa^KKyBXi0Y_f#2(}j`=o3}5m-dggb~IogF%EggKB81CB_u2n3)$doXvCE zci8n0AKHAOxk7c({O0?uSKHeBMRu;e)eb5Q?a`^0KLkEFh0?6%Ww3`!IVQ1#p2Vhe|LWJqg)DC3ryebn7h`Rj~3}bTDQbT^80`>X*nDLM6g~tAP&oYRDeU za@r%JO0Rt(r-BgHUW{Z-)5v1DJ1ztl+&fjXzXCtWny%rjb23qgo3Wpl+1K-9o1bA1 zo5*XZ(`bK!c6AF(WF%bZXg;w(&@75tuVue_OVG)g8!A&@irp>7hku0KcLzMc8fsOO zS|+ccLbB=CL7y{vy8rCfLXG_zr3|{g!h8Y`X~@ zLwq#YKLW+)6|QWKQu{v!kC+p z_%>LZJVcFZy$dT7%~&|uLI&Y99A_wq6M7iN9;_M~3wu9<_p}mAwMvy_LzmW!i8`3! z6It(2j=%Ndjj_g#Tq{|=-h+Kw=4P6*wmP7N2oWloH91ds7f#=b?2VdwYIs`RmyiWjeoK)kCThZY~y!LO{ZS`B4;1jgtrv=f4!kHhy4XySm z7{W&&#O@rYMdf6Ef&qMlZ9BKZj_JpUAGn9V2`~7b2x@)Kqt>I*%*cFNvsjSV<|AH_ zFB4kV_Ezp7#_=vZ=ylGune#jdLO97&MzjbtFj^V>K_xxwNzGhXHEnOo!@S~2-dXNq zO_YI$0KkhziisY0bv>?D!TbYGM0E9HQb| z+gD4@N24nvYOeK({M-3Js%zVO615M`;~kK!UuC<~;X7t3rtxFvqS=4-lSc3ytG#3z z7x0Xk+;1ho957@CENCRYk#%8bgLw8cP2&~)K>>C8#D_h33p>%x13RtDxPuvy`(X#K zv*Z4RS72Vmtb=t6ZL#gf-17_et_QOg+ckIiDJSs2N2ezN~D{2mUYP$91$2yq6_I2VlYI1k*Ij4rL!)>C=bvBXwtki|U!+-bvK zXQs#hqI4!icEzIuL6!_v!pU^Pgrw#Ru)XL z@Aq2mP<6FYOYSurWl{Ogc!1o-YD#fJrP?{Hyg#q##V6xz+mWo?$$+Za4CIkxKt}sw z^%{=h86wEJ+;ebV;RnS%)<7ZoV^2^H+xx$ov=CHKjeZgB`fYb1vV&7JwZ4E!6(Pllf^LjtQf2e>z?$qqaDas+5gAmoR z))LrlAsEE3AcT6d`U4+>LeB9FHljl9!(fs+Qg(3%e~8X^bDb(dSQE8|HCgpw=EBIs z$Dl)~WE6n;?3cKM=-|9ws~^ONqriq^i94Kz^;^|6ip<5RRNZ7{)IhMoiqJlIAE)s5 z888LwrR?jTPG)lfIgE=ykRwt=#ah-DJo_||WeShy8UEgV0?z0)D!D&=p*UQk5b?_J zJB(3Q#Io$9(7xroPIED{Y5zn_w$b;9im4N@pkC~Ks!YX%Y7)!5YwRGCsd#qdly;ZvXB1DkW~G;U zF?D%{_@Eb39a}W^XV%qj)5syJb!VsGJIb35xRwCOu?9;>`sv7YEG&t^64KtGB{ zRi03B;%e;dA*}ozEc83LgXm!OP&4efdD{68#hxn>W7x_5Y~AyUTsHp%(Lg74JIm%? zjt4*or`>#lZGHg>6t@HF@Gw7t2_S9hvKrXYnF73Dtfu|C;uiiUjC zRW<9&p|w~K(J|T6QT(OF4@kSLk63Z3vW&VA_D>tDbn2!NPW=%l!dNkBOwSCb$8e6b z;M617d7XN#Qq(D&RW-(#y=`|_Oy7JXvYytn9lC5uV6RxRjgL_ zq_&K&wyMD@uBZSJi$WnMCUdD`75%PJw;7QKv&mh-7b`=YiS0b_d$B@Q8jUBG#+vI8 z!E1m`HwGuvU98FXf4|IUL^>W|zgDwJrG51-@8QS#40Ew6II6SqBMhW8J9a*--t5G$ zIc30tS}6{p*MB6I**bX{)v(zzL@S-6^93~%pYi((Ug4D9*FcC@sEUxCJO&1>h9}JX z4}7?lbu8h1)uywa+N|bQJd=+=8Ylh!oMUyj`3gBhHS!8o`Rz1LS8_=5cFbt1Pcekr zCUve(!mI!XR#k@Ife%I{;+~k)tv1AASdR0xj|L}<6NVB~Yi`LP`hyQq zIeje8aO$o+!Y&CT^38McLG`rgyD<6?s`1f}Wk;3@jOSo|BS4DNIGeQ6mIa868}W4V(8cD_RVTw7a1aF~NLTzG^lVI8UR*>bqf+J+QqN z*r?s72Xgj(@i3g*`E@$J1SkFp57>dVzrnkzR{IDXVL3>4LpoHMQy1eO;FG;r)`V`2I0l>V0fx23Z)i=d z%_~2R#fU5F&;Zi7{`c2{vjT!})ejzjXgr$=2CdW&y34GBy!b)fGfgxl*rQ9b0E^ zIs+$E-Hr7-K}AK@lT!>r25}O%hk_c;?KPfZenf={RjT9;#veooHEdL}bng$XTPKD) zA4i0+&f2bSa}&|Y9W#5Po7=8)RpeCIl=XXCy~*e~H{L2o@@fY1WA(EuHe;i1tUaCm z$Wlxq?qFBEKJ*fj1FP`~Vxx4<9cL?>EX{kHeh43N#;MeUE|$P6@Vu>}D{_{d*bMa6j1K zj2nBW^TRXB@EU6X8h|o(j{TNX2ox}jp}OnQX(zVlp&7Lkbzmmt*yr=%z5Kx83~%T3 ze#~k@FY*my3ifoWSZUp)wNk3g*_mQiGgP1=Drv9gH!z3ab8_G$g;}}X7Ik?aCwtY& zMTZ&*`1f&Sa2ll z>Oij7I*`M7)zQQ(&Lnp@9up@i5V_KXw*FCTnF~t0bvv0+b?pR^Wl{+!lOFsc*QCndM$LXBG zLyPozVX;pBJSw4s*r0xH79Z5CalaO;oahx3Fe-p))?^nJ}L&oKMS_FX+)k z#kBSx8q_MiM1D2mCgw`y8fI0@?x^nI3`;vL7GY)gVSO(V(=%$|#9i%M^&~r~YJwF- z5_i~$HR}JXo9l`efL3><4$o)77QG4;;jICvLOj1t;_!!Jo0Ztbi{eMrBj(TwwyqXk zKWwQB`?LL8Mj?uWBKg4xC*u7GMu-rfvK|#1oOri|=z^Y&xr-Y>sCm4*o!n+Mom%k> z>v!T+baJa>pC3-LALvw(^E)j|bf^JVRO7ckhEoC6t~nB4A|~o~1Oqx@DAcmEo6?u<+`R(*xb!+?Mp_~JDT$zUtdx3Zb;0WchBrAjL zbF9SQ)>CHjA*(B8CO~}9m*|9*wgeqwPqgbwy`|{tjJgQ>udHM;I-y#1dtRZ(ZG2KM zUd^b;49Ms8*NsZZ-c`L-c}{gpz4+ezR?Dti;tw(ib+2PGgc>#xQ#4{}98wgp@1k5{ zLPkw$vTj#y6_qF<$2V4L22+l2WU~Rcw0YwqQ5)*4T&H2GWF?b{S-QPhjb4t5IY+~M z)MR#!_Z+an>Zcp=3XbHA`VHB-il_{WNT^j;YTtV0c4LJ)c+3cQBF{0r&nd8nOR@6> z*q6P~8&c-t3wCd7o=PV6U>{~fth*|^d*RGiu=o4fv7LIULbR1zs?I$G^M8q`<*uB4 z5~_rEAIzgJuXomcLoBiq`>d0;0v}FfpX~>W@4&9x2qdb^dz6H?Xlwa1zq9}U08)Jk zLIgg%oa#GP!J_7Z4ysUEHyL>gb@4Y6$uxTMaf&>APrbu$Ir;F2^ezqr4eUd&#g$ZI zr&m?7CP!Voo5NrR9q}GICSRfzc%?ptkyCw<8eoa@f9&#X!*iVz78T<5!&L-(>_c2uE}YSNxFiVmWZ5r@#l z6_HfsYR`43EPEbYsXu4z!ac?_&6SuJIRyqXne!~dzExRz0_$?#?sqvc-MSohWDYQ< zMpeRc3lT$jooC+0?yWB7T)c`k95H)awf#`TtjBBi`1tPIjj*bwU_?Ev&7P=MiKP#K zr}xL6I`g*-!&z1bP@Uk^?}CX%h!9_c4*X3492Rs8zhb>NU@>{uf!F zInAht`VpK{-Ksd}tOPF9;5Z0uD8;pu=kJ=lV{O(J^LbUJXwL0sU_kTSm`GKgulld} zU>90f_=0#*g>{w&5uA^akF1M0RF3QF2rIHP+`6hsu!p?-#h(W~wP{P?RhShlgJo6a zcHvzA!VE?+9xacx8Gq2Stca8yJAX6mK#j>peD{s-?U|pckI*OW`R!p2Mh#S$JOZSM zX&G_=f3$Gb?zM6EQ@sVF305w;Piu*4*BYS|Ppo|qZ+wl1w?qfyq=%*zg^rvIq7T{)kYM=pop((@6Nlkx^oD>RkzZ!5FgBMXw&9EdlMx& zmD^S{^k&z$|NJCAi9iSa3-Q5tXhdh*^6KMw%|!UdbfS+#!2=^J;%Z-Rt9~&QuVn`N zzgh|RC44X=`7fe+89a$nSWqSGpeoi-iSNF()4ziqZ&QbGJD!CaRtsSr>ODQiu?6<< zLry{1gHtW*Vo_RAL^zE&SVM6*7E~9EFuU0eFa8Ah!|~w5QE>U@@Qd2KTP1d6F~VN3 z{6s6ihYMISrFZcH7_cU>mtYV2L`Gwr78G&G*I3_9(B$7_Kb(JMX0r%rV`lS!v>LCZ zXo{^=#P;=o>VXhuahvcv4sRI`slcnuh#EyX6m;kT+iB0*_DL0=dO+XuiKs`F;kp~Z zgZh)#oJcjLv%Ia0xIK?Q{CR+&elkD4ggP<%Vo_ztWSH9w|3YOc{dhYU?0Oan+>4zu zWw)UmTCE88=qA{x2;m`5)@Sd*Ju(HABeX&7N>wVogP6n<)~=$oxMRN2c%#bMdKk{% zu?M0XTtp3AV-I_(AHuT`A;bs$n9#R#&sGV>xM~gT-{;xs={mDhyu^#@prLchAW_wx{M{eh9txK9WgW&qvK8B|#H>Vg zX?F!OPV1?DNbLU1F(XR+nGzJek5oa*o zr$=v1lJUUfK!?8M3A*P#q5_sXb`>nM1XgUX*DhAHBV{jM;62u})_HgqMka5A_t>eq zK6PT*Yw-qa*a1F7-NQHJE`Ep66aj1Y0})EFo|2rk5Xe)6YZ3vigs29OkR=&qXb4Y` z>ojBy<#@*aysA9UXb89H20C=-nZJVy-?FZ+`LP?+XiL@f_(^0nuOz3r5M}$jGAq*0 zUYJMTQ~&q`?Bld#G% z#Ti?O2^mHewD9b_3upN0b!hGOQdqqZ({im|^gLO7Q0L7G%`V*Mp&w!n(HUMc2rG|N zZWSRSo?vIT)zj8oS7W_;BTnOus_&Tn*?<*WFV%=w##CTe9Ea>dgs?i}RQ}E8QLOst zl~5|Ox-CI1dp4aBdNQ}$@)_8}5$F)!g_>Eaew(+kB62t^<5uiv9ejK$RUT*YPF9Va z1iCoM_A;#eR(9YO{49r~uZ0V2B@Xx{e!o-Y_UC)QKbEyG4EiUK!A!!t)F9l2e=`$& zm<#iG0yh66ma;YZCLgh5oA=nCR~O=^1bep1_v+sFAZlmlv>v=YoOVO?02_|uus5m= zC=%0e2 zdo>FtL@3C0?90BNgMCLAhV@eAIgF$ltu#7O9~N+M@-5189s6<(r9e982U=y>9uz4^ z490HL@4-Uj8dZ6IYoeRZ9vw#?_2$4aI@ZTc% z9p!RSK=yDbKlVLY@f7$Vi>{6xhT4N_GU9{TKYrr*qJ*^v!6gpIcCD3; zncikOj6a&Ca8_5SHmk6&&Ryg;wRf3@C?QTbzcY|V@5C80t+CaLFo^1$Rpmx4+B~bV z2yvn|*JR!JA)Mb1&8USkb`q6a<}U2EIth*-(s_svPR)&JgW_3R9v=w{=$6h{BjKeH znQX6>Rol+PGw0I_mT)?VFdg=wzS`Z`(+s?f;k;ffvMMb4zQl*+*xX{Qel_;zEQk+4 zh#yj9Pv2Tam~X)b`zg19Aa{c)*OKwLhN$Lh82{HfMU&0Ekt!Dd#oymzJ60X+kFQ{@ z!(rG}caWeDzIks@!OVavQZkC3+}8)32xd_mWYF6`5dI)*DTH6Y3vb~K5WvcZ`^ern zXVYm|)=FCMp!V!Gp7A<|{6T!MYVsSd!T4lOiVr|tIez0FDTb^dOG|I>);QIFqF(A_zu;1q4ZjAQYUhLEcmO)ti5Jc>JE4Xe<( zzmH=jJYsLGBJa7`Pays8!n08CzEHvkyE4phR^Xc-)3EG#@Y`>dk2Yq+q8dNeGVh60 znvJklz#}Rjt%`1seQV{$BV`TdCEeRwV6pNNdAL?@zQgKB*@3YIHCl{Z24-mcD#QHe z^8*un#At+PZ^Js}4>ftN9#2dJ^EI-R2CO!Ez*V9nOM_j3XB^6I*k7rAkbpGx;c%XvdXR$x(&yHP-Mxw!eilZGdGgOc4#|VJv0u zei!>I!(OinwY?H{Lw%Y&l;T*q-P0|=f-Z1}W7%PkhoM`q>NnK`!IeupCy{ zj_l@8>afSqxp^u5S=ZoK+)BJ*89Mj+7AyI85trd=q7-%q!-F7|p{tA2VGVFQ^F^BVc%`lkA1!PR8;m51dW~cPcF!oTQ-NGwA zAi`(m!N1tO?SR+>Havn|nz^_d_Hb=t4=-XX?y#y&7Qvd-rd0Pn!>(KjE3>jdT`ASu zj>V6#-k~qIoPpgD3kwcmUa=JnUaKsL9U4g#AxdGrKd^$=d3QCW?jn<_9_^j{wTa^? z*i053-UcDw=GYFJe3nblCc}xMUkC$W4Dx1g-+=Vp{j4(A$qe^!PP#kN{;NMRv#D< z_#lcLN~X3XmfIY3GUuRPrSE2!My*`FI+PylK+J_lf`fPZ_OrAM6NMlr3OEXj^r2Uf1i{gEls;6#k0)6omoU}x6hphDa9uh~S=p(vJEfV0>u zQI3Cq!J^;9=Xr#f=qk`*0g(^A8fRrXLC0E2eTwY~9YhGVV4|Pf*x@dCP*hjB@4t`d zq0U_7Hoi+<&@W(_^%12LDpi3g)J{2ABdbbXeU6i`ERH{8O4ZwDCKkQHJq&|Ne8|}dR>$TX|?aE!N{oYnSxXVWd z*4T-a7IF~TiucMHtfLC8eybuw-&V~!l`aqBY>imoSs=r0$v2pXeP2!q+>dp>!%qBrPGPLNFf3ggD-A{zg-2xAeGkCWtR(6L8gxrXckIf_ zW$Tvh>{biH+GTq}t0#2WjYS*zaIV#U_!ggG_jYBiC-Sh2)vGzV7^K<^f<4dAE1;LN z{$vg^2xohV55^C_;xIG%J~;PILXbDWn(aLPVTvG_|NK7nZW%`{L%bt$nPxpJ@mG2N zE|B>w#blidq*qY}ZqW`8$ypd-b!ewj+0$vgl)7#)rOy1PHXBoLtfP+UGG;SE8DIVoJ>q&4 zVnWm$n+=Hx)gpw5VWqL0+=|S|Dh$HDthMfprRv|*z((T;KOqo8^l1qSh(L$)JT>P^ z^IU5qkNN{2ta}h2wCZYLiz;%)D~y$@7UlaItvHNF{AmSR*~6g%zDz-#YiqEAKX{hv zTtRDaU^J*;-@$V1#eCl^EPWKHaeB&xg!0@3?wf)Cu$FK4_gKYdswA)DzHx8|^*2@3 zn*_(W48LPC#}y#NTu|UH@W4K&%^WcWd?oK>+~F!-eGU8g!#rx8;%DrxZ26gAP>gqu z_yO2?HBe&T6xXW>0+`o4Dq%twVh$bgDB5FT))#mgHz9dZ)-s(YbKo*v>fl^+5d+QB81o=PKXboMEiL{hftUi>->3*=ct1l2oYM8 zg~jRPMp0U@S<5m#`C6f?nv z8>xwMLdGz#uqqzXe|+KdZtmqLVE#gVx%e^P87x9gN>wR~@|gOy&f%*8hcCxr|CSbK zhi9+?XZz}Ty9H)lPK|#=WJCsGpSIN$qCjOBPbt=Q2(Oa`81p!cztq#VKEep4S=ns0mCv$@+X`-D zBIY?9_mtpxM6E|=|_gHLSi@${$ zfq$|me~oplWe=VS5~wBPGh`5xd7i3zDsW!GS>|#+;}Avw*C$@TjQ5xi0!`%|rV#;H zldG^0am?@7S^tGC?#|gC|J^#HdMTP$8mwr9O&Ndagg?k6aT++zoc3$UgBc$(xhiX-S z%)Q&d1$D5u@CxIY;)nQPe}*Vj0KTJV6!>7JbTP2a!%T&kn zQOR)}W2twzkl$mIuW=O&LUgzazv48mwru7XSx4S~f8i6zatI@nMjy;(gufAgiySg{ zE2dO-E5|Oa(zVlWjTy=a?4LFdXztPaC3Rj~z%I08t++9Ew+A0W8$}<%oTUl~_GR^< zdPr8T0-ZBAyYZNn(Pj{8VfVhH`qZKOl4T!Fl3lC1QUMez%?j)DI`bdmhSR*v&l*!S zzv<*UW2Dwlh5kd-KG~BluhAE=Cq;blo$U9LxyT#zQKD)rCR`1`x>co|i`|%eSc2U; zXLAys#uThrC7CJg_j5pw`>-0bl<%<<-^puKrj$Q8r(ArP$iFK6>v2pW=W!zlaVI@G&gO%4&C0UkRWx)w+ zHws|cU-IlXL7Lxls&EbFG5doK_Eo4&Ifmncq#|=RcyT_6a5=0&A7dJE%YIyG$;|hl z)Q-Pk8+kAF6NntAaft9WLu)EqRo%ToB1JM-=7FqN>4o~v&QD{T)@*j->}?YJusYOEuG*lG zvvov>n5vP@=-Qi^RjV{Q+L{%fj7_V!?F_Bkuwy-qx!BNjP{GcrS>V8QFk?Pe{(8#j z{R``}5<;di9(=eMWSE%nVLa%drj`>mrr?wKD*K+6aAv!>uLc>!lB;>ORY?!vVMI5S zyYgGu<5$EaE8#DwlW+tW;bcwq-Bn*{#l0=~G2&2Qy35IY4LZEWv%k&RkE>{nhjbjV z#*O z&#b3^6$KG0VqulR1$#G~mZ2Vt-gtC1n`6)eF}I=LVcx^|gc=8SQXGLD2XAoa*Eg_Y zz#fGj#Pd{MI0kF&f?t0!e|5+HWCrS2i4?Wj!QIniBDWJS^ltWOEz|(FLL1) zV{vV+&i!9Z(esd3s39dXnHP0-w*10p7;jKB-E^x zHY_6ard4KHnRffoWwgTZ25f2$mcD{-sk1UagO}f%s++C^6;$@$gAY#Zb%MD{G0y&- zgI}WVwSAh?c(y9vc6!QHoNjq92=N5=_cG}4Pq_RKIVw9e1O-&FHNIeMp*h%KucOm= zWfrR2)`nT+$NuyIRGC!a$r%`Lfe!jKkAexSxfYe;9^ie9eOQsDdY0;UTd;F;u6Apw zpuY)j5c7PWhb=gJYimM|n9uh(Nb?lWdpY?YYGSLVt1^V1g%fhB$ zh)b$o`6>9dAJ^3w59yfHEiw=Vnb4RzBlVUI0xw3w9wx&dE`w9_=Ss_Fegy48tzy$( zF^;^~@(IWl!n4T6D#Zk`!QKob66#gjxuqIQ;Db}QoVXP+eXAk#0JO63-6I}oz93?j z?XfHweB?012D6NIVp(@-FT|1T`klas6G05M*vxvWAJG+StiyT52Cdf!NX*Of~%rho7UHNAsF#MBKH7G~qAOoUZ9)%=R&(Wp^lj^lCcavOW(zrmi}uz(Wy6Lwy; zNNC{1-gZPJJ=%i{PQB=qZZ*Op)tUJKL@=Z9F1Oyt=3fOH)Tdj{`EOzU|KOVZS;~rU zfYVF|@z#It$~yIgw(%-;sQ$@%jeqJ} zSRHK?q#F1jgD^hnVJF%*yu+J3H?FK!Vi4AXAIqVN%<)7jdvIHwn9-=yI$3KN7*Zc} z*~O=#*3~nt=M#oTOdsS=h| zfuFd~4p7w>n!p{R2U7pTzGpkKT5+$~V9jE5JeunrAupdjh`4g|LT-;KOwA<`(eAer_#wXUbsM zabYJzWik=<;0-c|W>{2bSb0|}q1tj=g{C98u5m@jFR{I98lsl+K`4G95hhZF#z&0M@-*wy)6P`%O@d$rC z!84uFo1K#rwd0{Fr7DE}MOD^rjaL~~RxTk#J{W}9^)(E_`CtumufQ1~M}T~7`RN8q z3`W;}H2vJe@HD!@L<(k%YC4C+>Wo+Tg!2CTYoCDD9~lfY7Wx-525$$CFbYvD*QY3( z_U}?yW3hCI67JhpFNzn*QXWPL$KZhk8PsU&fL~!9lsd0Yt!)H~l*f*~Wruz) zMGrS&&raB!$GWWKFlIV6`4i5@ngd!~$=}z2Y|iWvO`d0OegZVGF5^B}h4GMwIEPoh z7Nn6kJi@>FE7n+w4{u?s_GNqrC&=ObL$S6>TJu5VP|R(X!Z%Rg`T+jQkEOo_6Zj#= zE{sYT!!+t@C0IWq4qEFN z{D8Bmc2HB-i5{bpmm%+0h0$GfE%x#-#~S#$7QHq_@Lz&`uObI99m}7{c}6ERaGIFd zFp9sd*w)9eGGZcr$0!iPS>a9)GPj|(vI@HtZ{8=y|8tHC)#^l4;r9XTzG_xl`Or4` z7S=j6$G>QYchM^4FKY9=;>7QMWOsfVWbjy%Vhq!H&x_JJtj(AR9;xW>T%gNROyp*; zz|4s`jkUZ+t?aw_eGe#cKgXK%ulTS&p@UpvBbfLs*7_P~X4Ql2K~+lmLrGBKAdbqc z$PDZLAe{`NB9^Y+eu2!tKqFNx)P}M?!piSzWM>Zp?NqQfQaOT%ng~3o9E%fUxc^uDILEXrR|HD&xElxy|O55$th4r?UzOstS7 zmJr0aW#EIc2yL<{Ub=bDGo`G_^k~O@ zm9b)xAzQO$93)VyOj^0C)$cL8Vg^?JAbZf;&X^^SUuKnFQV@D88f z5M)rX%G#@_uxQRY27(Bq*y2i3Lwf9K!i94`CONvvbBS`XJ0=8K~hj z%9pXOWkeBT{;;(Y=W@syj7^5#zqM5&g44uA2hk#`sV-#?pNA#e39gE*S&Ls_-&&QC zJ+&i$=ANQpg;OmYTeG{%H%JuXgKfeWc6{} zC!df}Sj({xG%)MB0>oQFhQ*n@%fN`cIm_zw^FZPZ`WH{|89b32jZhoHX&BDRiT*5A zr2-A?@D?4c0o{*(Rgy7QSr&%z6`$D4aDuPk9Qn99E5Pj9?4HoUNt~n8bgd(~;$IUw zn4f){YLE=)sm7A*kDl}6B`0a zf`MqSk^9u+4^H16L zKJ-4Rlj$eo{U2a|1=)ccf(Yt2s@z(I-*w^Vc0rcI#+-)nIq32lJNvp^zhWvla6apC z9j<5?>$3`6^fN{xo4As!?LzQiDTh-yV``Q&H-kku|3b#FnLS+3#R3qGB zu!p`}U4hJpyho^C?t)WQ;A$J-Wwp=4hrfsq8PGtk?#^EVi_hjVB3>z4c*`88yxq88 zd8{;M^NA2fD)cpsNEjv5yD+ohgdJIc>JWB8+0$qR)Oq|iucZAB4WE z6Dh?8^&hO3wi>fG?`-WwWLJYdI2lJw3ctuY&k`IeaEni7RE#CKV&jcYu2Rdwnr)Rg zy_#SQDtVXTc6b*xc!n|5=pGLiVb}K2SnlOugY)gpI!=Y}TkU)^7JmcG-%g5a*@>63 zn>r^(gm?-Ic^rFQj!$q8*szpmU&HgF(o(gVA$VD*^T~vMRTdqroiaKxjQ5P)+-l6L zQ{~ihSpIr!?hVLmu{5y>LU^^3;tU@a#Z9Rf-k7ISqWsYZro>Dy&-=IZA>$w9&K4oFYM-0u;Dh2 zsBM^rrCS^2WP5cHoH%FpF*F&iFA^V~1S`abY$fD%uz=~DXm-kv@PlFC!l}83O1;K~hJq0C2qP{sCF?=$GrgJXw|?tx z{G9Ni)`2rdC7%Fsq6Xq6taTIXF}h)X!~0)I9@aMO{okx2w5?UZ`3;}wCswJd&2Ow# z9hsl-MBYgF@+yc|1iz>mF_f-whd$uLK=9!-^zBceC$$Y&@B^QKJ+DS&azG1}>{Rbm z6ZbEh$KU=0)<}i_ZXRI29=I}SH;~} z|Ip+`%b5ql+|6IQM_XAbbI@|#-R_ns(RlF22dV+GLz|%MI^b4E4HUh zY!D&JVCmLIg|@W}LO$Ukrw|Q{at3>lS%@TA&SPztRpDkcV-}A*!fK7)Snzo8;12A6 zF+4#ZV>;GiRMN_ayAuZ7$zRTbSc`2~Ib@Zxk$!!4C*R%6V`d7hp&X0-%OKRX3w$^$ z*<+xn^MlUH#fLHQd;S0G;413KsO$D5=YEY^yp5e4 zpL5F{`Wr0s0}y31D>5&+8nn5Na}Q?~Vw4*H!DIp-oOEUf_!qJ#=WQ(Ede(t{ zn^=MIO7(HgSXc?6UheZ;xr!B$?KI2r80&hP6H=r zJbd^c;9K-*$<57R1bZ-xv4=&3w_%->xr5@^WIQH^$a)yEhbq{))dfy_uyfm*NM~o+ z@2tOm0k?bLFW9AR$41PnRAt)Qsb(B%N?8f57QE31bs2hr6?L(5Js>>_@gZU!kwp<7 zB99WaofT4i)ZQv{oJLFIw(&~QLEl3DAdWSIe z=|p8h0aJBL{fXh=gxn$Km5xfe3p>EAe^3|pPB6ju`Uif_WW0kb+1aOa*bOFr+yf4+ z!)9LNFw^%w2=OJn;XRPUY2530t=R{4Zi72yCxC>fqmNmHoxAaM@=~nHZlAKdUGwna ze}E5cE_fM5us-KuX!+Jgi4gu|S%jV6+Fx*tEIwrO82bNqWz@#T?e|typ##>fTFOxN zATx9q@y+j#NV-??OBlk|J)jnSWCpNR&KMFdSb9j&a^*(&~>#*ue5<;j+ z8TP4%aTXZiF%;ZTDSKE#R`Uq(O1ID?bJ=o5*c#wYC53WWFwlM#Bt;~?_uNqyv}E2z14Hv zr`mrgY1&KD2D=v{j^b7w?*E?GZ{_oSl~>7_ih&sF<2A$cIGqUQsLcPwJn~KgLhO_5 z?muG>dtwlxhDWe@Z)Gzb5rfb^OTgXDS~SI))p0zU*reHuL41eRQyT?~7yu_wQPP-$ zy_KpuH3J7?%2v$PQ&moUi0Gv82X$OJveP?Ncn>aQ-`N~W;6r3EB0^~=cxcN+7e>Xz z8_eSdcL*i_tUA3KIO2o9?G#aEB4*?1WjODn7uAx3v6O3I5KBRc8DPc5Sh&5};hkU3 z9y<-Iy$7o?m-z=m`^4w)F~V>6+?^=9Zuo> z&H_>OH_UNbA#nlLZ>7{_{2s-#1`_*K8_!zQLFurrB;uSGr9FQE8HW|vtX3P7Htyyg zYoR7%`OZG|by)`EE7iX{hjYg|)XKCIZ3f(ADaiIH81pR1VEl0dTu6SfinA{Uk0LTL zpR?b>Usi^h0bL9lIsr&Nuz}CUdI;;St)R9VQxvra)c$Z|DKGL4Yhgg^dEPs4if@TZ z6egB(5Z;1Q_UtC9M+|Z|e8F1DXW$xd!9wzZ3#~wp=EO4F((8EncpBa-Dr9+sRvDP#t-`#rBwSvFgl6D_`ptVVwu&E1ir!p4Cogy;s0i>>PLc_+nN#mFS02hrkpy z{za#u>3SxBc@ubC9XxZeGMMo&mus>2l~}GdQcv-tF2uc@ZwY5LK0Ax6cVh639M0Y| zv$GJN#2I-e1*?%7x9yVR5Vn<&rr{% zEK$ubz=l_OrHHc?r1&+b3N>JZ$Y}JUCaed!jVb6-&dtMz{~12m>+L?At$GMF2t0_6 z&aB@NUWfP*_9;#jB{mT=tmFfF1Wv{3j9sfbX}yu%QK2sY4Tu{R<_^NY$mjR@u|l(-W;lAo74j$g^x|H+fVZmgiJ_ghd`_L&?~IM! z32h=LGMIZEh~=xNeI3?%CH}{7P)NTbCIrbILzAMkvg5EW)ylZ7u|7oTBj@ znDHts>j{{KonZ?&_7Ps;=lBV6h0SmXr~KM|x}Hz+Esj>b<^`T#gJ)3|&!aCM#Yp^$ z&O|2$p)Pf4?%D!;*oyd&gCl5j8E25U2TREJH1Z=8S!^;^@RBfhqYv7Z(M2`wU485E zqpDkd)_?UP%wtyP$V?@_8MYUbw_-}C2x0YuDzcqY^@Q`ikKph9h$k8u4fbGMG_tGy zj_gWgI7I^SK@UcJuzSPGDm{zXtcQ|6WU-0xGW2!Azle^_Mj(R`5IK!(#%bi;vDEO* zM`1zEz%*)iH{WFQdr$LCpNB;_*Lnf``#liiV`78rlAo~>|6&>6>P6Vr?cjr5TH2tM z2mLs&Rw_c6&kzk_p17D0-6?8Y+CQoy|IvIls(s2G0zdPoAX~BO7TVk~dB86E6T!1d zV1so~feoTVco%(>4``g>0vM2!!HvGEg=Y=8agEU+;g!5EXNBL*PpDeiYi6GJB7RiS zoRT6k7xA~z(m;usV3Je9>~OVP<3SKc+qVYYj<$K6OMYQw*M9Old2DvX{;D_mv=)J_ zAMzP)#)J5k-z)GyUS#hx9Pz_+)-IvYUDr6~Kh(%ywEu%;yvn zVlzT%jip&l^BTr4y{q64QKO}rR3lJLT}+vfc%>KQtdE}9?=aR%YXDS^x))@40lR+# zfB7|V;%@fN<{Q5-`50C?eglX2kl2Gv;uF@sSFnTYu)@jsCT4t{iO~-{h*@6Zf-{eM z!UUWa+!b7sEBF%_AzmKFrvG&`M_FIu^D1#!r7B{?I;{G-DhHa3SmebQr;`#0xG3FG5e(n$EFcz!f~Fzi?gRN%ohDIM$U;W;+jm$=Ha0 znNzutSJ?S!RY)+b`FuKdZ0JAS#^+}Z<_&yax5BAJo%tY$*kBLENI^sC+;S5wM$0c>C2`I))FPOi%l`&1dIc{>?{* zj6L`}o3@q39x{a334Bl^I#a54YNzYBv$mY?yC+r~eVwl8J~Ad)4=j;w*az-P=p0U` z?HP42^I?Q;5UXlOj|IHco0J#3;l7Y+^>@%=RWd#dlV9B(>qF7MfB zrN5n|aV-dO8=vCcFbBK3>}q=w>wgI}SPCytC;w|O)r|1M6tPgP*Q3Pax53-*>Cbe2 zU_D}zhZ1`j0(+Q%Htl)n-d}?1{k6Hdxvgv<+xY3CRw`-?WCg(@^5YJw#>7u(Ux#g4 zzbHQFU%2wBn;^~ zd>toRbixulfDbX5?|AGL`x1XKXCC zIWbwLonJ%wQ?>27GTlwur4#PeQyP-;LvA_%;Voqn&MMPF3EHmnp%76x;>10JgWh_v| zDJz((ff;*(4^||p-4^S%3b!h~9l|&NIIKdyJ7VwAs}x;AswxfS8?EMTea;Zx#DB&I z_gWz(KByw4KE3tSmEjN8RfaM}h7Lv_ypO=C$bSZd2!t?3sYXO&A`mhgXZ|>^TrS_8 zdmPMqdM;KlgKzrne8-Ktsf%LYrt>ymWRG1ERzT=id=_-D2+_>MowYt@dE z!H>ej9|%`EfzLsNI1c6@Q_#M{!h=7A*We66=lh5bL$KK?oaZWdzltt0|4Xs>Q}{IX zAw&a_MkeCFYJGO+{JlXV`_j+EqNjjURz{kWbe+G2_jE^E+i&GB^U^d%;e$FSCV zESp)5Ng#zeU0H(BNuv%IrTB%)z4ocNse&~98rM1Ek(=-|-cGo&iXOBd$z_zMSE~_O%tMGp_Mp=GBz%hzWHiqO9WI7DT!D`D zUx+@;Ex?DZiV%gcGb@$t)|8LikzusbO}#nULu4=V;}iL-x7skF+!(5DYBE&@8?>|f zphD<7YP%klsnN@kt;y-fclt!u(a69LWn~+gHe=|$v4>WiqikXf5qXG6W%wC#iKw9T z&O@V8tg6I2v8(j=7-5_;^keM&&Zc8TF2ia{eInwGKdlkJE z<}CFVj5nx}c{TTaJsyP}+qZHi*^gCVRy(Q8J&PlzCnhm5aRz%art(U2nPK@>h-vrn zIb6eQ%xmhW+{o`)d_po4Ckp9f7_GcF-RnX=i8og{jykS+U8c_j%J)hby^m!Ji zqhh<9YPvbPxysUoT7zh0bC^T>)XRB1I<-TnggP@f9u>+9L5EA=4{F`dW{%cYHIHrn zWJMA_7~|6)aJ4Us-DOdSe00z%qxV6}bTzjlB9tWL385!t#L_Mdd!<|QNKYd)B=k6{ zVu1&-J{|`$nC~~I*AHJJGW^jyI0EltFnf;%9qMvFdORvx{XY8O^&=AD^+SOo*g^E7 zTT%IYgpkt&j}fJeg+z=}24Ou!^m(db&qQvbHLT4d=yl&cIhdiAJ?#=kH;sln(};bz<5Fax^E4K%G*(;FegO_?bEhX zTQ!FV;6I`2U^SJ!+}HBXoF*82!8-4VEm|`=hsSd{%HL*C=YlcTP~OUG@8DkMrGGv5 z-JJDa&hDL>e=x55Cg`9tz7qwVjqxd)6S$n8lLs=Cr1HV}TF&sTN>4>Sy1bi{&1?^M zP}RCGot(o`WO5>LhYR5k7bcX@!zjpaZcRwDhSGT#a&-F{?M~PWTes?3{*d8=jKO*+ zk-(Zpa|h}$nSBg3DYaV4;8UpU=KLJ(s~Hxq5|pdEcIm8&L*di12BY`p?ajAErH-{n zvhF_Efz{Pjxhv7Z`w$=8@-rA2KFAg9)z<#?ZUPx1a+!GkY?LMNno>TwJnhDQokA^jvs@SR#xfpcNqi`<98oUZ) zxf}RVhwc|LnxSKBC#JPg4ZsF9{M+JL*v+Y0Z7+H`2UGcQIy%-9(heb5!STmbqKx9&~>dE{#rO%0M zqJ#c}y%t6r8R%eKCHRBNG5H9gcaa~Xv{J)f(oC1uE(|d)s$#;mU{=bZ2rKUqLoY5EvYE`B*&;6sWx0_(B8{&dI@?Ev+xpb1rP3mWrXFcws|jm zJeze*Pk?_Ht2`_rYRR-V%Wod_mUv`^8=9^^Mqpz2`^+09}6K8@dJ5wG0VZF=jye<$`v z^uY{(Q}oP6IKi?aR+aB%s5fV%L4|7PT$r1%?ns3dkCQ{Vj+cimn8$EVr?c>!t>pxY zTI^T<)vk-KFa|3ey7T>aZSIgN4P?(w+v|fBH0D0UhF}QUq>hX|n8k?AtgO7J0{0QT zCSt77(Us*s10Q5ZYH3CeBdQ;)+A{VKRS+3I*i~vDr_(;I`nHqPyn%5(J07ej&?mB% z`E)GRKF2Gultsytc5;omi;aBmzXu&$AwNpi@Bu6Qo!GM~)~ZfgQQbG;gIP#5wX!Yq zF3e|IMupeEWdgH7rHmF0p5Ia|AS9}l~As;f)0MYK2(2k{}axf>*%{x;x4JFvlN zKebTG+80jY+`z^#i$kfL?4ES+k0sx!-?8=VV_QFyxeF^FjPS)IyHI3s>Wy)}@coN& z)XqE~6$T=NGbo%;;ffu~wcp*5=iAP$T{Y zo__>Ra68Cg-_=d&yz&N>sa24(TIpeMLH)@`_{&*2;)<*xl&hWEyNdVi9B=3HEdwvq zyMGs?iizK9&V9pY^fT;X4|qcDTon*vCy=3ZiaqSQCGrsX-~^zSL?J2>k*JWAu|k)3 z7yhmSUhGF^!y}#M+pPc}wi>JzNxns_!A_*Bj%~}bql;lzp4Izz1up}m2o1UDu(JNC zGWMpvQ)st{5cXrp)LoxdRd7nDThqiPjP`ZL7K}L@&G+89+WH?cA48A3J&*SUvBZH4 z88ZJOawdTfp^q!7nYC22UVX}lNQw{kWf%{M9ELo{yhE<=Z?t`7eq@FCcP zGx_xUJ7SsE8-M8gA{2P-e0YK9 zLqpHHB~|Z?yV&;ZqMMr5*nVhYV*3blD=yIhW1lHYjUk11lY5uZeF#2FfTBsFb5!iBK!=y zx2;Tc9qx{$wdZdqQ&@AUvb@~FnS2$wqhJbIHZ?eeEF!WNQN8JXiw){cs%~Y(A*;3) zv0@V;qD#x@iqVItoD>fvQQ;NQ$(W1N1mp@8si>k9AFMU9(pv8#;*@7%?W#Oo z&FcL)cCjHv9yWmvg>ou6eGX>Gw3o6jTVpwg975zSRDQGrOHEFDD~wIb8T2V4>L5Bq zznlLansDkUUNI1SiHV)pB}A~FLA?bv?jC1#548o6;dAimd+ud3|B4YGr}g|J@&wMP zDvF(blbD67FGdZGl4$2Iz!V<5wo(aEVtX+DSCEmt3IjTglAX^ z=Gb>)704(2SS==2e39zK%;|j1b1*a(lGcXSk(fyc{Ek5jx?P%k> zu!;wNP$$NDdn!ZQ=MXHT4meT~bdkqvlaWcV9>Pq4OhQlIoT2J3B7n8Z#v?oM*8x1I zA5$9!VZY>oAWj(=OT-;Sg?#TK%Wg)El$ll0AR-ScVCijy+FW2n#3yADp?x2|h2Di2 zr+1N|L-bzwt|K;SezOs{WscLkYR6s6`mI>*3bGknJsBGvhLxJVIF~$POt^Xo3o+Ve zPf=mMshjyWui-oFw5nzNYnS)!;Dg;+15<9(-YokmyK`ncC_1J{gIW3Ob#NhvHPuTZsXvS^L)%F;H9O2_C8Sz8Yk(HtSn#(5ZIYg9U|izjANtx^2oU zf-!N2t%j6R4D)vzLGR5=YJs-udf zBh`6y%7wmzzPgdjJ$QY1{^9Ruy3iFkpWeL3HNx7&2Ym?plMez7n(>@Dga)8TGwiW8 z=h3go@FDz(U=bokJd;HqL>=vuZ?nAH zYQZIV`SVkJ(&|uW1ewLLf~hwQBH|D7hkSepgb*8oJy`$HkLyk)DsVfI1ob7fN@EMJ z;TgQbRaU3}n;idm9^f&3A_On=k`o z5chMxYTKKmFmq{C^ChljCA9vEwi>wbQLf?bd@_Tn9<8%2 zN}_Y0#Ubm$6823@p#eTc9T1~t@)q_19V&3&-lzR8PA2{u_F>#&C*IkPIdv;PgrBVC z{ANgV1^&fWfd?xeoU*As>z}It9X9VIY%3pQHb$)D;zM*f*af9ci4b;go6T?vr?ae# z4jK=PXkbN<#NMactjQ|2=|{K1uQ&iS&<3l6Hcr`g_O|&F5h2S=1R@xN$l{YeoAHNC z|1ypaO>5D~Ol!m;L<;LN%xxN_F!o@6Cab9qeVBMJ(Vb=VL4_Fo3pqqYAXLqb7{n3a zL*y@_JIV<;D!3XQG>WG}%x8%`gmQFV?h9;a345P{^}mMAJ%$%DgX*Z$5`Rz^W-yV; zAz(yL@WGCc@GkT(^e%!$I2SlmSh7{g))uYCMpR<5C%O>apb~4c z)3uydr4L`9)wxF6Qz=&&zrH$~IfHUw$ambewyssH^tJ*tQ-ei4Ni{32c$km3@c?`D zUY2o8L>BBnS;@7dw&^P@SA6h3R&Yjj2zGXS4)_DwnNuoCxUor4Hb zpPxo4)~F^-b?&)3@1hv@_z7oS&RKHcoDs^(yf0^6H0SxeoD)0CvrmQE{R;45E8|00 zPh~8*E;gc)i&c+u{m3A=qL;+ZLg7)H4{dsV_r1XYl^%D;2JNCYn`mED*rYvEH94n~ zcU6gMMl_-^HW=5c$SXV|dbqRrWAF#DAdo5WA^%x1Ar$8#hY{5mVu5+hsMhkaTi}EJ zAWqLQGFc`46U)CJW!L}!Y4{FrfiKdToI))cF&%is0VD(y4X zU=U@n(#@>KpJB~bB&d$JlCxSZ9x9Uyh;F#4!Ye+!#(P?sB8?wm`(`RX#cIC*8@^09 zwKCapWGRdggy#|3wBO=cY=%Gl%8#=!N`YjNrw|GD=AOLYeYsQfm{oZnRl&E?xs6;! zPv#4-Z+G57^E9vbAgZN~LII*9@301Y+a#Uq-e|>a74z6;Pm+Cn8GkVPV6>nbY(VcK zVv`kM0#4i0My)d_n^s?~%ehoC3?IqT-SkK7uy9gFFp0<*$mpx#M>K~uw8q|?eY-Em zmg1ULM_QRBOOZE-2N?=PydivwjK9QlS#5VPiI|09hE`;VO{6IMJ9Mz-Awvf1w2VJw zcW!<&{EJYalobVs5FsK4VGX6|pm$-HlTm|{Q+{zYoe9=4Uq+ph`Nc=DtZx&4w#Fw1 z^OdPT12?}R)gh}ddod9Ur(8IXW+aa%kpUT=7(`b*uc(N!r#xa2#vg(|SOswu9*J{5 zooVGvt!Fs@d)Vbq*v}MTJ7?JSs<(VyzE!Q0GO49ePjt3^DV< zb$myTin>E1kFp5S!Aw9Eelnae=4aHxI>tZ;8NFFkdp29K67L5#n6D@Y4rs;UL&z7x zPY?n8D|$a7ZxS_9S+>*X;}~C)p@YAJ>xeTElhoVLw}^Ka-4<22m*~j~?;@*y$n=Bhsg;KoTFuzw%w2usD~IrT%iZoFt2IFSmtLO1U{I(@aHh@;6z??9?{9a;LoU< z{W_Mo9>(sJO1*_*Iir5%!H0I#8@6MeZNb)>M{W7H6+Z{E`tFYn*1$5IfLRnA+lLyP`S#B7$ljG>+oJ^PZRxp!o_7tkY6#hFt?1U}5w#v67rl5`NgQZ8G zll_u*T|}jUQ9d`Bdh}D+=@fMn;mKQZqymI9Xv7c^#OXQqYdQJCNxapuW^Fw49(??J zd@yGcT_3?8;yI5FRuT9R5eR(?H|wbaNurk|Dyz-g+HH{`SztrHZxPiGdKei(7*ml! zn7_?p5ZNq@;16mr*?X!=g;fYDrJR@go@V1=Jhg>En8PTR`yM-41gp3gZZQjVP*q_P zQ44#s`V)I_@~;{WXR>D?%*2_5GKkRLGfvrVOVlRt;b>6gG!W_Hzt>c&kG&xwf|KQH zvEn-Sb~iZsAxROw9hh(csNmKX2HqO9Xu`8K;pscEG8X|IoLprs*S8?e=WqbKNM0do zV$GDZcy5QQSpT3(ty49PRLBynn0$$2&5Mc*Vv3VL-1ipy%yuqii@GTJgf&y25kLJ2 zL@UhIjX#KMP9fhNJg5dL7?pIZ1{TCj@6BBAHE`<}W(e*DdNiZDI(jfpq{G`DjL}qB zpNY2IBzmxL0r1(%NacsSc&}UQW#dx8W4dKscamP%NDPsrPo;V?6 zk2-?Lj=DN$O0iZ;7@f3+vH?i3H&`Q2$n-9=DhKyvmDKJFEXd-Jp+6b>WEdHuWDLSr ziz7Z`##VgDYC@fuBZdWc$mb84zFeS$anuYaWDxe4nO6zjeOGVellEb&#ncD;R>8>% zDSIWI;Om-xKP&oLR!1kvmBjKs#A2R+KiDxnlWu8eb~;7R-p#0iJcIbdXnuyVr#n$f z{R(rNhZ22|Js5vb2{ZhQ6Nr191z%CAW&zlvj_VJ3#j&J)u=@S@F|JSr|NUSlUU$Tj z+JX>bLQ_1B1K?IQ2!!&EyM+tW9`C-iF;1gdy}KplQes?l*dcJh|jr__+V~D|H4_`&LXb>9>^nP z5_=`?pe}70j#|&_{|c@+V|1?+eF*;08}=|L`4nfB&WPVbA+f%vx!WE+36H4pIt ziVx1OsLpDsYNV0IIw^WzpMB1bur@NQGO&(1Chf&EiSQw!9wI6VBElC+QgV>JVGnk5 zstMg3rtaLVs+>1GfeZmM&ml4u5%0)n7J(13H)9XMC*m3LA?AOnR%_JKY^UfD9a;8_ z>Insd$S^`=$nqEY{TIeugGU&FXqfP!IrnZCr&&&GKUI5+8Y#06r()?c2zwwd$Ah>Y zJ6eQ=$=1KZ_BONX+1Y(R7N&yjl^my%$jg2jyVh~wMW59js=A}Y{3VonMdzM z)L4f$=P4XF8DHfl*7WCC%h%@RVO=V&HA%foEkKESpur(YW2rqA$E|p#L1OOp!3`hn z2|DEEegF|7BJcwd%Jp#nHOaeJ0zSNeoj;Va7xVC&qQ+X)r?kUn8s&Ex3!ha@G{nNEoW}ZADo(58Xn_RZ;_&Ws<7ULN4xV=hU{la zVj~}Lo~7Jr5uU9C{_PJB>Hvf2N$g<|{NW7ziiv4cN2*}{#lHt|PR+{jp*V4Z8X$t1 zyhiY9^B2|!)xoBsVtE&S%Mqd<%L?W2FwA)DmZA)y*rvr3WNBPtR9X87Q9ZvGDT5LjTgB72l&G^4ZBsHCW%Zk71p@9=l> z8AOH+GKknBR_R30$X|#LMj)b#)7lNS@Qx!wsY<3bQe&`p_2Dlk_Be-10sFkyvf3?Y zE&iU>eF@+0N7yeusN1F{lNFRhz!xX=_9N!l4~$S%VjwYy&VR=TqYkRk$|qzKPQ2*O z(IZm?;ySGNS$O{XyrQhV`(QP#=~Ox#%W0GP9ev!1zYc;uG$h*RYP@I8JV7Pa?Obj{ z!h#hr94oDz*%32;t&6lW@@bfZ-JUnVi`1aI4Lo`h+|cIjzi^u81017{q}>=!%!z4Q zp(SC&B6RHS618)~x(WL=t=h7S+Zb-~6jv?6w=+_SPi*Br;DJH1`r5F)PbN`-&6udeGZ1Xy?HR0wcoq zBTr&OX%PfTl=$Ah`$UgQswnt?B_#PVk387ffOIWj-SGV zzmW{b4B`gUz=-iMh~b>!WEjKoV1mjLc7qNgve9Kr{2{!HEO!xFxn@}Vz*@$EGIOxa zXR(_v;oU~{o8VC#$(q`oEZ<@H6&IA{vJ{1|xzeoGR&FiBVx6(;R874F zJ3FnA6a%c)c#?ab12)Vg8Y=c#-(hE{T^Etl5Dn&m3F3iWnh`gv(luqof%=yeS7>+ZUQ3IiW zv46sd=)-V!Pbbj98VHr7?2%F-W^}5eG|Q<<{0wm5F%ZG&(&B`yeK}Tm7aqoStim(# zF;sOro7Xz2$~l}pIA`>{pMv!tnef5*gSk!P5AujmsgXhS;kpyJ*3De!uSERxV|Iog z96*0ds^|=l*ki^aL=Wvg{uUJiC9>c7oZ>&` zJv?jFZrYWR;Z{}d%X!}7gV?995%?e$WLb+q2s69ZdPe@j`iGd-D}N9jtbuUqrMkNP zh))hl2%(acS`5Y@Lbv%=?91r>Le@)Fk=|!Teh^D>HNFN6xeP3sz-z|9K8C>{VrHIk z4QFN@v&Fw~u9!6=k>AW}yd#5g9`6^JSv1~LrAR!-*kad7W0*w2B~ zIqZX1Q8f244B=_4{%N@Sv)qk3+A-tCxi(Yrkj{dYsADk;YquWi2JZ6$qN&ccxF})Y zEHJ>?AMyn2In<^W6`Z`O2BkB!uHx~{unK4CWax8GLL4=GRs7B>A&iE8o~kH}T)qiM za4NX>=)`YlVVEIx7W%tOy3U6sG5*L|G_FJyQCv~5m8C4F6tQ~x2Z=T>u^*cYKdksw5|rQi1Nv< zRhN+Mi#Nqm*3zkbuJh(fLkm}KASMJ~$Z$fQ;FftH*`tU^$TPyPFuN&IL|oFGh4+~s zkKBuQ724LKgPw-k6h<5}bkM8vJs5v6#u{DT(Z#8XlwDd*(u(M0OvQEPRi?y0GWBUW zw|6pDXC;JcPAao6!3H+qYrMsG-Wa75Xyg!=V~JC+N|ot{fi=;;c@*A7AMhvQlkLEU zR>`k1N-3YPuCf~ui;-CEHC*FavH{=0xXZ$~Tfi6wp!Gfs25|!X;SjPEm5JwV4}<@f z_4j#>k2QWa2sIUKQU}<%zpBif2~v&b-*G&npX5DG<(W{RQ6K9f_N!Z`mXuR?0}<>j zkI8z|K!&S$)r}y7>NCE3)vD|dzXLq7!u&;S{cSMQdThJAS7ZOLg9*kood>RWvykJ| zmv9!}Gi=X+f$KnronZ{ti8o9U)~et`8Q!6J&K~fkUg*LcpV-qtP~!9geApWBkf(N3 z=)S~?YPP|?%kU?5#^SUK^`Rz1U_UK5qsj_U=F@AHt#C@3jg&Ejg)v5mFBF6lHFt#QQ||?NM$j~ zn8K%Dks*XJh6hdAMr1nBR1wjWJ5AoQzVAPMb}M0aqf+EUz51IZ2paYhWIB=%;0=if^%xyU&?z?_4YbEmIc_k znsp1YZ?$Mtz??%oLNz;|agv3TyX6MX6?%jtRL8xKV;AvxIYDbRcWu3-71bZ$f8<~d z70FvPh7TP?4E7K*GJ8`wQIk0A!D$Xg7tpZ>7!mo5F$MUrRq(-+SPijrvi&No|3(y| z{!#8970cSP>%FS=dJ)mPZJg3>CmDk^54Avss5_EDSOv8wue0vi?rXh;Kmok~&zsqL zVVtASFw;hG+ z@G)LZws1SRaT^#RA9t?hd{);PSn0`}Eh@N=1&IzxzQuv$Ro(1pi#S9_u6-g`I+ykP zNi1y@{GkZZg?+J`s3`1C%%KtXw1F$W#ftp|SD20cP6Y>sr+9}Gx4h#sxK}-*n2>WF z*mW!S<$Up};KBtwGmSelTH?ekr{IVjVu#OO!t+kbx-gwVUg5mWn2Ke-^LegqZu2QV z2YE}xIh+q7kFcZl6*$&?y!(53C+0$5hgmp1%O1?NunU#veug>76m|y>_9H)Y7}$3V zTW6w^c7X2>VjN5)wsXp5SS@ub{>9n3t!5qtCnDSFlwGysT>qofDpccK+k?fsGOInQ z4cWP+4|X)`gADwu>_+Ums&r82>K>kHurck`Xs3f@cI)<1#}A7IZ${ah>W!kVlp z&^8|9_hfAMB+echRUPpr+9dBHLkRD|IK*L8U!1^o#&d-Su&Kyil&5mCIo6}4bij^E zQ&IFTSAU%A%)#E(t2z}_IGN3=E*1L6W8)EXymQN%FSCD!doyZzeL@TCqOJ$Y%*syU zeFZ*D0wJ8V>6A^;L9fEu7iwwS!R4$xRqC9IWksd4%kSjbxx_7Q9oB9v)+22fcRjQLsVHiMc2%v*^B6D2rZUU#0%7evclF>Lz9Fz1*wbw6>=pR4YvPxwmeMIXtJ$*%mTe`G+HH4YBU;k^SeS8$zMMT& zq+)(}#2?h)i~On;S}{Ls9JYNY{QYg#*`MjXs02dn59@9Rml^f;*Rk10%?h zoXEMILSzm#?(i>M->!-$K^gU?)VNv!=a+LVPA_4o$-grX*#!3Wj5n_wXrX=0a~2>UX?gUfDsd#xA&Ws6(G;a3;}L$3UQbj>s$V5@h{}iP$1*w+j6r|MIxhQ2 z^)51o5Val=gD_ed6;fh@xmXpf_aidd0&Z{SLVbCogE6c3m@U|#Z()U#(|yckI1}@{ zw4%=9yZ<`Y_BOuuYQFi-*ZYw*aV^od=U^7kCi~D=w_*!^y@+08}-MEIjv4yEeX27@Mlf3fqdUA=Lrvut+51blRnOqQmysrR7;&vfDc;{9||SQGoBE2 z4cfd_(AHC{(k4pyuQ^HeUhLcoe25&UIZgS4G09*Np$hHZ8d#>$2P+yfk0HMXQs2UC zrZae=y5aZUM3&(cJwzzkLPQ}WA|k_4vBu16AcQEPPZKjP{5QM{E5SuSy&=7ysQnI9 zsKL99dMW)R--pO<@yG8jXWXK@GOU8A|h32RsamP?yr2=LjrW?LG4qZNVn-!T5vKSyn)FguV2E zr%b>yZ^ORc;2Pg>=HkTf8oKxq_YJRynNTy_?&x0{cbo|1FOHfaku&pV*OnOL@3Zbs~>@5p^g_)S(6F z(1qxNb1wQ5T^PwWf=o?sFrgQyVD7@-C!}7CAz;J+kYX#EN5QGE(6U%h#2xhtv?9F- zqYz<*W(dqf?8>@qwlJ!!#S?vcZB7Oe_+XaMT!4sCh1bg;B7YfJ5c53c5cZK4Vzc5~ z{D^2|V1&;{>{2daL{ncvju5?9c3&Bnv??Pa581z2-$mSMRCeiK$c`f0BF2dd#$)xS zqS~u!dLPDCjZOqc*r8?jrkxPs{~JRz!>JBL=*+4AG%{6LPr}BhZSln)^?ja>!0i*xfK3zCD*tLe3%D5SbKRl|Edn5p8l7d=O;Gx zdCg^pGVM3u&*xm(-cUO-tfy38%9^Qf)4SN2`spg5LLJ^sbz%=Sc~2cuZsK^X-st1- zgb+jct1pNk7W4%h-1>qN$HFw)6N@P@>aF<+IG@+(qq&Q$KEN4!W;(S#ZBi~_F2V_& zuE(M0=5g+O&e2_s{VPyY8Jy2$6JOgpT&At!+*X6(jk>U6M8`Yu+W+6_5hY_BL z|3)M-VvsU~3JDYB4Q>&85Hb7_F(MvmWKu;d|Bk3-R7FI;miMj~60Av_Gu9f>2~{fe zFszV@`UltXw$wmm8ns%UQONxK@r`1tj^#C}G*FGd&-3dba7grGPdl*am7-q5) z6;NueHK#scccKrkbKVIshfFDR6z4r3i=K&>a5q<0!B(r3IeZQtxYldUYS;e2UH-^# zyE)arSKIP!xW@DN1$Ti-*K@D(2y3oI2>lD|7UU3*ag;W11(f)(i8DE2a4ooCR>HHc z11p!O*u*jrN+emwriyN1Ixy6#tp*2D(|$jG*Ghe6);Q=t3`p_E)5uT^NA+Rw7Ej|O zA`jM#c7Z?D0Vm54-`twkQE;w2Y;~u^zgkoU1#Un(N_25!Hcc zzXcx-AO>RnrZLi(Jk}pHnt*-Y%r)M?zH>wzYJm=FMb(0nuVWRT#{EQeWDt*>_I>3R z5yuI8t3i&KxLGvSL~c*SL42r9 z6r~C8r#bnFR`7u%i7;ff4QEhAJ(_B2D<#9zupaC}1qQeVS0Jk+lB?zOClQHl_e7YtPuyPBHdWt2=clSPPvhUUb7 zzQaQ4`QQ#&R5BkQf=9?7tfH|0D)S=3%g8*A-}@f!i#(^u7Fu_K86t(Vg#+7U6f%gY zrSg54;nf2%s}WmNLhPHWq*TZ|gdB$5o7P7410lo+w*hc?eT=A}w2R?>@WF_@x%>~Y zhBv?nwISDG7q8+O7{|Ydwf9x zvLus0fSb19LlJDMPO_){Vdgs$eOQ1mVO6FbuP|zIH<6EUEq~P5sS@Pgt{Mp2Wz{TO)~R6ODlR@)7iHW}2Ja(14H3fXhw-U8>Mz*Lo8W`WOdD8(-{-HFST|is-@}`K z1h3s{099kAVZjq&AH%Txf#ex_!BDz@MD|{&$tQnkonn(mgB&MvozZv;)8Hr%VhwAs zXcb%4e`!GUp=fS7XFZ=d#)+KGNX50F!CP4Dn<*M-)KTRZBZ;rG#~Q^@lXNPeJijRR zx&s*D#0-_^e!#{*;Ps2K{8vDL$H1A}@Kmma`^*F%Zsffz;Ec}S^_+4gqZ|4!#y8f3 ziYo4@MYD-djcSNYN!w_Jb3KenW>r(wKs}McJC7`ebzyRcsIH8v$_ydu@Q#|W8HZ?thhc}7 zwGYm<2`#B!V1;T>)>&uuQFmfX>##Ow(rmy=oS*eFv4?MY{3@31Y;0=^uZ8(rp{Qbv zdJug$XBV#0E=3-UO&-7_=L$K!EAZh=Fi8Gjjm5`U-tHhn6Kte5afn~A`5VETQ{WE+ ziA!F9^}fkEF3(qCT4f3qI9E$_uwF3_RjKW<*&VUj&}R4zFX2<}JTe+0 zgpt)-xc^z8!)*A&U9cr5^DG8M^eto##x*u@1!oQZ$a(c!^jh>VRJs3&eWHe)R$i+V zTM7J&J-6V4{NW&ci;h_Tu_=FfGMyD;QGdAt{kSW^i1X2!9LK(6@U2SbJ_8k;IBe8s z)7CbQg7fhS6vYCyxu}CSi{Q$yXAoMD{uQ0qMhwGV#S!y{swr6UpaQm)MXF7<<=@&o zUyL*4{=p|4k;*u0e*RP5V1=c7qE;eeltv)j0u|zSmi5dyMKB1xpzt%)uW;&*F$L?V zWe2tSH+oI=Bw`*=)P6>NlwO5de2S!@qF6lbqhN~L&Jad<>nwG%v7V1MQ(?Lz>c~N`he=62 zZhCHd?y}qkAjCLwo^8l^e9hHW`~Q&lQ30g<2Vb{>-T%fXP$(h6f6OZU@#$RqtxX7T zKcas%u_g5+>?&%Cl~pEo@Q)&se1YH(dKg*VLsm%@xR6C3vMS3^kc)mV(INDrf>8uM z=x1ax3HgT8zN`wb2WHvBUO(YPgM<*)XV|0Jh#zN(S`}e!L}WNs**2mQI1v?>O+h_p zID>V2LBbnVo%bZFR}+-jCHEEQz8VCHiq0|k zFK_TMTcuoyF7Pr~V`1$5*F0y_lxP2LyhhKzB#5vpf0gIAUDVoYIsV-VgfJHIGi(0W zDR%G%?;&RIsd#e({Nz5~mvxX!d1vZW%S@b`YaGMLHBQR{eiA--ZFTp4NghWbju0Q* zcIMg@xKI5H@!^16+f*4PKJ=mQ>@<9eDG48@Z9#_##2D?~H|Fde#&ue6!G}&T2lJ`g{3%@HOz>ek{>1~F^CMPF zwe72b4pp$_4?&H~xr;ujVsaAP|D(K}$$r+w`=~*DVs~s_>)$O|;@;rOp5THrto8z7 zoMjhNw{~a0y3(NtSrR+W<$mIwn2oW1<4N9$QHUGi56;F=b;`VHL?t)C6AC5EH_};% zEeApvf%rAWA^fd+RFM>!H2P2qd~i~Z*-a<-G)@T7j{4~%$!?xRoM9a7VJi4=G0b5S zSTPoKI0-Z;N95sUK2bmI3S>Qw!{_+FY5)Zn`zJnuj0x<>id`F9bo#Dya7zD!yhWVS zSLt0u{iJnJR#V9vvL1`*5VMBDSfzidwjWgwB1FvL&5%Jx;bz~Kof&)JThzwdo8uW+ zi|Bf+o}_bn8iEQ|7PzUO71a*zS2wCLe>dbE1U{IVQ8&*i9x7RPVpA2;xtyUXrDn`Y zDN1P%##Gku`@w|oST>zG?G(<}v7pC^TdErQH2mDI%IIU5Lf*rPdwq#79Fq{DBWJdU z^8oI*B^YE^w{;fgQil`cn9OT$V%2_=wK`^BI4hzo7W^8#;sP+F7k4w9I)#NWd}}Kk zfDcZ+t(vQxuq1Mb>elW<*28+F2Jmv{=G5b_eL$P)*lHDy7AJOvM{EZZ_zus(X})Ui zJ_vKTDdB^BXeW@nn1nji7`Vg;G8ZS1+o%TWEQLKR#)m7-JLp1{M1elcKVh){ zj}EaGvIH?rqY=B{H~jZd&etaS7+QbU*J;H=)&m}~h|JgUC_RT@5F&wfTW(@RJhIkP z{c0x(?~PTfFWV+D8d1WkBkj)KE0q=6@?7Kzn&BCV3!yrxW@hN|>v!1cY0X!2j#h78 zbq0GXt!fNash)}bTdin(U^)o!I@W6(&J4hZe2ZTP7Z$MU&cm`F#>2RhJj2BFGZw#O z02bXFCejUraMGSV7~W?Ku5mQjF*H?2sA(rYIDzvKR_rf9Ap4lAU|rkgRD9xx6)6DuM^0skcs;U2hyUEy~o5929T@tCajB{4}Oka`h0FklBzpcuc6f9Pen zsc!FH=LKiJMK&QvtZKx4*^_!G5r}Re!KttXJ1a(k41>vO_F?Z~VA+nj&&g=M1WPK+ zJ3JVFV`zcC-2Wrn|K~5O@=T$Bc({n5SMq!8P-{PUL;RcZ2$@76h5m&<(J>Zy5FH{u zjvwp5gHbpYEanY20w44XM1jyzuy^{v^jO`MKnVBAE}RakCX5Wj7=)c>Dn>+Hb6@rw zH8k7l%HE1sABLx4ZXtYt=!0^?)y=GG@4+3cBeW`NDS3;hiRIk_D_=m2Zyu}r`PlGT z;K?Y~`p9mY6FDaN7#%qGf$2J}z>01#2Nj;iq)Kk*U)%)7yg`NLFL^4&>;=!>#NT&< zOlRYX^n`6pp;lpKUJ3YtvCB#zh{x3g9omo==*-W-JZgm%wgoL>YXe5K1SOh-6Kdf% zVygwR><0gLHkUnS`WR*l9-`;sb~f{yR!1%39qMCzlp+w;Q*4CY$PtROIg95v{w@TU z*p9zTf(+(1cLd*@(p!-`tO{${CvlmE;6n@U>rhajBRPsbslQ?nHP$Cl@6ZM2(1v$a zCigweVIjEmQ(h(R`)J~oV~AV+!>?Y!6MyhWOx2jF{Z3D&;UN*a=tmaM~ZS4x9QK592NTi>Fv~Z{iu( z{srVNreMor!>O=?Vf;H74$=b-p%TOqoVgunq(9V($9*_*Jh2TG;Ua&bKGi4K;P%OL zFHIExdC=!Fj_bo&h7pH&0)DXz*ifA~LUF9J1Qt~T1n5Lh^wF%$hhb+O`Q14wU3cK` zLtqsmMO%()hK)95QyqUVEO=)u+Zcoy(j~-Etn!)<2B`pLjkO5z3hy)29PI4aK$Icy zA^5|uuqi7nisMn3J24Wv3x3hAAeVE+t8=9~aGm;G(+bMgpn!E!?YYAqCeX zKSTr~;}9ZL`c?nNJ~Nv`SbZkBEqB zZID40QEv-2#N3R?hpIkj-&t1U(K!(838C?Gv+T2|_f(7WaooIJvJpKEh^v2YWo7c()J+a~Ip)aEROZt%|+c_)geb z!S$?-`UyNJ^7j~}uinTWJ1xqjtsG}HkFqBS6!SOhCUg*)nzJ=denuPasw)U_3^>*n z{!q4y$tXw6<{TR0sn)D_yX zw+SAF{)8%XHNlrqnTd`Ry$rQ)M2M({kd4^;ZBJ)6tXkE3XXeQtE@1VxA8J04{UunY z_Vf(+Fdx*oif6CJZ@(IASI1iIO6#i5<#&G&;zX>w2WK=#B0?OPJf4H8ju=N~M73$- zlh!||AoV$GwCw#ykmv!fc{ax#%Xy}7t+(JVMTn4ofZaZZ^)ALfcg5zcJL&{FXmfp7 zbx(k^_u}!f;6)es#NqJzw!|Zvv5Gh4$7$cyuwy-pjo72w4of-b6YwG9DYwFk)Q@@q zdsRO!bR@+GXJth;(>Z?MgDsyDn^613Y^MHB#e@#d)U&VK>_tQFP~PHIYlBTqVG$j; zuP)qGQ}*n}T{vIF>3&wRm*YOWper?y*o1M+0{-x)hJZh~Ik|(`OYy;Kt6&O|&kSbZ zb6NHxEIu$Ho(-h%UvVI|U=Z?)@IGV@)`42LC4aCQ!?=PqPEAtGpfz^gipS3J36)9f zHS|FC!}_Ze)eJc{nt&3=!ZK99 zb;j?dyna3__+mU4d&f5u1APN)odG(jjX8oN?jcI>3AVhLb>4|J&g)!(eV2d>G$ihD zIO}mQ(BUMue%M!Ua)aI3cN7TW+%2P(jX82Ze(Dk%C=U-QoU=xHE%s@jy75*g;@k*V zxgOs}MXFGteH%>r4BL(VE2|wgai8|0tl~~LoX=HI>er=ZcttO3z&`N+{W6i+QG|wqn#^pF>Cy})IaaD z@Dl5~`c5mc+Y(s(VR#kClM6V7sNTsS#0hW-J&mr^9CX4Oo$I?FY`-4I?t=xF!7nJ1 zi;D5J_!w`)ARdA{SOuyo&J8@i4Oa6gSNa>zM-`=$^oo$N_?39&8uqW?PS;bbpuS`| zP)CMf_I2-+E7^zNVniK~VGkHa4Qe5bM2J-lxrgm@pMrXibKON?O<_1kYtX?d7^=&S zO6qds3-IC34FZ2~cR6^2d?9>{sM!`1GMtD<);eUhlz|KS7y2LJUj#zs!iSiflXYs1O>4Zmtg>)IALfBJ1Hh`@ymEZ1 z;=GBot7&yF>|zZT>I~jBtl*njcMk>)`hpGv*#=-?_DM$^qI2R8t>EoW`>un{T3J|}Id+Nb^r$n-ks;}pJW+`aykn!Dy^UI7JEk#bUZ9&u6oy>jFlKE^9?3g;)h{ztrw z=;tA&CC+uP;JPEV0`+^Mh!G;}(M+S3vjPq>7uc!xZbVw}dc3>ks(1hsXIEmQ{`>`t>M&Hhdqh)P)EhZWjZ zL_~LLL^{=+QooQHKDICTX_J`1n661&2d%^BIv@g`1Alc$D&5B)$3J&PlVO|*y6t0&P2d@u@7 z9qZf``_xDH2LECM_N|BU1|H5m@CG9)D&o)Necp%H;k<3t9n5fU1|bTw{laTkgAT9Y z6|CYp0eNQ?kmj*NTm5?E8&K%M!51xdHFsp_GHus7`5* z#u5B`DDjk@cuIZYJ%4f&D7d}<<`XCc3WWVzbk)EY;}+^!wB+CY zl6Rplr8!gQYFkZdXQg?EK2#p4Ab%PRVG8TF9Tqdd38ze`lwh^MjVZ6`yegvzSMYNw zd*)>Q0@wEHR0*sFWTE>Kq9US=)6uSLzG;oX-(X&$t_Wcn4einYsei51t_g zFrIs{BBM8+&T0567l95>VOd||^Vh)Y55|%XCH7d4%s^MzgLCOl1s{%wr<>Jm%}?XB zo?Df@KU;lXR}s4{oU?w?&P-?Ht>Jo3zq%hxm;pMR2Zy+t>put_F~QmD-)z3c*#(bCkueDFr%wiC^>r@Az)K zmo=cy4xmYGe2?a^i)x_Wu3$-BypU#iEC0>cui)uF{U>0gGORyi3);4it+oC=I^_Eo z5v9of78&$2;>!}mr;%=gs}tBK|Y|0oL${wM)iakJ`yKXxpv;4iV>l2p$Tp0UwUOOdaKL-)lI0_uH#`91forr%C+++^k%G0dWp`gE! zIK&%78Rmcq{Xmo>L5P9ynAt=>mVzO_=9R~moU)}t{0X2zdomWr{6~TiD!#S{73}k> z%DQd8)}Gj#8P0uS{#9Aii-QlV+0>%{lHW`5Xr4~^;B2mmu%X$>=dn-KET?mJ&F!uQ z8N`*3c!jgL-^IUJ2R?`z(aE`q$DwZLM4aMy7Ny`SUw|yX64_LD>I=@bg7aEy@novQ zdWZPuZ+RtBO@{p*#fYEo0ghEI;17R#>;GqNFd`B8{)66y2w^=$U`9NbMHPHL;u2XF zBalIikU#t$XZ*WFs)I028F5CHEYz_My{MQyt~Q=Cf9&@T{TnqdqIN%;a@9`ZcjdlQ+&?_3-a;7I;l>?EJtw03&EYMc;zEt!lzh}eNP*) zJSPFq;dRHsHI5;AF%i6Z5$oI$yJ<|+(LTu2`56W>h!j=~oDN0|0x^zYJub<*{WE^S z*RYK$L?^AKYy@u9#PW8^ZDb8spW4Z~@4+6PO&OVMVGif={+t?Sw|7)Zy}a@h!cQvT5C4n-{^^eqA)@Ol;tDn z2=);85J%;EBt8lTQ9eZ!LLbkVL_{u)Kw3d1mrx_7GWd{j2bJekvzA$eo>W~Tn#Ko> zHyjF1nCpnTiBN9o2{H_1i~cF=AIwLXy`02mcZGf5B7~gcLag>Q@L?<#eoLw^vWMY8 zzWEQasXBKZIC3S&jpw*bkFrgw)i?yM(mzEg?IOR9eBx_Zma`*d=wFd@d;%770a$f7 zUPfQea5H@TyS&ON&ff=5LIuY$V1l!Jop$ZSh|`izTUQXIcy0~r{!;9}6zrinen?C9 z)`vmt1wMR_O}>Gb@Hq_NZ(Mm1Sa2(R=zQuo&gQ-8AvwJ}rf_D}l<#84%gJ^`XSg$i zR&$1LxU0~>UCHw+lQ;4`F$sIk?JD1ZkMa@-^a!8Kqxdne^Y>Gn`)S^6dTIPIwC?u+9qb1W)j2(p=(>50jF2VfE8Ewlk<|aJJUjJdQet^YB21VpCV)OU!4*y$hRO0B?R6 zd%qW~xQ!^qOjhLyylNnE4QFB;l&TIjIoroz!xAE^c5Qr#mmqskPb$ZKJjW;DG~+q&q1;_o_KLHUUB9P`Df>(g4xz>|nx?g~$+!d98cgUVUi4C1QnQIAsWFt=%jvH^R9MJ8F2x$}mTO z5FNk=)fr+>7Z|^_)pl;44mQLT+w(vNyE8{&-_E~0i8#UtyoJ-Scq=O>!YPJ>6V9WO zMW`;Vio%0f#e7!E`5?zko|k7B+33Y}t@&)qb-Qr2;hbSQHuwaq@7F{ZD&Y-Sdt5TN z8vDBqo^k@OFaj}!^L~=IC)H2`6L%Pw5JBx{eG7Sn^Qex6E9{>81@8W8Lab%P2Y$q} zU&Zz@9>r4Zc{!HseL5LTP3~8)_Z#3UW4W7{U_OHP>m0Gk>~*5IwUsyX?ry;gnag>_ z33I$gDW2p$os{zoKgJ~1k+UqC&|!z%w_NXjGBh(d#{zr|C;dH^Uhx{3G#~tYle^oM z_uG_wjP+5nhcl_1yaa8j%L?$}U$VbH`@zw_nPnpKEm}?xm>@o6I1pUIzXCO4f5sL( zJ|9hjYXt9zf8`%yM|MW*wAH=U6H$#W{EE<-Q}w}$iH6u^OVGe-NoytbFwAT^lcFPt zaa2Nx(0e==dsL6wPRntus;bWRW;5?O7_1l$W>_;h8KfA5EscejPr{aNVkNf2>0#K! zEo?VqdDnm>V|c|7{E0rGLhDr5)tW0F54xPk^Umm9j`y%LE5F`AJu(mLVe1RH!l~TX z(csEiu=168Wm#wYV?k%L#*T(B3}HJJn;LY|baasatsU z9ayQA9A;;)W8a&wiN$*dLI4j|#wcyrGO#|u7^BS3$#h$7B zOi!MIjOh^&;;od6a0F=in*u&ug1*$B{Tp9!fB)(yAcx2zjpBkUzg3Z$t%nzp`4+(mevbsfBmy18 zfNay(h@LNNud=gc2oZl9$+V)XJor!vzaoEzuhWLDmQX`NjhUE%sk)OBd(CZ%56-3N zopKjy!%V_*jYtk-Q?Fh{YW4j>h%w#d2mRdzywN zoejpQeBX!bw1zzxCp{d0!(Ps7Sk0eh<^3sdHzJ5li6k~4R`(se{VC3NHc=6|%`nck z7~bB342Atmqu>!eQfHPkXHI5sCtg=7_a%1!2zYQg2xs4jQOC2n+p}RsL$Us0+_zn+ zP9Ao`&2wCRI(Kmzs31NJ=BVLtq!HZlNZ!9pVl=Nl7X&fCdjXtc3V%%o^)BGiW!$6P zpZCEI-X&UT*SE@dC30Wkh1|lq|H5;kLv(AD$A?labBEm5V3)qiJ8&Fl_%??@^abn2 zpf5EARqNpe`0%fq-~WK)BNCxUk>NvRJcCbU`!ZxOCJ|f45hC^w2ocEPD^;W0CGi8N zfQk!QjiyHidU#av#2u8SzQ$CqqZ#&@Jpi1vvRbpo7-$EG?(xs5LtP zyyy!m^u$8DrU-@o-~F+mkyy}~*xtEV&_G@@kUi&u5OY|aWe}>axOQHG4Nc(4;ptr6 zxYhxnLt~gsd(L+<&&&i-7Q*!lnimz^e~J^$RX-uo6g8lS578juG4s>*^54)fz$TPVGP5b zt(58oYq0-Pm1`C8kHf+SBwt}LHaLN`_*{_TWR4vMT1*EMLa9yd_?xf~V-#jSPUf|p zxSG)i=Yh6_we;XR7xD_HX|5u-SrhhPRb)f>!`CS?@G$l@m@DgxTmoBPn<@nCsHn>^ zzp?WEM!nR&R7dUxb9e!yxrRGBo%ayET}{l#2EEG;!#+3cneuyS71b-f<8m!JVcY7h(N|99BU-4fy$Ke)tYdNvw8-- z3_H6jaHPE&#wpEyiV(GlQ>qGM?PLpV^`I^6;V2N`80;wKafbc(ODk?Syni*I+9!^o zhhcZ8crXB~KMQM_f?W+{|4^*Xte~}0&fU8O+nAB?VI;V7ELqe8*g{jc5%_R8uQ`XK zA7CZ7*0?y)ho*SphvH?FCi1V6-IJVeINYWqSaL2lxPo=oOhg&h=e2ke&*6n^WM$rj zH9p2VJ~3gH`ucWnbcOXqKZ$d~oaA{D_uUUKVk`{cVwiwYks;imO_Ok3`N$fwHx)l+G;20Tlh#Kloi72JOgor8Ff#nP>r|UUiuN>GRg7{j0 z2TmA=D9dYP5wVF6F`wK%&#XI3W!un}vy!>n76#EDdp~*03VZ~}a4^TThdszJoY$$x z5t)urSgnnchtxq#I>BmbvkTBj$|FjFmO(cv*ycKg+1N(!Fpzc0L~`9gLm;D*!2YG zH_qwAy*I!JJ&R|#XD9l7h;Q%+@AE=_?&F<&oEXi|)Kh*+wB)vgmkVGP9}`_Efp^gm z_RtkCq7O`=J$O)=ILq@~MoS!l+|(V%f22N2Xpw6)>PYna$9+6@9X9ap!A9hn78CweT!r zB8FNrs@K}7W%q?FqGPhD9$3E9dV?YK#3nnZc!4#S9TUGWhoNqZe*DSUnjVIEj^XUL z8~c0^;X*8I9{6BvZUWXflrtWQH{)y$H>deDfwvsTbJwuCeoR#FGgjWB*oAq%1K|-x z@D@~VS%i&^;V$eB8O$nuBY&G0ybEkFBY6%n!-@QB9Y$~Xf__k-!_hDfJ)x02XO;LE zkYFNrHx9nwR4(78h%pWxVSeESFzQ{b^iA;KcHY5ku5b@L;n@_&bPBIide;zTxRd8! z04r3UTMJgHcO~z*5ybi%?_@puom6TU>NL)M8}|PO`(-|LsLnV7j?j;-8(hM9ydQx- z4-;!K3Xuo*C`#<*U9R)ewqhIw?=xxF+Vfo;JC684exxD%i3}y8S3G!yDphVJU<13Q z3I{7C%}W?lu*bVD9>d=F4r)bJNGK7r`|{`aSuM2}$2j-G-flZLos6M}A>UWAr5)CH zG`7_Z7NFi!Z~XUDu-`7Q2Gwp`fFPZ~hhwook24B!BKE3Qy&d3__=k5SL7@usyI$J2=gOy9OvFi>n znD*S2{bJ)d=NPVMJ%(O`T&5TItQX`QurAz3)Ono-E?mazZ^O=Shvkd{x$Hb24=ThA z4*etNfH!eoEsiV3JFCw->`I=ZKm8RwK*I)L;WCa<14jkF z54ry9oc|?WQSjfk^a(hFZ+n=4Ykfp0Gi300@C!W(^PxsH3n%ZxET^-!)S{F@7V!)c5{h5X9!4b>lv3#wY}@BOiRJGA5w&hys4=!y;YNjRV% z(F064Fd>OG*~T!BfJK-GJr$5!!(_rZnu-}6@gC31K zSKh65x^vuAEO03~iCu`)6(Kjd7wf57Pk|51lbv439km6eoGILuE$*QsXE=;K zhjWkK*Ad`C=x?ikH56o+jfb^jI6&?u&w|MwG%uya-A z9JTS@<;Pg22vL+6L=&P9{m4^Ty>T4%Ue$9OU`kK0SwXc3jCq>#y$wGp_-|YL1nlLq zf~g$bf5+rYM4nPy5FzXqw}V222uL0Edsw6c@uD(@h*{E>ktS_&349}j)ihCc{Q#4l< zWv5-KiK+%RG~=f-9NWrdbtp%1Z%zVIS4KtNsNS$PT*b_o2W~8~CwFcPQr(#=uu*H3 ze!%8SkZUZGdl$4APu$U&KKH>G)Ur?!Zz_Jl4WPg>A_gVEr|R5C5%~S5V8m;%{)e&I zrJTvy1!r9phw1!{YTQF{mI$JjJ;e!y`V2vlRTd?R^3w#EuCeb^-MqAI_ua%8zJn;gOp4J)iY z+6bYmc_`ZIXSBl7?8oSYJ)6VmitQPXJe=Rz1V3lPx?jaakSVd?gZ z=m9tpM}3Oh;SzSC-^9-o+(!{`sxf?jccPrYY{lpB5_>xSnj)|ph(v6cg}1joBiW|kanxbkkCCa+1#{4&(5EPcWtV|vlma1S z5i$t-vh2%LO>!@of_X~u!Ki}P-Z0^VQ3#)_4a?XKRB$T`KJ3El#0_7i4xKT=KnZbW zKhVHhN-fVE#?d^s^Scc;**G0*SF6jo3T#6K8`l}`X2X0jGf0xbq&ukGL@ zZNPz+yvDQFCQ{;c>#@HJmTZLMB;p6>;ep)9N^A#JBO-N9vpJ0XUI#pkJ;@F(A#N}k z%;~}1iA}0hI9*U3{;r^yXwaYS6n>uwZ!ofYGTT5fzmOb`DVkK;X_a|ZWf?EG=A@hnn@4Fh$z5~Zt4mx~HBxE~YQM&*i{tKLNYTf_;A56SUr}KqpAzD~RrLOu9t)KFiPw)5#p@4`7$_TNB` z#D4KjAXRHVi~qtrw&`7RZ{zjbQ#-J2{AZPf`uOq$@xhFR{)L+niil1azl7*)K0j979PVpLR{ca#c6MP)CE331H?@GRL11#VJlp>9fIOAeRJcTz{=|AQiWwCpe zsa3YG&f^O33%!Ywoc((c;&qP7ah4iv#o4C<%rQhC&Y(y0vfLGHQ}H#9as=ar(cp+LmEW?M8>y0GRf%u!mpZ+0PT(n}P2#1jf<|He&QaUHpl}3Z8?zFUFpq zAg16nEj@)dvElcK0Nz3LVF;{ZCjS2`V9%~;y*?5@qY4=CAlIFTKVdCGS=M~JHyV*~ z+%xwx{(|+7KjxLf%J;>`QLj=xIu)nY(*GgP?$Y{1N%o|sX+`27pRl(Swp|~lqC&R% zRMq*r3hZN7Y~5_=`&fH9Ug^B7G8}OT@rFV4S4_=K%gtcBh(4^&#AhpVJ?HS%0DlUD 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%0A^u!e8x)w0?JdCz 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�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�w)1G7)aTVcAKol9$Ot}s#IC;R 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Î=D~Cengl3?+!&80S;i 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 literal 0 HcmV?d00001 diff --git a/benchmarks/cardiff_50km_aeqd_100m.bt b/benchmarks/cardiff_50km_aeqd_100m.bt deleted file mode 100644 index baf9cb5b09826171e883e2ab1699be2ac6d135b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508288 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 z 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⁡I%8nPzxH+g??-?MS1;bP;p5GEcL6xp7r-mb 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 Z*9&-$+mN77f-t*a8_j Date: Sun, 11 Jan 2026 17:17:59 -0800 Subject: [PATCH 22/27] chore: remove cargo toml for portability Currently we use the cargo toml option to guarantee good performance on x86 machines, which is especially needed for world runs. We will recommend it elsewhere, but make sure it is enabled on all Turin workers --- .cargo/config.toml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index b736a9f..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.x86_64-unknown-linux-gnu] -rustflags = ["-Ctarget-cpu=native"] \ No newline at end of file From dd72e729410d62179c171224552178e2a53b9a77 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 11 Jan 2026 17:25:30 -0800 Subject: [PATCH 23/27] chore: document rusttoolchain file --- rust-toolchain.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 9d26467..9327bad 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,5 @@ +# Nigtly is required for the specialization, const generic exprs, and portable SIMD. +# Once all are stabilized we can move to a stable toolchain [toolchain] channel = "nightly-2025-10-20" -components = ["rustfmt", "clippy"] \ No newline at end of file +components = ["rustfmt", "clippy"] From 3d497fe68a5d3de1f45b3abe8d0748118370cbaf Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 11 Jan 2026 18:01:00 -0800 Subject: [PATCH 24/27] chore: add refraction tests --- .../src/cpu/vector_intrinsics.rs | 6 +-- crates/total-viewsheds/src/output/ascii.rs | 2 +- crates/total-viewsheds/src/run/compute.rs | 38 ++++++++++++++----- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/vector_intrinsics.rs b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs index 3a6ede5..4d85921 100644 --- a/crates/total-viewsheds/src/cpu/vector_intrinsics.rs +++ b/crates/total-viewsheds/src/cpu/vector_intrinsics.rs @@ -2,7 +2,7 @@ use crate::cpu::los::{Angle, PrefixMax}; use itertools::izip; use std::iter::zip; use std::simd::prelude::{SimdFloat as _, SimdInt as _, SimdPartialOrd as _}; -use std::simd::{f32x4, f32x8, LaneCount, Mask, Simd, SupportedLaneCount}; +use std::simd::{f32x4, LaneCount, Mask, Simd, SupportedLaneCount}; /// `VectorMax` performs an element-wise SIMD max of floats, allowing for architecture /// specific implementations @@ -81,7 +81,7 @@ impl VectorGreater<4> for VectorLos<4> { #[cfg(target_feature = "avx")] impl VectorMax<8> for VectorLos<8> { #[inline] - fn max(lhs: f32x8, rhs: f32x8) -> f32x8 { + fn max(lhs: Simd, rhs: Simd) -> Simd { use std::arch::x86_64::_mm256_max_ps; // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input // thus allowing this to be non IEEE754 compliant @@ -92,7 +92,7 @@ impl VectorMax<8> for VectorLos<8> { #[cfg(target_feature = "avx")] impl VectorGreater<8> for VectorLos<8> { #[inline] - fn gt(lhs: f32x8, rhs: f32x8) -> Mask { + fn gt(lhs: Simd, rhs: Simd) -> Mask { use std::arch::x86_64::{_mm256_castps_si256, _mm256_cmp_ps, _CMP_GT_OS}; // safety: the caller of Viewshed<4> guarantees that -0.0 or NaN are not in the input diff --git a/crates/total-viewsheds/src/output/ascii.rs b/crates/total-viewsheds/src/output/ascii.rs index af58dbd..c184de2 100644 --- a/crates/total-viewsheds/src/output/ascii.rs +++ b/crates/total-viewsheds/src/output/ascii.rs @@ -18,7 +18,7 @@ pub fn make_viewshed( .to_degrees(viewshed_pov_metric) .unwrap(); - let compute = crate::run::compute::test::compute(&mut dem, backend); + let compute = crate::run::compute::test::compute(&mut dem, backend, None); let mut viewshed = crate::output::viewshed::Viewshed::reconstruct( &super::ring_data::Source::RAM(crate::output::ring_data::AllData { diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index 88c7af6..1f79109 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -288,7 +288,11 @@ pub mod test { dem } - pub fn compute(dem: &mut crate::dem::DEM, backend: crate::config::Backend) -> Compute<'_> { + pub fn compute( + dem: &mut crate::dem::DEM, + backend: crate::config::Backend, + refraction_override: Option, + ) -> Compute<'_> { let config = Config { observer_height: 0.8, scale: 1.0, @@ -301,7 +305,7 @@ pub mod test { output_directory: None, rings_per_km: 5000.0, heatmap: crate::config::HeatmapNormalisation::UnitScale, - refraction: 0.13, + refraction: refraction_override.unwrap_or(0.13f32), thread_count: 1, // single thread it for consistency }; @@ -312,7 +316,7 @@ pub mod test { fn total_surfaces(backend: crate::config::Backend) { let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem, backend); + let compute = compute(&mut dem, backend, None); #[rustfmt::skip] assert_eq!( compute.total_surfaces, @@ -332,7 +336,7 @@ pub mod test { )] fn longest_lines(backend: crate::config::Backend) { let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem, backend); + let compute = compute(&mut dem, backend, None); #[rustfmt::skip] expect_eq!( @@ -379,11 +383,12 @@ pub mod test { use super::{compute, make_dem}; use crate::config::Backend; use googletest::prelude::*; + use std::iter::zip; #[test] fn total_surfaces() { let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); - let compute = compute(&mut dem, Backend::CPU); + let compute = compute(&mut dem, Backend::CPU, None); #[rustfmt::skip] assert_eq!( compute.total_surfaces, @@ -402,11 +407,26 @@ pub mod test { } #[gtest] - #[ignore = "TODO@ryan: Enable once you've added refraction"] fn refraction_affects_visibility() { - // Set your refraction constant to this so that the effect is so dramatic that it shows - // up in our tiny test DEMS. - // let refraction = -kernel::kernel::EARTH_DIAMETER; + let none_refraction = { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute_no_refraction = compute(&mut dem, Backend::CPU, None); + compute_no_refraction.total_surfaces + }; + + let very_refraction = { + let mut dem = make_dem(&kernel::tests::dems::bigger_dem()); + let compute_no_refraction = compute( + &mut dem, + Backend::CPU, + Some(-kernel::kernel::EARTH_DIAMETER), + ); + compute_no_refraction.total_surfaces + }; + + for (no_refraction, refraction) in zip(none_refraction, very_refraction) { + expect_ge!(no_refraction, refraction); + } } } } From f52cff7462a6110a21557dfcedcbff96ecdb7239 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 11 Jan 2026 20:09:29 -0800 Subject: [PATCH 25/27] feat: make unrolled angle calculation for line of sight straightlined After some thought about how the L1 cache is functioning in our line of sight algorithm, this commit calculates all the angles and puts them into a buffer, and then an unrolled prefix max is then calculated on top of that. It ends up being much quicker on my i9900k, offering about a 20% speedup, and it is expected machines with larger L1 caches will be better. --- .../total-viewsheds/src/cpu/unrolled_los.rs | 67 +++++++++---------- 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/unrolled_los.rs b/crates/total-viewsheds/src/cpu/unrolled_los.rs index 9ea9e4c..49812ae 100644 --- a/crates/total-viewsheds/src/cpu/unrolled_los.rs +++ b/crates/total-viewsheds/src/cpu/unrolled_los.rs @@ -44,6 +44,9 @@ where /// `UnrolledLOS` implements an Unrolled `LineOfSight` calculation pub struct UnrolledVectorLos { + /// `angles` holds a buffer for line of sight angles to be put into + /// which is exactly `max_los+1` long + angles: Vec, /// `distances` holds `max_los` distances distances: Vec, /// `adjustments` holds `max_los` earth curvature adjustments @@ -93,6 +96,7 @@ impl UnrolledVectorLos (f32, f32, Vec) { - let mut angles = [0.0f32; UNROLL * VECTOR_WIDTH + 1]; let mut prefix_max = [0.0f32; UNROLL * VECTOR_WIDTH]; prefix_max[UNROLL * VECTOR_WIDTH - 1] = -2000.0; - angles[0] = -2000.0; + + VectorLos::::calculate_angles( + pov_height, + line, + &self.distances, + &self.adjustments, + &mut self.angles[1..], + ); let mut output: Vec = vec![]; - let (chunked_line, rest_line) = line.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + let (chunked_prefix_angles, rest_prefix_angles) = + self.angles[..self.angles.len() - 1].as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); + let (chunked_angles, rest_angles) = + self.angles[1..].as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); let (chunked_distances, rest_distances) = self.distances.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); - let (chunked_adjustments, rest_adjustments) = - self.adjustments.as_chunks::<{ UNROLL * VECTOR_WIDTH }>(); - - let los = izip!(chunked_line, chunked_distances, chunked_adjustments).fold( + let los = izip!(chunked_prefix_angles, chunked_angles, chunked_distances).fold( UnrollVector:: { longest: [0.0; UNROLL * VECTOR_WIDTH], heatmap: [0.0; UNROLL * VECTOR_WIDTH], }, - |acc, (unroll_line, distances, adjusts)| { - VectorLos::::calculate_angles( - pov_height, - unroll_line, - distances, - adjusts, - &mut angles[1..], - ); - + |acc, (prefix_angles, angles, distances)| { VectorLos::::prefix_max( prefix_max[UNROLL * VECTOR_WIDTH - 1], - &angles[..UNROLL * VECTOR_WIDTH], + prefix_angles, &mut prefix_max, ); - let new_acc = VectorLos::::accumulate( + VectorLos::::accumulate( acc, - &angles[1..], + angles, &prefix_max, distances, &mut output, - ); - - angles[0] = angles[UNROLL]; - new_acc + ) }, ); - VectorLos::::calculate_angles( - pov_height, - rest_line, - rest_distances, - rest_adjustments, - &mut angles[1..=rest_line.len()], - ); - VectorLos::::prefix_max( prefix_max[UNROLL * VECTOR_WIDTH - 1], - &angles[..rest_line.len()], - &mut prefix_max[..rest_line.len()], + rest_prefix_angles, + &mut prefix_max[..rest_angles.len()], ); let new_acc = VectorLos::::accumulate( los, - &angles[1..=rest_line.len()], - &prefix_max[..rest_line.len()], + rest_angles, + &prefix_max[..rest_angles.len()], rest_distances, &mut output, ); @@ -213,11 +204,13 @@ where ) -> UnrollVector { debug_assert!( angles.len().is_multiple_of(VECTOR_WIDTH), - "distance unroll should be multiple of width" + "angles with len {} should be multiple of {}", + angles.len(), + VECTOR_WIDTH, ); debug_assert!( prefix.len().is_multiple_of(VECTOR_WIDTH), - "distance unroll should be multiple of width" + "prefix unroll should be multiple of width" ); debug_assert!( distances.len().is_multiple_of(VECTOR_WIDTH), From e294d9b85113b764555f4db6396e063dc9667971 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Sun, 11 Jan 2026 21:31:11 -0800 Subject: [PATCH 26/27] chore: update unroll factor based on new algorithm --- crates/total-viewsheds/src/cpu/kernel.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/total-viewsheds/src/cpu/kernel.rs b/crates/total-viewsheds/src/cpu/kernel.rs index 9d25f66..3e2a432 100644 --- a/crates/total-viewsheds/src/cpu/kernel.rs +++ b/crates/total-viewsheds/src/cpu/kernel.rs @@ -46,8 +46,7 @@ fn dem_to_pov(dem_id: i32, width: usize, max_los: usize) -> i32 { /// vectors, and 10-way unrolling for the 16-wide vector as it is optimal for Turins const DEFAULT_UNROLL: usize = const { match DEFAULT_VECTOR_LENGTH { - 4 | 8 => 8, - 16 => 10, + 4 | 8 | 16 => 10, #[expect( clippy::unreachable, reason = "no one should be setting any other constants" From 263977eded954d95e016ff21302944166e945664 Mon Sep 17 00:00:00 2001 From: Ryan Berger Date: Wed, 14 Jan 2026 00:46:07 -0800 Subject: [PATCH 27/27] chore: add option to disable image rendering --- crates/total-viewsheds/src/config.rs | 4 ++ crates/total-viewsheds/src/main.rs | 1 + crates/total-viewsheds/src/run/compute.rs | 47 +++++++++++++++-------- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/crates/total-viewsheds/src/config.rs b/crates/total-viewsheds/src/config.rs index 9c7cd49..b84b54f 100644 --- a/crates/total-viewsheds/src/config.rs +++ b/crates/total-viewsheds/src/config.rs @@ -108,6 +108,10 @@ pub struct Compute { /// Thread count used for CPU parallelism #[arg(long, value_name = "thread count", default_value = "8")] pub thread_count: usize, + + /// Controls line of sight and total viewshed image generation + #[arg(long, value_name = "render image", default_value = "false")] + pub disable_image_render: bool, } #[derive(clap::Parser, Debug)] diff --git a/crates/total-viewsheds/src/main.rs b/crates/total-viewsheds/src/main.rs index 55af12c..a271f52 100644 --- a/crates/total-viewsheds/src/main.rs +++ b/crates/total-viewsheds/src/main.rs @@ -141,6 +141,7 @@ fn compute(config: &config::Compute) -> Result<()> { heatmap: config.heatmap, refraction: config.refraction, thread_count: config.thread_count, + disable_render_image: config.disable_image_render, }; let mut compute = run::compute::Compute::new(compute_config, &mut dem)?; compute.run()?; diff --git a/crates/total-viewsheds/src/run/compute.rs b/crates/total-viewsheds/src/run/compute.rs index 1f79109..106aa16 100644 --- a/crates/total-viewsheds/src/run/compute.rs +++ b/crates/total-viewsheds/src/run/compute.rs @@ -47,6 +47,8 @@ pub struct Config { pub refraction: f32, /// Number of threads for computation pub thread_count: usize, + /// Disables the rendering of PNG images (good for long runs) + pub disable_render_image: bool, } impl<'compute> Compute<'compute> { @@ -209,6 +211,16 @@ impl<'compute> Compute<'compute> { return Ok(()); }; + crate::output::bt::save( + self.dem, + &self.total_surfaces, + &output_dir.join("total_surfaces.bt"), + )?; + + if self.config.disable_render_image { + return Ok(()); + } + crate::output::png::save( &self.total_surfaces, self.dem.tvs_width, @@ -217,12 +229,6 @@ impl<'compute> Compute<'compute> { self.config.heatmap, )?; - crate::output::bt::save( - self.dem, - &self.total_surfaces, - &output_dir.join("total_surfaces.bt"), - )?; - Ok(()) } @@ -233,6 +239,22 @@ impl<'compute> Compute<'compute> { return Ok(()); }; + let packed_lines = self + .longest_lines + .iter() + .map(crate::los_pack::LineOfSightPacked::as_f32) + .collect::>(); + + crate::output::bt::save( + self.dem, + &packed_lines, + &output_dir.join("longest_lines.bt"), + )?; + + if self.config.disable_render_image { + return Ok(()); + } + let distances = self .longest_lines .iter() @@ -247,6 +269,7 @@ impl<'compute> Compute<'compute> { } }) .collect::>(); + crate::output::png::save( &distances, self.dem.tvs_width, @@ -255,17 +278,6 @@ impl<'compute> Compute<'compute> { self.config.heatmap, )?; - let packed_lines = self - .longest_lines - .iter() - .map(crate::los_pack::LineOfSightPacked::as_f32) - .collect::>(); - crate::output::bt::save( - self.dem, - &packed_lines, - &output_dir.join("longest_lines.bt"), - )?; - Ok(()) } } @@ -307,6 +319,7 @@ pub mod test { heatmap: crate::config::HeatmapNormalisation::UnitScale, refraction: refraction_override.unwrap_or(0.13f32), thread_count: 1, // single thread it for consistency + disable_render_image: false, }; let mut compute = Compute::new(config, dem).unwrap();