diff --git a/Makefile b/Makefile deleted file mode 100644 index 3dad0fc..0000000 --- a/Makefile +++ /dev/null @@ -1,107 +0,0 @@ -R_DIR := r -PKG := $(shell awk '/^Package:/{print $$2; exit}' $(R_DIR)/DESCRIPTION) -R ?= R -RSCRIPT ?= Rscript - -msg = @printf '\033[38;2;108;163;160m[%s] %s\033[0m\n' "$$(date -u '+%Y-%m-%d %H:%M:%SZ')" "$(1)" - -.DEFAULT_GOAL := help - -.PHONY: help format format-r document document-r install install-r test test-r \ - build build-r check check-r check-cran manual-r site site-r clean clean-r - -# ── Help ───────────────────────────────────────────────────────────────────── -help: - $(call msg,Available targets:) - @printf '%s\n' \ - ' format Format R code with air CLI (if available)' \ - ' document Generate roxygen2 documentation' \ - ' install Document and install the R package with pak' \ - ' test Run testthat::test_local(stop_on_failure = TRUE)' \ - ' build Build the R source tarball' \ - ' check Run R CMD check on the built tarball' \ - ' check-cran Run R CMD check --as-cran' \ - ' site Build pkgdown site' \ - ' clean Remove tarballs and .Rcheck output' - -# ── Format ──────────────────────────────────────────────────────────────────── -format: format-r - -format-r: - $(call msg,─── Formatting $(PKG) [R]... ───) - @if command -v air >/dev/null 2>&1; then \ - cd $(R_DIR) && air format .; \ - else \ - echo " Note: 'air' CLI not found — skipping R code formatting."; \ - fi - $(call msg,Done) - -# ── Document ────────────────────────────────────────────────────────────────── -document: document-r - -document-r: format-r - $(call msg,─── Documenting $(PKG) [R]... ───) - cd $(R_DIR) && $(RSCRIPT) -e "roxygen2::roxygenize()" - $(call msg,Done) - -# ── Install ─────────────────────────────────────────────────────────────────── -install: install-r - -install-r: document-r - $(call msg,─── Installing $(PKG) [R]... ───) - cd $(R_DIR) && $(RSCRIPT) -e "pak::local_install(upgrade = TRUE)" - $(call msg,Done) - -# ── Test ────────────────────────────────────────────────────────────────────── -test: test-r - -test-r: - $(call msg,─── Testing $(PKG) [R]... ───) - cd $(R_DIR) && $(RSCRIPT) -e "testthat::test_local(stop_on_failure = TRUE)" - $(call msg,Done) - -# ── Build ───────────────────────────────────────────────────────────────────── -build: build-r - -build-r: clean-r - $(call msg,─── Building $(PKG) [R]... ───) - cd $(R_DIR) && $(R) CMD build . - $(call msg,Done) - -# ── Check ───────────────────────────────────────────────────────────────────── -check: check-r - -check-r: build-r - $(call msg,─── Running R CMD check on $(PKG) [R]... ───) - cd $(R_DIR) && $(R) CMD check $(PKG)_*.tar.gz - rm -f $(R_DIR)/$(PKG)_*.tar.gz - $(call msg,Done) - -check-cran: build-r - $(call msg,─── Running R CMD check --as-cran on $(PKG) [R]... ───) - cd $(R_DIR) && $(R) CMD check $(PKG)_*.tar.gz --as-cran - rm -f $(R_DIR)/$(PKG)_*.tar.gz - $(call msg,Done) - -# ── Manual ─────────────────────────────────────────────────────────────────── -manual-r: - $(call msg,─── Building manual for $(PKG)... ───) - cd $(R_DIR) && $(R) CMD Rd2pdf . --output=$(PKG).pdf - $(call msg,Done) - -# ── Site ────────────────────────────────────────────────────────────────────── -site: site-r - -site-r: - $(call msg,─── Building pkgdown site for $(PKG) [R]... ───) - cd $(R_DIR) && $(RSCRIPT) -e "pkgdown::build_site()" - $(call msg,Done) - -# ── Clean ───────────────────────────────────────────────────────────────────── -clean: clean-r - -clean-r: - $(call msg,─── Cleaning build artifacts [R]... ───) - rm -rf $(R_DIR)/$(PKG).Rcheck - rm -f $(R_DIR)/$(PKG)_*.tar.gz - $(call msg,Done) diff --git a/README.md b/README.md index ddac568..fb6bb96 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,4 @@ ![rtemis.draw cover](https://docs.rtemis.org/r/draw/assets/cover.avif) -Interface to Apache ECharts -() for creating interactive charts and -visualizations. Offers type-checked, validated configuration objects -that mirror the ECharts TypeScript API, with convenience functions for -common chart types. - -Allows cross-language support for arbitrarily complex visualizations with a common JSON configuration format. Language-specific high-level APIs provide a user-friendly interface to create and customize common chart types, while low-level APIs allow direct access to the full power of ECharts for advanced users. - -First available implementation is in [R](r/README.md) +Interface to JS libraries for high performance interactive visualization using type-checked, validated configuration objects. diff --git a/justfile b/justfile new file mode 100644 index 0000000..f9ef10e --- /dev/null +++ b/justfile @@ -0,0 +1,88 @@ +# justfile +# ::rtemis:: +# 2026- EDG rtemis.org + +r_dir := "r" +pkg := `awk '/^Package:/{print $2; exit}' r/DESCRIPTION` +r := env("R", "R") +rscript := env("RSCRIPT", "Rscript") +tarball_glob := pkg + "_*.tar.gz" + +# List available recipes +default: + @just --list + +_msg msg: + @printf '\033[38;2;108;163;160m[%s] %s\033[0m\n' "$(date '+%Y-%m-%d %H:%M:%S')" "{{msg}}" + +# Format R code with air CLI (if available) +format: + @just _msg "─── Formatting {{pkg}} package... ───" + @if command -v air >/dev/null 2>&1; then \ + cd {{r_dir}} && air format .; \ + else \ + echo " Note: 'air' CLI not found — skipping R code formatting."; \ + fi + @just _msg "Done" + +# Generate roxygen2 documentation +document: format + @just _msg "─── Documenting {{pkg}} package... ───" + cd {{r_dir}} && {{rscript}} -e "roxygen2::roxygenize()" + @just _msg "Done" + +# Document and install the package locally with pak +install: document + @just _msg "─── Installing {{pkg}} package... ───" + cd {{r_dir}} && {{rscript}} -e "pak::local_install(upgrade = TRUE)" + @just _msg "Done" + +# Run testthat::test_local(stop_on_failure = TRUE) +test: + @just _msg "─── Running testthat tests for {{pkg}}... ───" + cd {{r_dir}} && {{rscript}} -e "testthat::test_local(stop_on_failure = TRUE)" + @just _msg "Done" + +# Build the source tarball +build: clean + @just _msg "─── Building {{pkg}} package... ───" + cd {{r_dir}} && {{r}} CMD build . + @just _msg "Done" + +# Run R CMD check on the built tarball (pass extra flags, e.g. `just check --as-cran`) +check *flags: build + @just _msg "─── Running R CMD check {{flags}} on {{pkg}}... ───" + cd {{r_dir}} && {{r}} CMD check {{tarball_glob}} {{flags}} + rm -f {{r_dir}}/{{tarball_glob}} + @just _msg "Done" + +# Run R CMD check --as-cran +check-cran: (check "--as-cran") + +# Run R CMD check --as-cran --no-tests +check-cran-no-tests: (check "--as-cran" "--no-tests") + +# Check URLs in package documentation with urlchecker +urls: + @just _msg "─── Checking URLs for {{pkg}}... ───" + cd {{r_dir}} && {{rscript}} -e "urlchecker::url_check()" + @just _msg "Done" + +# Build package manual (PDF) +manual: + @just _msg "─── Building manual for {{pkg}}... ───" + cd {{r_dir}} && {{r}} CMD Rd2pdf . --output={{pkg}}.pdf + @just _msg "Done" + +# Build pkgdown site +site: + @just _msg "─── Building pkgdown site for {{pkg}}... ───" + cd {{r_dir}} && {{rscript}} -e "pkgdown::build_site()" + @just _msg "Done" + +# Remove tarballs and .Rcheck output +clean: + @just _msg "─── Cleaning build artifacts... ───" + rm -rf {{r_dir}}/{{pkg}}.Rcheck + rm -f {{r_dir}}/{{tarball_glob}} + @just _msg "Done" diff --git a/r/.Rbuildignore b/r/.Rbuildignore index 5619e7e..88c164a 100644 --- a/r/.Rbuildignore +++ b/r/.Rbuildignore @@ -22,4 +22,6 @@ ^pkgdown$ ^SKILL\.md$ ^LICENSE\.md$ -^Makefile$ \ No newline at end of file +^justfile$ +^tools$ +node_modules diff --git a/r/DESCRIPTION b/r/DESCRIPTION index 0e22d49..37042cf 100644 --- a/r/DESCRIPTION +++ b/r/DESCRIPTION @@ -1,6 +1,7 @@ Package: rtemis.draw Title: Interactive Visualization -Version: 0.2.2 +Version: 0.4.0 +Date: 2026-06-29 Authors@R: person(given = "E.D.", family = "Gennatas", role = c("aut", "cre", "cph"), email = "gennatas@gmail.com", @@ -47,6 +48,8 @@ Collate: 'option.R' 'theme.R' 'draw.R' + 'network.R' + 'map.R' 'draw_a3.R' 'draw_spectrogram.R' 'draw_gantt.R' diff --git a/r/NAMESPACE b/r/NAMESPACE index 2dc7f82..191d112 100644 --- a/r/NAMESPACE +++ b/r/NAMESPACE @@ -9,6 +9,9 @@ export(BarSeries) export(BoxplotSeries) export(DataZoom) export(EChartsOption) +export(GraphEdge) +export(GraphModel) +export(GraphNode) export(Grid) export(HeatmapSeries) export(ItemStyle) @@ -17,6 +20,9 @@ export(LabelOption) export(Legend) export(LineSeries) export(LineStyle) +export(MapLibreOption) +export(MapModel) +export(MapRow) export(MarkArea) export(MarkAreaDataPoint) export(MinorSplitLine) @@ -27,6 +33,7 @@ export(SankeyLevelOption) export(SankeyNodeItem) export(SankeySeries) export(ScatterSeries) +export(SigmaOption) export(SplitArea) export(SplitLine) export(TextStyle) @@ -39,11 +46,15 @@ export(drawOutput) export(draw_a3) export(draw_bar) export(draw_boxplot) +export(draw_choropleth) export(draw_density) export(draw_gantt) +export(draw_graph) export(draw_heatmap) export(draw_histogram) export(draw_line) +export(draw_map) +export(draw_network) export(draw_pie) export(draw_sankey) export(draw_scatter) diff --git a/r/R/draw.R b/r/R/draw.R index 21689b4..f5a0895 100644 --- a/r/R/draw.R +++ b/r/R/draw.R @@ -4,44 +4,156 @@ # Constants ---- DEFAULT_MARGINS <- c(top = 36, right = 36, bottom = 36, left = 36) -#' Render an ECharts option as an htmlwidget +#' Resolve a theme and create a backend widget #' -#' Low-level function that takes an [EChartsOption] (or a plain list) and -#' renders it as an interactive htmlwidget. +#' Shared tail of every [draw()] method. Resolves the uniform `theme` argument +#' into the `autoTheme` / `theme` / `themeDark` payload fields that every backend +#' JS binding reads, applies the standard sizing policy, and creates the widget. +#' Backends differ only in the `name` (which JS binding) and the `payload` they +#' build; theme handling and sizing are identical, so they live here. #' -#' @param option [EChartsOption] or named list: Option object to render. +#' @param name Character: htmlwidget name (`"rtemis-draw"`, `"rtemis-graph"`, ...). +#' @param payload Named list: Backend-specific widget payload. The theme fields +#' are merged into this list. +#' @param theme Optional [Theme], list, or `NA`: Theme override; `NULL` (default) +#' enables light/dark auto-detection. +#' @param width Optional Character or Numeric: Widget width. +#' @param height Optional Character or Numeric: Widget height. +#' @param elementId Optional Character: Explicit element ID. +#' @return htmlwidget: Widget object. +#' @keywords internal +#' @noRd +render_widget <- function( + name, + payload, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL +) { + # Theme resolution is uniform across backends: + # NA -> no theme (raw backend defaults) + # NULL -> auto-detect: send both light + dark, let JS pick by dark mode + # Theme / list -> an explicit theme + auto_theme <- FALSE + theme_list <- NULL + theme_dark_list <- NULL + if (identical(theme, NA)) { + theme_list <- NULL + } else if (is.null(theme)) { + auto_theme <- TRUE + theme_list <- to_list(theme_light()) + theme_dark_list <- to_list(theme_dark()) + } else if (S7::S7_inherits(theme, Theme)) { + theme_list <- to_list(theme) + } else if (is.list(theme)) { + theme_list <- theme + } + + payload <- c( + payload, + list( + autoTheme = if (auto_theme) TRUE else NULL, + theme = theme_list, + themeDark = theme_dark_list + ) + ) + + # Respect explicit pixel dimensions: when a numeric width/height is given, + # disable browser.fill/viewer.fill so the widget keeps the computed size + # instead of expanding to fill the container. + should_fill <- is.null(width) || is.character(width) + + htmlwidgets::createWidget( + name = name, + x = payload, + width = width, + height = height, + sizingPolicy = htmlwidgets::sizingPolicy( + browser.fill = should_fill, + browser.padding = 0, + viewer.fill = should_fill, + viewer.padding = 0, + fill = should_fill + ), + package = "rtemis.draw", + elementId = elementId + ) +} + +#' Render a render-spec option object as an htmlwidget +#' +#' `draw()` is the single low-level entry point for every rendering backend in +#' rtemis.draw. It is an S7 generic that dispatches on the *option object* -- the +#' complete, validated render spec for one backend -- so the right JS binding is +#' selected purely by type, with no ambiguity: +#' +#' - [EChartsOption] -> ECharts (`rtemis-draw` widget) +#' - [SigmaOption] -> Sigma.js (`rtemis-graph` widget) +#' +#' A plain named list is treated as a raw ECharts option (back-compatible with +#' the original `draw()`). +#' +#' Theme handling is uniform across backends and lives on `draw()`, not on the +#' option object: pass `NULL` (default) for light/dark auto-detection (from VS +#' Code, RStudio, or the browser's `prefers-color-scheme`), `NA` for no theme +#' (raw backend defaults), or a [Theme] / list to force one. +#' +#' @param option [EChartsOption], [SigmaOption], or named list: Render spec to +#' draw. #' @param theme Optional [Theme], list, or `NA`: Theme override. `NULL` enables -#' auto-detection of light/dark mode, or `NA` for no theme (raw ECharts -#' defaults). When `NULL`, the widget detects dark mode from VS Code, -#' RStudio, or the browser's `prefers-color-scheme` and applies -#' [theme_light()] or [theme_dark()] accordingly. -#' @param renderer Character \{"canvas", "svg"\}: Rendering engine. +#' light/dark auto-detection; `NA` disables theming. Applied to every backend. #' @param width Optional Character or Numeric: Widget width. #' @param height Optional Character or Numeric: Widget height. #' @param elementId Optional Character: Explicit element ID. #' @param filename Optional Character: If provided, the widget is also written to -#' this file via [save_drawing()]. Extension determines the format (currently -#' only `.svg` is supported). -#' @param meta Optional named list: Extra fields merged into the widget payload. -#' Used internally (e.g. by [draw_heatmap()] to pass square-cell layout -#' parameters to the JS binding). +#' this file via [save_drawing()] (ECharts only; other backends warn and +#' ignore it). Extension determines the format (currently only `.svg`). +#' @param ... Backend-specific arguments. ECharts accepts `renderer` +#' (Character \{"canvas", "svg"\}) and `meta` (named list of extra payload +#' fields, used internally e.g. by [draw_heatmap()]). #' @return htmlwidget: Widget object. #' @export -draw <- function( +draw <- S7::new_generic( + "draw", + "option", + function( + option, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL, + ... + ) { + S7::S7_dispatch() + } +) + +#' Render an ECharts option (already a plain list) as an htmlwidget +#' +#' Internal worker shared by the [EChartsOption] and bare-list [draw()] methods. +#' Holds all ECharts-specific option post-processing (legend auto-add, empty- +#' object fix, axis tick hiding, grid outer-bounds), then hands off to +#' `render_widget()`. +#' +#' @param option Named list: ECharts option (already converted from S7). +#' @param renderer Character \{"canvas", "svg"\}: Rendering engine. +#' @param theme,width,height,elementId,filename See [draw()]. +#' @param meta Named list: Extra fields merged into the widget payload. +#' @return htmlwidget: Widget object. +#' @keywords internal +#' @noRd +draw_echarts_option <- function( option, - theme = NULL, renderer = "canvas", + theme = NULL, width = NULL, height = NULL, elementId = NULL, filename = NULL, meta = list() ) { - # Convert S7 objects to plain lists - if (S7::S7_inherits(option)) { - option <- to_list(option) - } - # Auto-add legend when multiple distinctly named series are present if ( is.null(option$legend) && @@ -154,53 +266,20 @@ draw <- function( } } - auto_theme <- FALSE - theme_list <- NULL - theme_dark_list <- NULL - - if (identical(theme, NA)) { - # NA = no theme (raw ECharts defaults) - theme_list <- NULL - } else if (is.null(theme)) { - # NULL = auto-detect: send both themes, let JS pick based on dark mode - auto_theme <- TRUE - theme_list <- to_list(theme_light()) - theme_dark_list <- to_list(theme_dark()) - } else if (S7::S7_inherits(theme, Theme)) { - theme_list <- to_list(theme) - } else if (is.list(theme)) { - theme_list <- theme - } - payload <- c( list( option = option, - theme = theme_list, - renderer = renderer, - autoTheme = if (auto_theme) TRUE else NULL, - themeDark = theme_dark_list + renderer = renderer ), meta ) - # Respect explicit pixel dimensions: when a numeric width/height is given, - # disable browser.fill/viewer.fill so the widget keeps the computed size - # instead of expanding to fill the container. - should_fill <- is.null(width) || is.character(width) - - widget <- htmlwidgets::createWidget( - name = "rtemis-draw", - x = payload, + widget <- render_widget( + "rtemis-draw", + payload, + theme = theme, width = width, height = height, - sizingPolicy = htmlwidgets::sizingPolicy( - browser.fill = should_fill, - browser.padding = 0, - viewer.fill = should_fill, - viewer.padding = 0, - fill = should_fill - ), - package = "rtemis.draw", elementId = elementId ) @@ -211,6 +290,55 @@ draw <- function( widget } +# ECharts backend: convert the option object to a list, then render. +S7::method(draw, EChartsOption) <- function( + option, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL, + ..., + renderer = "canvas", + meta = list() +) { + draw_echarts_option( + to_list(option), + renderer = renderer, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename, + meta = meta + ) +} + +# A bare named list is treated as a raw ECharts option (back-compat with the +# original list-accepting `draw()`). +S7::method(draw, S7::class_list) <- function( + option, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL, + ..., + renderer = "canvas", + meta = list() +) { + draw_echarts_option( + option, + renderer = renderer, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename, + meta = meta + ) +} + #' Shiny output for draw widget #' @param outputId Character: Shiny output ID. #' @param width Character or Numeric: CSS width. diff --git a/r/R/map.R b/r/R/map.R new file mode 100644 index 0000000..cc9ca60 --- /dev/null +++ b/r/R/map.R @@ -0,0 +1,604 @@ +# map.R +# Choropleth maps rendered with MapLibre GL (not ECharts). +# +# This is the third rendering backend in rtemis.draw, after ECharts and +# Sigma.js. It mirrors rtemislive's MapCanvas (~/Code/live/src/components/chart/ +# MapCanvas.tsx) together with its scale (choroplethScale.ts) and location +# resolver (locationResolver.ts). The S7 classes below are the R analog of the +# TypeScript interfaces MapRow / MapModel in ~/Code/live/src/lib/types.ts. +# +# Pipeline: +# draw_choropleth(data, location, value) # data frame -> MapModel (S7) +# -> map_from_data_frame() +# -> draw_map(model, ...) # MapModel -> MapLibreOption (S7) +# -> draw(MapLibreOption) # dispatch -> htmlwidget ("rtemis-map") +# -> rtemis-map.js # maplibre-gl renders in the browser +# +# Geometry: admin boundaries are vendored as TopoJSON in +# inst/htmlwidgets/lib/geo/ and embedded into the widget payload at render time +# (htmlwidgets has no runtime fetch endpoint). The location -> geometry join, +# classification scale, and FIPS/ISO key normalization all live in the JS +# binding, where the geometry's id set is available. + +# Enumerations shared by the constructors and the Tier 1 builder. +map_classifications <- c("quantile", "equal", "jenks") +map_color_schemes <- c( + "blues", + "viridis", + "ylorrd", + "greens", + "magma", + "rdbu", + "rdylgn", + "spectral", + "brbg" +) +map_resolutions <- c("country", "state", "county") +map_corners <- c("top-left", "top-right", "bottom-left", "bottom-right") + +# -- MapRow --------------------------------------------------------------------- + +#' Map Row +#' +#' One region's datum in a choropleth: a raw location key, the numeric value +#' that colors the region, and optional extra fields to surface in the tooltip. +#' The R analog of the `MapRow` TypeScript interface in rtemislive +#' (`~/Code/live/src/lib/types.ts`). +#' +#' @param location Character: Raw location key (FIPS / ISO / name) before +#' normalization. Normalization to the canonical geometry id happens in the +#' renderer. +#' @param value Numeric: The value that colors the region. +#' @param extras Optional named list: Extra column values to show in the +#' tooltip, keyed by column name. +#' @export +MapRow <- S7::new_class( + "MapRow", + properties = list( + location = character_scalar, + value = S7::new_property( + S7::class_numeric, + validator = function(value) { + if (length(value) != 1L) { + return("must be a single number") + } + NULL + } + ), + extras = S7::new_property( + class = S7::class_any, + default = NULL, + validator = function(value) { + if (is.null(value)) { + return(NULL) + } + if (!is.list(value) || is.null(names(value))) { + return("must be NULL or a named list") + } + NULL + } + ) + ) +) + +S7::method(to_list, MapRow) <- function(x, ...) { + out <- list(location = x@location, value = x@value) + if (!is.null(x@extras)) { + out[["extras"]] <- x@extras + } + out +} + +# -- MapModel ------------------------------------------------------------------- + +#' Map Model +#' +#' A complete, renderer-agnostic choropleth dataset: a list of [MapRow] objects, +#' the administrative `resolution` that selects the geometry, the label for the +#' value column, and the ordered tooltip field names. The R analog of the +#' `MapModel` TypeScript interface in rtemislive (`~/Code/live/src/lib/types.ts`), +#' consumed by the `rtemis-map` htmlwidget. +#' +#' Most users build this implicitly through [draw_choropleth()]; the constructor +#' is exported for power users who assemble rows directly. +#' +#' @param rows List: List of [MapRow] objects. +#' @param resolution Character \{"country", "state", "county"\}: Administrative +#' resolution. `"country"` joins on ISO-A3, `"state"` on 2-digit FIPS, +#' `"county"` on 5-digit FIPS. +#' @param value_label Character: Display label for the value column (labels the +#' legend and tooltip value). +#' @param tooltip_fields Character: Ordered names of the extra fields to show in +#' the tooltip (keys into each [MapRow]'s `extras`). +#' @export +MapModel <- S7::new_class( + "MapModel", + properties = list( + rows = S7::new_property(class = S7::class_list, default = list()), + resolution = S7::new_property( + S7::class_character, + default = "country", + validator = function(value) { + if (length(value) != 1L || !value %in% map_resolutions) { + return(paste0( + "must be one of ", + paste0("\"", map_resolutions, "\"", collapse = ", ") + )) + } + NULL + } + ), + value_label = S7::new_property(S7::class_character, default = "value"), + tooltip_fields = S7::new_property( + S7::class_character, + default = character(0) + ) + ), + validator = function(self) { + if ( + length(self@rows) > 0L && + !all(vapply( + self@rows, + function(r) S7::S7_inherits(r, MapRow), + logical(1) + )) + ) { + return("`rows` must be a list of MapRow objects") + } + NULL + } +) + +S7::method(to_list, MapModel) <- function(x, ...) { + list( + rows = unname(lapply(x@rows, to_list)), + resolution = x@resolution, + valueLabel = x@value_label, + # as.list() forces a JSON array even for length 0 / 1 (auto_unbox would + # otherwise drop a single field to a scalar, which the JS expects as array). + tooltipFields = as.list(x@tooltip_fields) + ) +} + +# -- MapLibreOption ------------------------------------------------------------- + +#' MapLibre Render Option +#' +#' The complete, validated render spec for a MapLibre choropleth: a [MapModel] +#' (the data) plus all visual styling and an optional title. This is the +#' MapLibre analog of [EChartsOption] / [SigmaOption] -- the single object +#' [draw()] dispatches on to emit a `rtemis-map` widget. Theme is *not* a +#' property here; like every backend, theming is supplied to [draw()] and +#' resolved uniformly. +#' +#' Most users never touch this directly -- [draw_choropleth()] and [draw_map()] +#' build it -- but power users can construct it for full control: +#' `draw(MapLibreOption(model = MapModel(...), color_scheme = "viridis"))`. +#' +#' Its [to_list()] produces the `{ model, style, title }` payload consumed by +#' the `rtemis-map` htmlwidget binding (the geometry is added by the [draw()] +#' method, since it depends only on the model's resolution). +#' +#' @param model [MapModel] or named list: The choropleth data (a list must +#' contain a `rows` element). +#' @param classification Character \{"quantile", "equal", "jenks"\}: Class-break +#' method. `"quantile"` (equal counts), `"equal"` (equal intervals), or +#' `"jenks"` (natural breaks). +#' @param color_scheme Character: Color ramp. One of the sequential schemes +#' `"blues"`, `"viridis"`, `"ylorrd"`, `"greens"`, `"magma"`, or the diverging +#' schemes `"rdbu"`, `"rdylgn"`, `"spectral"`, `"brbg"`. +#' @param num_classes Numeric \[2, 12\]: Number of color classes. +#' @param opacity Numeric \[0, 1\]: Region fill opacity. +#' @param show_boundaries Logical: Whether to draw region outlines. +#' @param outline_width Numeric \[0, Inf): Region outline width in pixels. +#' @param show_legend Logical: Whether to show the legend. +#' @param legend_position Character \{"top-left", "top-right", "bottom-left", +#' "bottom-right"\}: Legend corner. +#' @param tooltip_position Character \{"top-left", "top-right", "bottom-left", +#' "bottom-right"\}: Hover tooltip corner. +#' @param report_position Character \{"top-left", "top-right", "bottom-left", +#' "bottom-right"\}: Join-report corner (shows matched / unmatched counts). +#' @param title Optional Character: Title (currently surfaced via the value +#' label; reserved for future use). +#' @export +MapLibreOption <- S7::new_class( + "MapLibreOption", + properties = list( + model = S7::new_property( + class = S7::class_any, + validator = function(value) { + if (S7::S7_inherits(value, MapModel)) { + return(NULL) + } + if (is.list(value) && !is.null(value[["rows"]])) { + return(NULL) + } + "must be a MapModel or a list with a `rows` element" + } + ), + classification = map_enum_default(map_classifications, "quantile"), + color_scheme = map_enum_default(map_color_schemes, "blues"), + num_classes = S7::new_property( + S7::class_numeric, + default = 5, + validator = function(value) { + if (length(value) != 1L || is.na(value) || value < 2 || value > 12) { + return("must be a single number in [2, 12]") + } + NULL + } + ), + opacity = prob_default(1), + show_boundaries = logical_default(TRUE), + outline_width = nonneg_numeric_default(0.2), + show_legend = logical_default(TRUE), + legend_position = map_enum_default(map_corners, "bottom-right"), + tooltip_position = map_enum_default(map_corners, "top-right"), + report_position = map_enum_default(map_corners, "bottom-left"), + title = optional_character_scalar + ) +) + +S7::method(to_list, MapLibreOption) <- function(x, ...) { + model <- x@model + model_list <- if (S7::S7_inherits(model)) to_list(model) else model + out <- list( + model = model_list, + style = list( + classification = x@classification, + colorScheme = x@color_scheme, + numClasses = x@num_classes, + opacity = x@opacity, + showBoundaries = x@show_boundaries, + outlineWidth = x@outline_width, + showLegend = x@show_legend, + legendPosition = x@legend_position, + tooltipPosition = x@tooltip_position, + reportPosition = x@report_position + ) + ) + if (!is.null(x@title)) { + out[["title"]] <- x@title + } + out +} + +# -- Geometry loader ------------------------------------------------------------ + +#' Load a vendored TopoJSON geometry for a resolution +#' +#' Reads the admin-boundary TopoJSON shipped in `inst/htmlwidgets/lib/geo/` for +#' the given resolution and returns it (as a raw JSON string) plus the camera / +#' object metadata the renderer needs. Mirrors `GEO_SOURCES` in rtemislive's +#' `choroplethGeo.ts`. +#' +#' @param resolution Character \{"country", "state", "county"\}: Resolution. +#' @return Named list: `topojson` (string), `object` (string), `center` +#' (numeric length 2), `zoom` (number). +#' @keywords internal +#' @noRd +load_map_geometry <- function(resolution) { + sources <- list( + country = list( + file = "countries.topo.json", + object = "countries", + center = c(0, 20), + zoom = 0.4 + ), + state = list( + file = "us-10m.topo.json", + object = "states", + center = c(-96, 38), + zoom = 2.6 + ), + county = list( + file = "us-10m.topo.json", + object = "counties", + center = c(-96, 38), + zoom = 2.6 + ) + ) + src <- sources[[resolution]] + if (is.null(src)) { + cli::cli_abort("Unknown map resolution {.val {resolution}}.") + } + path <- system.file( + "htmlwidgets", + "lib", + "geo", + src[["file"]], + package = "rtemis.draw" + ) + if (!nzchar(path) || !file.exists(path)) { + cli::cli_abort( + "Vendored geometry {.file {src[['file']]}} not found in the package." + ) + } + # Read the whole file as one JSON string; file size in bytes is an upper bound + # on the character count, so this reads the entire file. + topojson <- readChar(path, file.info(path)[["size"]], useBytes = TRUE) + Encoding(topojson) <- "UTF-8" + list( + topojson = topojson, + object = src[["object"]], + center = src[["center"]], + zoom = src[["zoom"]] + ) +} + +# -- draw() method: MapLibre backend -------------------------------------------- + +# MapLibre backend: embed the resolution's geometry, then render the choropleth +# spec as a `rtemis-map` widget. +S7::method(draw, MapLibreOption) <- function( + option, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL, + ... +) { + if (!is.null(filename)) { + cli::cli_warn( + "Static export of map widgets is not yet supported; ignoring {.arg filename}." + ) + } + + payload <- to_list(option) + resolution <- payload[["model"]][["resolution"]] %||% "country" + payload[["geo"]] <- load_map_geometry(resolution) + + render_widget( + "rtemis-map", + payload, + theme = theme, + width = width, + height = height, + elementId = elementId + ) +} + +# -- Model builder -------------------------------------------------------------- + +#' Build a MapModel from a data frame +#' +#' @param data Data frame: One row per region. +#' @param location Character: Name of the column holding the location key. +#' @param value Character: Name of the numeric column to color by. +#' @param resolution Character \{"country", "state", "county"\}: Administrative +#' resolution. +#' @param tooltip Optional Character: Names of extra columns to show in the +#' tooltip, in order. +#' @param value_label Optional Character: Label for the value column; defaults +#' to `value`. +#' @return [MapModel]. +#' @keywords internal +#' @noRd +map_from_data_frame <- function( + data, + location, + value, + resolution, + tooltip = NULL, + value_label = NULL +) { + if (!is.data.frame(data)) { + cli::cli_abort("{.arg data} must be a data frame.") + } + if (!is.character(location) || length(location) != 1L) { + cli::cli_abort("{.arg location} must be a single column name.") + } + if (!is.character(value) || length(value) != 1L) { + cli::cli_abort("{.arg value} must be a single column name.") + } + missing_cols <- setdiff(c(location, value, tooltip), names(data)) + if (length(missing_cols) > 0L) { + cli::cli_abort(c( + "Column{?s} {.val {missing_cols}} not found in {.arg data}.", + "i" = "Available columns: {.val {names(data)}}." + )) + } + + loc <- as.character(data[[location]]) + val <- as.numeric(data[[value]]) + tooltip <- tooltip %||% character(0) + + # Extract tooltip columns once (coercing factors) rather than subsetting the + # data frame per row inside the loop. + tooltip_list <- lapply(data[tooltip], function(v) { + if (is.factor(v)) as.character(v) else v + }) + + rows <- lapply(seq_len(nrow(data)), function(i) { + extras <- if (length(tooltip) > 0L) { + lapply(tooltip_list, `[[`, i) + } else { + NULL + } + MapRow(location = loc[i], value = val[i], extras = extras) + }) + + MapModel( + rows = rows, + resolution = resolution, + value_label = value_label %||% value, + tooltip_fields = tooltip + ) +} + +# -- Widget builder: draw_map --------------------------------------------------- + +#' Render a MapModel as a MapLibre choropleth htmlwidget +#' +#' Mid-level builder: takes a [MapModel] (or a plain list with `rows`, +#' `resolution`, ...) plus styling, assembles a [MapLibreOption], and dispatches +#' through [draw()]. Most users call [draw_choropleth()] instead. +#' +#' @param model [MapModel] or named list: The choropleth data to render. +#' @inheritParams MapLibreOption +#' @param theme Optional [Theme], list, or `NA`: Theme override. `NULL` enables +#' light/dark auto-detection (matching [draw()]). +#' @param width Optional Character or Numeric: Widget width. +#' @param height Optional Character or Numeric: Widget height. +#' @param elementId Optional Character: Explicit element ID. +#' @param filename Optional Character: Currently ignored with a warning (static +#' export of map widgets is not yet supported); accepted for signature parity +#' with the other `draw_*` functions. +#' @return htmlwidget. +#' @export +draw_map <- function( + model, + classification = "quantile", + color_scheme = "blues", + num_classes = 5, + opacity = 1, + show_boundaries = TRUE, + outline_width = 0.2, + show_legend = TRUE, + legend_position = "bottom-right", + tooltip_position = "top-right", + report_position = "bottom-left", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) { + classification <- match.arg(classification, map_classifications) + color_scheme <- match.arg(color_scheme, map_color_schemes) + legend_position <- match.arg(legend_position, map_corners) + tooltip_position <- match.arg(tooltip_position, map_corners) + report_position <- match.arg(report_position, map_corners) + + option <- MapLibreOption( + model = model, + classification = classification, + color_scheme = color_scheme, + num_classes = num_classes, + opacity = opacity, + show_boundaries = show_boundaries, + outline_width = outline_width, + show_legend = show_legend, + legend_position = legend_position, + tooltip_position = tooltip_position, + report_position = report_position, + title = title + ) + + draw( + option, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename + ) +} + +# -- Tier 1: draw_choropleth ---------------------------------------------------- + +#' Draw a Choropleth Map +#' +#' Render a choropleth map with MapLibre GL: regions shaded by a value, joined +#' to vendored administrative boundaries (countries by ISO-A3, US states / +#' counties by FIPS). No basemap tiles -- boundaries render on the themed +#' background, with light/dark auto-detection like the rest of `draw_*`. +#' +#' The `location` column is matched to the geometry in the renderer, which +#' accepts ISO-A3 / ISO-A2 / country code for countries, and FIPS / postal +#' abbreviation / full name for US states (5-digit FIPS for counties). A +#' join report in the corner surfaces any unmatched keys. +#' +#' @param data Data frame: One row per region. +#' @param location Character: Name of the column holding the location key +#' (FIPS / ISO / name). +#' @param value Character: Name of the numeric column to color by. +#' @param resolution Character \{"country", "state", "county"\}: Administrative +#' resolution selecting the geometry and the join key. +#' @param tooltip Optional Character: Names of extra columns to show in the +#' hover tooltip, in order. +#' @param value_label Optional Character: Label for the value column in the +#' legend / tooltip; defaults to `value`. +#' @inheritParams draw_map +#' @return htmlwidget. +#' @examples +#' \dontrun{ +#' # Country choropleth from ISO-A3 codes +#' df <- data.frame( +#' iso = c("USA", "CAN", "MEX", "BRA", "FRA"), +#' gdp = c(25.5, 2.1, 1.4, 1.9, 2.9) +#' ) +#' draw_choropleth(df, location = "iso", value = "gdp") +#' +#' # US states by postal abbreviation, natural-breaks classification +#' states <- data.frame( +#' st = state.abb, +#' pop = as.numeric(state.x77[, "Population"]) +#' ) +#' draw_choropleth( +#' states, +#' location = "st", +#' value = "pop", +#' resolution = "state", +#' classification = "jenks", +#' color_scheme = "viridis" +#' ) +#' } +#' @export +draw_choropleth <- function( + data, + location, + value, + resolution = c("country", "state", "county"), + tooltip = NULL, + value_label = NULL, + classification = "quantile", + color_scheme = "blues", + num_classes = 5, + opacity = 1, + show_boundaries = TRUE, + outline_width = 0.2, + show_legend = TRUE, + legend_position = "bottom-right", + tooltip_position = "top-right", + report_position = "bottom-left", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) { + resolution <- match.arg(resolution) + + model <- map_from_data_frame( + data, + location = location, + value = value, + resolution = resolution, + tooltip = tooltip, + value_label = value_label + ) + + draw_map( + model, + classification = classification, + color_scheme = color_scheme, + num_classes = num_classes, + opacity = opacity, + show_boundaries = show_boundaries, + outline_width = outline_width, + show_legend = show_legend, + legend_position = legend_position, + tooltip_position = tooltip_position, + report_position = report_position, + title = title, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename + ) +} diff --git a/r/R/network.R b/r/R/network.R new file mode 100644 index 0000000..52dba01 --- /dev/null +++ b/r/R/network.R @@ -0,0 +1,710 @@ +# network.R +# Network / graph plots rendered with Sigma.js (not ECharts). +# +# This is the first non-ECharts rendering surface in rtemis.draw. It mirrors +# rtemislive's GraphCanvas (~/Code/live/src/components/chart/GraphCanvas.tsx), +# which consumes a renderer-agnostic graph model (nodes + edges + directed) and +# manages the sigma instance lifecycle. The S7 classes below are the R analog of +# the TypeScript interfaces GraphNode / GraphEdge / GraphModel in +# ~/Code/live/src/lib/types.ts. +# +# Pipeline: +# draw_network(x) # matrix or edge-list -> GraphModel (S7) +# -> graph_from_matrix() / graph_from_edge_list() +# -> draw_graph(model) # GraphModel -> htmlwidget ("rtemis-graph") +# -> rtemis-graph.js # graphology + sigma render in the browser + +# -- GraphNode ------------------------------------------------------------------ + +#' Graph Node +#' +#' One node (vertex) in a network. The R analog of the `GraphNode` TypeScript +#' interface in rtemislive (`~/Code/live/src/lib/types.ts`). +#' +#' @param id Character: Unique node identifier. Edges reference nodes by this id. +#' @param label Optional Character: Display label. Defaults to `id` in the +#' renderer when absent. +#' @param value Optional Numeric: Drives node size when `scale_by_degree` is +#' enabled (e.g. weighted degree). +#' @param group Optional Character: Categorical key for node color. +#' @export +GraphNode <- S7::new_class( + "GraphNode", + properties = list( + id = character_scalar, + label = optional_character_scalar, + value = numeric_or_null_property(), + group = optional_character_scalar + ) +) + +S7::method(to_list, GraphNode) <- function(x, ...) { + props_to_list(x) +} + +# -- GraphEdge ------------------------------------------------------------------ + +#' Graph Edge +#' +#' One edge (link) in a network. The R analog of the `GraphEdge` TypeScript +#' interface in rtemislive (`~/Code/live/src/lib/types.ts`). +#' +#' @param source Character: Source node id. +#' @param target Character: Target node id. +#' @param weight Optional Numeric: Edge magnitude; drives thickness. For a +#' correlation graph, the absolute value of `r`. +#' @param sign Optional Numeric \{-1, 1\}: Sign of the underlying value (e.g. +#' correlation): `1` positive, `-1` negative. Drives edge color when present. +#' @export +GraphEdge <- S7::new_class( + "GraphEdge", + properties = list( + source = character_scalar, + target = character_scalar, + weight = numeric_or_null_property(), + sign = S7::new_property( + class = S7::class_any, + default = NULL, + validator = function(value) { + if (is.null(value)) { + return(NULL) + } + if (!is.numeric(value) || length(value) != 1L || !value %in% c(-1, 1)) { + return("must be -1, 1, or NULL") + } + NULL + } + ) + ) +) + +S7::method(to_list, GraphEdge) <- function(x, ...) { + props_to_list(x) +} + +# -- GraphModel ----------------------------------------------------------------- + +#' Graph Model +#' +#' A complete, renderer-agnostic network: a list of [GraphNode] objects, a list +#' of [GraphEdge] objects, and a directedness flag. The R analog of the +#' `GraphModel` TypeScript interface in rtemislive +#' (`~/Code/live/src/lib/types.ts`), consumed by the `rtemis-graph` htmlwidget. +#' +#' Most users build this implicitly through [draw_network()]; the constructor is +#' exported for power users who assemble nodes and edges directly. +#' +#' @param nodes List: List of [GraphNode] objects. +#' @param edges List: List of [GraphEdge] objects. +#' @param directed Logical: Whether edges are directed. +#' @export +GraphModel <- S7::new_class( + "GraphModel", + properties = list( + nodes = S7::new_property(class = S7::class_list, default = list()), + edges = S7::new_property(class = S7::class_list, default = list()), + directed = logical_scalar + ), + validator = function(self) { + if ( + length(self@nodes) > 0L && + !all(vapply( + self@nodes, + function(n) { + S7::S7_inherits(n, GraphNode) + }, + logical(1) + )) + ) { + return("`nodes` must be a list of GraphNode objects") + } + if ( + length(self@edges) > 0L && + !all(vapply( + self@edges, + function(e) { + S7::S7_inherits(e, GraphEdge) + }, + logical(1) + )) + ) { + return("`edges` must be a list of GraphEdge objects") + } + NULL + } +) + +S7::method(to_list, GraphModel) <- function(x, ...) { + list( + nodes = unname(lapply(x@nodes, to_list)), + edges = unname(lapply(x@edges, to_list)), + directed = x@directed + ) +} + +# -- SigmaOption ---------------------------------------------------------------- + +#' Sigma.js Render Option +#' +#' The complete, validated render spec for a Sigma.js network: a [GraphModel] +#' (the data) plus all visual styling and an optional title. This is the Sigma +#' analog of [EChartsOption] -- the single object [draw()] dispatches on to emit +#' a `rtemis-graph` widget. Theme is *not* a property here; like every backend, +#' theming is supplied to [draw()] and resolved uniformly. +#' +#' Most users never touch this directly -- [draw_network()] and [draw_graph()] +#' build it -- but power users can construct it for full control: +#' `draw(SigmaOption(model = GraphModel(...), layout = "circular"))`. +#' +#' Its [to_list()] produces the `{ model, style, title }` payload consumed by +#' the `rtemis-graph` htmlwidget binding. +#' +#' @param model [GraphModel] or named list: The graph to render (a list must +#' contain a `nodes` element). +#' @param layout Character \{"force", "circular", "circlepack", "random"\}: +#' Layout algorithm. `"force"` is ForceAtlas2. +#' @param node_size Numeric \[0, Inf): Base node radius in screen pixels. +#' @param edge_scale Numeric \[0, Inf): Multiplier mapping normalized edge weight +#' to stroke width. +#' @param node_opacity Numeric \[0, 1\]: Node fill opacity. +#' @param edge_opacity Numeric \[0, 1\]: Edge stroke opacity. +#' @param show_labels Logical: Whether to render node labels. +#' @param scale_by_degree Logical: Scale each node's radius by its `value` +#' (weighted degree); when `FALSE` all nodes use the base size. +#' @param color_by_group Logical: Color nodes by detected community (Louvain) +#' instead of a single hue. +#' @param resolution Numeric \[0, Inf): Louvain resolution; higher yields more, +#' smaller communities. +#' @param blend_edges Logical: Color each edge as the blend of its two endpoint +#' node colors instead of by sign. +#' @param palette Character: Categorical colors for communities. +#' @param node_color Character: Single node color used when `color_by_group` is +#' `FALSE`. +#' @param positive_color Character: Edge color for positive-sign edges. +#' @param negative_color Character: Edge color for negative-sign edges. +#' @param title Optional Character: Title shown above the network. +#' @export +SigmaOption <- S7::new_class( + "SigmaOption", + properties = list( + # model: a GraphModel, or a plain list already in {nodes, edges, directed} + # shape (the contract draw_graph() has always accepted). + model = S7::new_property( + class = S7::class_any, + validator = function(value) { + if (S7::S7_inherits(value, GraphModel)) { + return(NULL) + } + if (is.list(value) && !is.null(value[["nodes"]])) { + return(NULL) + } + "must be a GraphModel or a list with a `nodes` element" + } + ), + layout = S7::new_property( + S7::class_character, + default = "force", + validator = function(value) { + if ( + length(value) != 1L || + !value %in% c("force", "circular", "circlepack", "random") + ) { + return( + "must be one of \"force\", \"circular\", \"circlepack\", \"random\"" + ) + } + NULL + } + ), + node_size = nonneg_numeric_default(10), + edge_scale = nonneg_numeric_default(3), + node_opacity = prob_default(0.95), + edge_opacity = prob_default(0.4), + show_labels = logical_default(TRUE), + scale_by_degree = logical_default(TRUE), + color_by_group = logical_default(FALSE), + resolution = nonneg_numeric_default(1), + blend_edges = logical_default(FALSE), + palette = S7::new_property( + S7::class_character, + default = quote(as.character(rtemis_colors)), + validator = function(value) { + if (length(value) == 0L) { + return("must be a non-empty character vector of colors") + } + NULL + } + ), + node_color = S7::new_property( + S7::class_character, + default = quote(rtemis_colors[[1L]]) + ), + positive_color = S7::new_property( + S7::class_character, + default = quote(rtemis_colors[[1L]]) + ), + negative_color = S7::new_property( + S7::class_character, + default = "#ff9e1f" + ), + title = optional_character_scalar + ) +) + +S7::method(to_list, SigmaOption) <- function(x, ...) { + model <- x@model + model_list <- if (S7::S7_inherits(model)) to_list(model) else model + out <- list( + model = model_list, + style = list( + layout = x@layout, + nodeSize = x@node_size, + edgeScale = x@edge_scale, + nodeOpacity = x@node_opacity, + edgeOpacity = x@edge_opacity, + showLabels = x@show_labels, + scaleByDegree = x@scale_by_degree, + colorByGroup = x@color_by_group, + resolution = x@resolution, + blendEdges = x@blend_edges, + palette = as.character(x@palette), + nodeColor = as.character(x@node_color), + positiveColor = as.character(x@positive_color), + negativeColor = as.character(x@negative_color) + ) + ) + if (!is.null(x@title)) { + out[["title"]] <- x@title + } + out +} + +# -- draw() method: Sigma.js backend -------------------------------------------- + +# Sigma.js backend: render the network spec as a `rtemis-graph` widget. +S7::method(draw, SigmaOption) <- function( + option, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL, + ... +) { + if (!is.null(filename)) { + cli::cli_warn( + "Static export of network widgets is not yet supported; ignoring {.arg filename}." + ) + } + render_widget( + "rtemis-graph", + to_list(option), + theme = theme, + width = width, + height = height, + elementId = elementId + ) +} + +# -- Model builders ------------------------------------------------------------- + +#' Build a GraphModel from a square weight / adjacency matrix +#' +#' Interprets a square numeric matrix as a weighted graph: entry `[i, j]` is the +#' edge weight between node `i` and node `j`. Node ids come from the matrix +#' dimnames (row names preferred, then column names, else `"1"`, `"2"`, ...). +#' Zero (and `NA`) entries produce no edge. The absolute value drives edge +#' thickness and the sign drives edge color, so a correlation matrix renders +#' directly. +#' +#' @param x Numeric matrix \[square\]: Weight / adjacency matrix. +#' @param directed Logical: When `FALSE` (default) only the upper triangle is +#' read and one undirected edge is emitted per pair; when `TRUE` every +#' off-diagonal entry becomes a directed edge. +#' @param self_loops Logical: Whether to keep the diagonal (self-edges). +#' @param threshold Optional Numeric \[0, Inf): Drop edges whose absolute weight +#' is below this value. `NULL` keeps every non-zero edge. +#' @return [GraphModel]. +#' @keywords internal +#' @noRd +graph_from_matrix <- function( + x, + directed = FALSE, + self_loops = FALSE, + threshold = NULL +) { + if (!is.matrix(x) || nrow(x) != ncol(x)) { + cli::cli_abort( + "Matrix input to {.fn draw_network} must be square; got {nrow(x)}x{ncol(x)}." + ) + } + if (!is.numeric(x)) { + cli::cli_abort("Matrix input to {.fn draw_network} must be numeric.") + } + + n <- nrow(x) + ids <- rownames(x) %||% colnames(x) %||% as.character(seq_len(n)) + ids <- as.character(ids) + + # Accumulate edges and per-node weighted degree (the default node `value`, + # which drives node size when scale_by_degree is on). + degree <- stats::setNames(numeric(n), ids) + edges <- vector("list", 0L) + + for (i in seq_len(n)) { + # Undirected: only j > i (upper triangle). Directed: all j != i. + js <- if (directed) seq_len(n) else seq.int(i, n) + for (j in js) { + if (i == j && !self_loops) { + next + } + w <- x[i, j] + if (is.na(w) || w == 0) { + next + } + aw <- abs(w) + if (!is.null(threshold) && aw < threshold) { + next + } + edges[[length(edges) + 1L]] <- GraphEdge( + source = ids[i], + target = ids[j], + weight = aw, + sign = if (w > 0) 1 else -1 + ) + degree[i] <- degree[i] + aw + if (i != j) { + degree[j] <- degree[j] + aw + } + } + } + + nodes <- lapply(seq_len(n), function(i) { + GraphNode(id = ids[i], label = ids[i], value = unname(degree[i])) + }) + + GraphModel(nodes = nodes, edges = edges, directed = directed) +} + +#' Build a GraphModel from an edge-list (and optional node) data frame +#' +#' @param edges Data frame: One row per edge. Recognized columns: `source` and +#' `target` (required; the first two columns are used if these names are +#' absent), `weight` (optional), and `sign` (optional, in \{-1, 1\}). +#' @param nodes Optional Data frame: One row per node. Recognized columns: `id` +#' (or `name`; the first column if neither is present), `label`, `value`, +#' `group`. Nodes referenced by edges but absent here are added automatically. +#' @param directed Logical: Whether edges are directed. +#' @return [GraphModel]. +#' @keywords internal +#' @noRd +graph_from_edge_list <- function(edges, nodes = NULL, directed = FALSE) { + if (!is.data.frame(edges)) { + cli::cli_abort( + "Edge-list input to {.fn draw_network} must be a data frame." + ) + } + if (ncol(edges) < 2L) { + cli::cli_abort( + "Edge-list data frame must have at least 2 columns (source, target)." + ) + } + + # Resolve source/target columns by name, falling back to position. + src <- if ("source" %in% names(edges)) edges[["source"]] else edges[[1L]] + tgt <- if ("target" %in% names(edges)) edges[["target"]] else edges[[2L]] + src <- as.character(src) + tgt <- as.character(tgt) + wgt <- if ("weight" %in% names(edges)) as.numeric(edges[["weight"]]) else NULL + sgn <- if ("sign" %in% names(edges)) as.numeric(edges[["sign"]]) else NULL + + edge_objs <- lapply(seq_len(nrow(edges)), function(k) { + GraphEdge( + source = src[k], + target = tgt[k], + weight = if (is.null(wgt)) NULL else wgt[k], + sign = if (is.null(sgn) || is.na(sgn[k])) NULL else sgn[k] + ) + }) + + # Weighted degree per node id, used as the default `value` for any node not + # explicitly described in `nodes`. + edge_ids <- unique(c(src, tgt)) + # Weighted degree, vectorized: each edge contributes its weight to both + # endpoints. Missing/absent weights count as 1. + weights <- if (is.null(wgt)) rep(1, length(src)) else abs(wgt) + weights[is.na(weights)] <- 1 + deg_sums <- vapply( + split(rep(weights, 2L), c(src, tgt)), + sum, + numeric(1L) + ) + degree <- stats::setNames(numeric(length(edge_ids)), edge_ids) + degree[names(deg_sums)] <- deg_sums + + # NA-safe degree lookup: isolated nodes (in `nodes` but in no edge) are absent + # from `degree`, where `degree[id]` returns NA rather than NULL. + degree_of <- function(id) { + d <- degree[id] + if (length(d) == 0L || is.na(d)) 0 else unname(d) + } + + if (is.null(nodes)) { + node_objs <- lapply(edge_ids, function(id) { + GraphNode(id = id, label = id, value = unname(degree[id])) + }) + } else { + if (!is.data.frame(nodes)) { + cli::cli_abort("`nodes` must be a data frame or NULL.") + } + id_col <- if ("id" %in% names(nodes)) { + "id" + } else if ("name" %in% names(nodes)) { + "name" + } else { + names(nodes)[1L] + } + node_ids <- as.character(nodes[[id_col]]) + # Extract optional columns once as flat vectors instead of subsetting the + # data frame per row inside the loop. + labels <- if ("label" %in% names(nodes)) { + as.character(nodes[["label"]]) + } else { + NULL + } + values <- if ("value" %in% names(nodes)) { + as.numeric(nodes[["value"]]) + } else { + NULL + } + groups <- if ("group" %in% names(nodes)) { + as.character(nodes[["group"]]) + } else { + NULL + } + node_objs <- lapply(seq_len(nrow(nodes)), function(k) { + id <- node_ids[k] + GraphNode( + id = id, + label = if (!is.null(labels)) labels[k] else id, + value = if (!is.null(values)) values[k] else degree_of(id), + group = if (!is.null(groups)) groups[k] else NULL + ) + }) + # Add any edge-referenced ids missing from the node table. + missing_ids <- setdiff(edge_ids, node_ids) + node_objs <- c( + node_objs, + lapply(missing_ids, function(id) { + GraphNode(id = id, label = id, value = unname(degree[id])) + }) + ) + } + + GraphModel(nodes = node_objs, edges = edge_objs, directed = directed) +} + +# -- Widget factory ------------------------------------------------------------- + +#' Render a GraphModel as a Sigma.js htmlwidget +#' +#' Low-level renderer: takes a [GraphModel] (or a plain list with `nodes`, +#' `edges`, `directed`) and produces an interactive network htmlwidget backed by +#' Sigma.js + graphology. Most users call [draw_network()] instead. +#' +#' @param model [GraphModel] or named list: The graph to render. +#' @param layout Character \{"force", "circular", "circlepack", "random"\}: +#' Layout algorithm. `"force"` is ForceAtlas2. +#' @param node_size Numeric \[0, Inf): Base node radius in screen pixels. +#' @param edge_scale Numeric \[0, Inf): Multiplier mapping normalized edge weight +#' to stroke width. +#' @param node_opacity Numeric \[0, 1\]: Node fill opacity. +#' @param edge_opacity Numeric \[0, 1\]: Edge stroke opacity. +#' @param show_labels Logical: Whether to render node labels. +#' @param scale_by_degree Logical: Scale each node's radius by its `value` +#' (weighted degree); when `FALSE` all nodes use the base size. +#' @param color_by_group Logical: Color nodes by detected community (Louvain) +#' instead of a single hue. +#' @param resolution Numeric \[0, Inf): Louvain resolution; higher yields more, +#' smaller communities. +#' @param blend_edges Logical: Color each edge as the blend of its two endpoint +#' node colors instead of by sign. +#' @param palette Character: Categorical colors for communities. +#' @param node_color Character: Single node color used when `color_by_group` is +#' `FALSE`. +#' @param positive_color Character: Edge color for positive-sign edges. +#' @param negative_color Character: Edge color for negative-sign edges. +#' @param title Optional Character: Title shown above the network. +#' @param theme Optional [Theme], list, or `NA`: Theme override. `NULL` enables +#' light/dark auto-detection (matching [draw()]). +#' @param width Optional Character or Numeric: Widget width. +#' @param height Optional Character or Numeric: Widget height. +#' @param elementId Optional Character: Explicit element ID. +#' @param filename Optional Character: Currently ignored with a warning (static +#' export of network widgets is not yet supported); accepted for signature +#' parity with the other `draw_*` functions. +#' @return htmlwidget. +#' @export +draw_graph <- function( + model, + layout = "force", + node_size = 10, + edge_scale = 3, + node_opacity = 0.95, + edge_opacity = 0.4, + show_labels = TRUE, + scale_by_degree = TRUE, + color_by_group = FALSE, + resolution = 1, + blend_edges = FALSE, + palette = rtemis_colors, + node_color = rtemis_colors[[1L]], + positive_color = rtemis_colors[[1L]], + negative_color = "#ff9e1f", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) { + layout <- match.arg(layout, c("force", "circular", "circlepack", "random")) + + # Assemble the full Sigma render spec, then dispatch through draw(). Theme is + # resolved uniformly inside draw()/render_widget(), not here. + option <- SigmaOption( + model = model, + layout = layout, + node_size = node_size, + edge_scale = edge_scale, + node_opacity = node_opacity, + edge_opacity = edge_opacity, + show_labels = show_labels, + scale_by_degree = scale_by_degree, + color_by_group = color_by_group, + resolution = resolution, + blend_edges = blend_edges, + palette = as.character(palette), + node_color = node_color, + positive_color = positive_color, + negative_color = negative_color, + title = title + ) + + draw( + option, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename + ) +} + +# -- Tier 1: draw_network ------------------------------------------------------- + +#' Draw a Network / Graph +#' +#' Render a network with Sigma.js. Accepts either a square weight / adjacency +#' matrix (e.g. a correlation matrix) or an edge-list data frame, dispatching on +#' the type of `x`. Communities are detected with Louvain and laid out with +#' ForceAtlas2 by default. +#' +#' @param x Numeric matrix or Data frame: A square weight / adjacency matrix, or +#' an edge-list data frame with `source` / `target` columns (and optional +#' `weight`, `sign`). For a matrix, dimnames supply node ids and `[i, j]` is +#' the edge weight (zero / `NA` entries produce no edge); the absolute value +#' drives thickness and the sign drives color. For an edge list, `source` and +#' `target` name the endpoints (the first two columns if those names are +#' absent), with optional `weight` and `sign` columns. +#' @param nodes Optional Data frame: Node attributes (`id`/`name`, `label`, +#' `value`, `group`). Used only with edge-list input; ignored for matrix +#' input. +#' @param directed Logical: Whether the graph is directed. +#' @param threshold Optional Numeric \[0, Inf): For matrix input, drop edges +#' whose absolute weight is below this value. +#' @param self_loops Logical: For matrix input, whether to keep diagonal +#' self-edges. +#' @inheritParams draw_graph +#' @return htmlwidget. +#' @examples +#' \dontrun{ +#' # Correlation matrix +#' draw_network(cor(mtcars), threshold = 0.5) +#' +#' # Edge list +#' edges <- data.frame( +#' source = c("a", "a", "b"), +#' target = c("b", "c", "c"), +#' weight = c(1, 2, 0.5) +#' ) +#' draw_network(edges) +#' } +#' @export +draw_network <- function( + x, + nodes = NULL, + directed = FALSE, + threshold = NULL, + self_loops = FALSE, + layout = "force", + node_size = 10, + edge_scale = 3, + node_opacity = 0.95, + edge_opacity = 0.4, + show_labels = TRUE, + scale_by_degree = TRUE, + color_by_group = FALSE, + resolution = 1, + blend_edges = FALSE, + palette = rtemis_colors, + node_color = rtemis_colors[[1L]], + positive_color = rtemis_colors[[1L]], + negative_color = "#ff9e1f", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) { + if (is.matrix(x)) { + model <- graph_from_matrix( + x, + directed = directed, + self_loops = self_loops, + threshold = threshold + ) + } else if (is.data.frame(x)) { + model <- graph_from_edge_list(x, nodes = nodes, directed = directed) + } else { + cli::cli_abort(c( + "{.arg x} must be a square numeric matrix or an edge-list data frame.", + "i" = "Got {.cls {class(x)}}." + )) + } + + draw_graph( + model, + layout = layout, + node_size = node_size, + edge_scale = edge_scale, + node_opacity = node_opacity, + edge_opacity = edge_opacity, + show_labels = show_labels, + scale_by_degree = scale_by_degree, + color_by_group = color_by_group, + resolution = resolution, + blend_edges = blend_edges, + palette = palette, + node_color = node_color, + positive_color = positive_color, + negative_color = negative_color, + title = title, + theme = theme, + width = width, + height = height, + elementId = elementId, + filename = filename + ) +} diff --git a/r/R/utils.R b/r/R/utils.R index edd5f5c..0d9526a 100644 --- a/r/R/utils.R +++ b/r/R/utils.R @@ -112,6 +112,84 @@ to_list <- S7::new_generic("to_list", "x") # -- Type validators for S7 properties ------------------------------------------- # These return validator functions or S7 class unions. +#' Property that accepts a non-negative numeric scalar, with a default +#' +#' For required style values (e.g. node size, edge scale) that always carry a +#' sensible default in a render-spec option object. +#' @param default Numeric: Default value. +#' @keywords internal +#' @noRd +nonneg_numeric_default <- function(default) { + S7::new_property( + class = S7::class_numeric, + default = default, + validator = function(value) { + if (length(value) != 1L || is.na(value) || value < 0) { + return("must be a single non-negative number") + } + NULL + } + ) +} + +#' Property that accepts a probability scalar in \[0, 1\], with a default +#' @param default Numeric \[0, 1\]: Default value. +#' @keywords internal +#' @noRd +prob_default <- function(default) { + S7::new_property( + class = S7::class_numeric, + default = default, + validator = function(value) { + if (length(value) != 1L || is.na(value) || value < 0 || value > 1) { + return("must be a single number in [0, 1]") + } + NULL + } + ) +} + +#' Property that accepts a logical scalar, with a default +#' @param default Logical: Default value. +#' @keywords internal +#' @noRd +logical_default <- function(default) { + S7::new_property( + class = S7::class_logical, + default = default, + validator = function(value) { + if (length(value) != 1L || is.na(value)) { + return("must be a single logical (TRUE or FALSE)") + } + NULL + } + ) +} + +#' Property that accepts one of a fixed set of strings, with a default +#' +#' For render-spec enum fields (e.g. classification, color scheme, corner). +#' @param choices Character: Allowed values. +#' @param default Character: Default value (must be in `choices`). +#' @keywords internal +#' @noRd +map_enum_default <- function(choices, default) { + force(choices) + S7::new_property( + class = S7::class_character, + default = default, + validator = function(value) { + if (length(value) != 1L || !value %in% choices) { + return(paste0( + "must be one of ", + paste0("\"", choices, "\"", collapse = ", ") + )) + } + NULL + } + ) +} + #' Property that accepts a number or NULL #' @keywords internal #' @noRd diff --git a/r/inst/htmlwidgets/lib/geo/countries.topo.json b/r/inst/htmlwidgets/lib/geo/countries.topo.json new file mode 100644 index 0000000..bf7558e --- /dev/null +++ b/r/inst/htmlwidgets/lib/geo/countries.topo.json @@ -0,0 +1 @@ +{"type":"Topology","arcs":[[[8257,2798],[10,-25],[-27,-1],[6,30],[11,-4]],[[4932,3436],[87,-82],[35,-61]],[[5054,3293],[-11,-48],[16,-36],[-6,-63],[27,-71]],[[5080,3075],[-19,-22],[-69,-32],[-45,7]],[[4947,3028],[-19,82],[-23,7]],[[4905,3117],[-46,34]],[[4859,3151],[-26,70],[-7,78]],[[4826,3299],[33,44],[-7,37]],[[4852,3380],[-1,49]],[[4851,3429],[81,7]],[[3950,4540],[0,-10]],[[3950,4530],[0,-58],[-76,2],[1,-99],[-27,-23],[4,-56],[-90,0],[-5,-13]],[[3757,4283],[1,17]],[[3758,4300],[52,3],[20,84],[32,42],[11,49],[14,32],[39,0],[24,30]],[[1318,5364],[-106,71],[-72,153]],[[1140,5588],[-27,67],[-86,125],[-46,-34],[-82,54],[0,220],[0,143]],[[899,6163],[104,-31],[209,57],[39,-35],[98,12],[175,-53],[91,-17],[88,32],[41,-30],[136,-9],[97,49],[-51,40],[29,70],[166,-127],[57,49],[98,-28],[-2,-79],[-108,-41],[-56,-75],[-108,-80],[-34,-74],[54,-117],[32,8],[136,-77],[63,-6],[20,-115],[65,15],[-12,61],[59,93],[-45,87],[27,41],[-18,95],[99,5],[98,-54],[7,-81],[71,-7],[37,60],[116,-198],[51,-22],[38,-96],[-100,-73],[-147,-1],[31,-38],[14,-116],[79,-37],[-100,-67],[-41,62]],[[2602,5215],[-15,74],[-33,15],[-53,-94],[-77,0],[-45,-53],[-130,-76],[-2,142],[-54,60],[-81,54],[-75,-6],[-81,33],[-127,0],[-147,0],[-208,0],[-156,0]],[[2118,6344],[-110,57],[301,-37],[-191,-20]],[[2868,5453],[-5,-66],[54,-13],[9,-101],[-73,38],[-69,-1],[58,142],[26,1]],[[2334,6265],[22,15],[250,-137],[111,-117],[-73,-68],[-19,-95],[-112,38],[-159,92],[83,20],[38,56],[-107,96],[-176,8],[-106,31],[-16,57],[182,58],[82,-54]],[[1348,6346],[139,-38],[-175,-99],[-65,37],[101,100]],[[1664,6400],[-101,-55],[-127,31],[53,48],[175,-24]],[[1694,6293],[48,-80],[80,-38],[-34,-49],[-81,17],[-169,-25],[-65,24],[-76,92],[97,68],[200,-9]],[[1936,6583],[189,-10],[47,-38],[-163,-39],[-73,87]],[[2038,6633],[284,48],[401,-30],[-214,-99],[-198,-99],[-18,-40],[-206,11],[101,111],[-150,98]],[[1140,5588],[-33,27],[-48,101],[-86,15],[-48,40],[-94,17],[-73,35],[-21,-35],[-143,-71],[-80,-22],[-96,79],[-45,7],[-53,65],[36,64],[83,41],[-126,18],[-39,38],[84,35],[-21,57],[80,88],[123,40],[99,-30],[260,-34]],[[2602,5215],[-69,-56],[-12,-85],[-77,-33],[-40,-104],[0,-92],[-65,-65],[-64,-94],[-4,-27],[33,-149],[-25,-64],[-39,103],[-20,79],[-32,-11],[-30,29],[-64,-3],[-5,-45],[-52,20],[-70,-7],[-62,-81],[-4,-60]],[[1901,4470],[-34,21],[-45,116],[-80,7],[-48,84],[-40,-15],[-64,-1],[-87,46],[-53,1]],[[1450,4729],[-33,57],[-42,16],[-78,174],[-15,53],[-3,94],[14,107],[-18,102],[43,32]],[[6164,5372],[-37,-29],[-13,-56],[-46,12],[-17,-69],[-57,-24],[20,-67],[-14,-32]],[[6000,5107],[-25,20],[-114,17],[-17,-31],[-58,-9]],[[5786,5104],[-44,-34],[-54,-8],[-14,70],[-28,28],[-66,-8],[-81,80],[-60,-23],[1,-142]],[[5440,5067],[-43,39],[-37,-21]],[[5360,5085],[0,39],[-37,48],[10,47],[40,1],[0,61],[-43,8],[-48,-25]],[[5282,5264],[-61,77],[25,79],[74,48],[36,1],[79,-43],[98,52],[40,39],[-7,40],[87,14],[89,39],[42,-8],[81,-63],[49,25],[81,-128],[77,8],[50,-53],[42,-19]],[[5786,5104],[48,-54],[-47,-24]],[[5787,5026],[-39,19],[-26,-71],[-8,-68]],[[5714,4906],[-30,9]],[[5684,4915],[-96,104],[-11,39],[-42,14],[-33,51],[-62,-56]],[[7401,3373],[82,-49],[55,-110],[65,-142],[-43,10],[-43,80],[-30,17],[-33,-24],[-16,-42],[-36,8]],[[7402,3121],[-1,252]],[[7402,3121],[-55,70],[-17,74],[-64,36],[-73,63],[9,95],[37,-16],[10,-77],[24,-23],[19,41],[47,23],[62,-34]],[[7031,3130],[3,-19]],[[7034,3111],[-3,19]],[[6868,3633],[4,-72],[-12,-119],[-23,-26],[-13,-84],[-26,-17],[-37,38],[-70,7],[-3,52],[-23,43],[0,70],[13,25]],[[6678,3550],[20,-47],[54,28],[41,-3],[28,111],[47,-6]],[[6984,3507],[-63,-25],[-3,-29],[33,-53],[39,-108],[-13,-36],[-53,104],[3,-100],[-25,5],[3,73],[-17,27],[29,130],[20,29],[47,-17]],[[6651,3225],[95,-20],[20,-54],[-120,22],[-67,36],[16,37],[56,-21]],[[6556,3431],[12,-48],[28,-28],[-6,-108],[-26,-1],[-49,64],[-92,233],[-74,122],[49,10],[72,-121],[24,-1],[62,-122]],[[2568,1442],[38,-87]],[[2606,1355],[-38,1],[0,86]],[[2821,2307],[-18,-143]],[[2803,2164],[28,-53],[10,-62],[-22,-49],[-35,-21],[-71,-4],[4,-72],[-68,-15],[17,-69],[-28,-84],[-46,-49],[45,-36],[-81,-135],[13,-60]],[[2569,1455],[-77,11],[-33,63],[41,186],[-13,127],[23,216],[30,96],[-16,109],[20,112],[31,60],[-2,92],[25,19],[5,50]],[[2603,2596],[19,35],[83,-17]],[[2705,2614],[42,-63],[71,-49],[-19,-76],[49,-16],[39,36],[4,34]],[[2891,2480],[22,-46],[-35,-37],[-57,-90]],[[2606,1355],[-27,-28],[-66,22],[17,81],[38,12]],[[2546,2795],[26,-71],[-7,-37],[21,-97],[17,6]],[[2569,1455],[-92,-48],[-55,49],[-16,217],[22,34],[23,225],[12,108],[40,182],[-1,137],[13,47],[19,241],[-6,118]],[[2528,2765],[18,30]],[[4859,3151],[-47,-7],[-13,-145],[-55,19],[-43,33]],[[4701,3051],[-40,-6],[-10,147],[-53,5],[-10,-32],[-35,-3],[-27,84],[-92,-8]],[[4434,3238],[-3,12]],[[4431,3250],[19,39]],[[4450,3289],[36,-8],[33,56],[9,69],[26,38],[21,164]],[[4575,3608],[24,59],[68,-38],[46,41],[68,5]],[[4781,3675],[24,-37],[30,13],[26,-43]],[[4861,3608],[-22,-112],[-7,-75]],[[4832,3421],[-13,-58]],[[4819,3363],[7,-64]],[[5109,3408],[-14,32],[0,140],[20,44]],[[5115,3624],[42,40],[30,2],[65,116]],[[5252,3782],[26,56],[1,75],[49,24],[-1,-53],[-37,-148],[-66,-153],[-79,-99],[-36,-76]],[[4932,3436],[-1,41],[27,70],[-24,90]],[[4934,3637],[30,49]],[[4964,3686],[20,-41],[78,-40],[28,32],[25,-13]],[[5109,3408],[-31,-34],[-24,-81]],[[4716,3791],[-25,28],[-14,84]],[[4677,3903],[-19,70],[23,105],[20,-3],[-1,154]],[[4700,4229],[26,16],[0,77]],[[4726,4322],[93,0],[181,0]],[[5000,4322],[14,-131],[22,-23]],[[5036,4168],[-36,-41],[-10,-97]],[[4990,4030],[-13,-72],[-37,-75],[-7,-75]],[[4933,3808],[-17,135],[-43,-91],[-31,18],[-24,-34],[-58,6],[-32,27],[-12,-78]],[[4677,3903],[-43,-64],[-44,-16],[-26,-45],[-62,-19]],[[4502,3759],[-7,53],[-23,30],[22,51],[-10,76]],[[4484,3969],[-22,58],[10,51],[30,37],[15,145],[-25,95]],[[4492,4355],[24,21],[92,-73],[92,-74]],[[2497,4234],[0,-65]],[[2497,4169],[-23,16],[23,49]],[[2497,4234],[21,6],[57,-49],[-78,-22]],[[5282,5264],[-56,-70],[44,-108]],[[5270,5086],[-50,2]],[[5220,5088],[-22,25],[-127,36]],[[5071,5149],[-56,47],[16,95]],[[5031,5291],[35,30],[8,66],[-109,38],[-37,68],[-45,-9]],[[4883,5484],[-21,133],[-62,24]],[[4800,5641],[-21,50]],[[4779,5691],[16,77]],[[4795,5768],[2,40]],[[4797,5808],[71,71],[-37,100],[-22,159]],[[4809,6138],[58,19]],[[4867,6157],[125,-19],[87,-44],[19,-44],[-63,-30],[-82,-4],[3,-57],[207,64],[225,107],[83,-15],[143,42],[79,-4],[-5,61],[75,78],[132,-29],[91,1],[20,51],[146,11],[8,46],[271,51],[125,48],[155,-38],[65,-53],[2,-67],[300,-1],[34,-61],[124,-23],[139,4],[14,52],[208,-25],[80,-52],[93,7],[91,-61],[159,5],[60,20],[121,-8],[99,-36],[0,-153],[-15,-78],[-131,-51],[-68,-51],[-102,-21],[-64,3],[-35,-62],[27,-25],[-24,-106],[-123,-148],[-31,168],[31,95],[36,8],[41,96],[-19,48],[-60,-13],[-57,-65],[-68,-38],[-134,22],[-76,-12],[-163,-166],[48,-29],[63,8],[33,-42],[-30,-179],[-42,-83],[-78,-112],[-59,-5],[-35,-41]],[[7165,5102],[-3,7]],[[7162,5109],[9,99],[48,7],[44,129],[-93,-27],[-37,64],[-40,12],[-39,117],[-55,26],[-59,-8],[-6,-50],[-66,-94],[-28,14]],[[6840,5398],[-53,14],[-86,-43],[-50,6],[-37,38],[-74,-7],[-37,45],[-74,31],[-37,-90],[-115,41],[-104,-58]],[[6173,5375],[-9,-3]],[[4674,5569],[-71,4]],[[4603,5573],[37,30]],[[4640,5603],[34,-34]],[[5384,6319],[79,-120],[-75,5],[-52,48],[48,67]],[[117,6066],[71,-11],[-47,-101],[-103,42],[-38,-15],[0,153],[117,-68]],[[4921,5247],[36,-9]],[[4957,5238],[-36,9]],[[2347,4446],[7,-2],[8,-32],[-20,9],[5,25]],[[2739,1472],[28,23],[45,-25],[-61,-15],[-12,17]],[[4809,6138],[-89,-16],[-94,18]],[[4626,6140],[-89,-42],[-112,-189],[16,-71],[-37,-94]],[[4404,5744],[-61,-21],[-62,11],[-16,130],[128,98],[97,128],[102,77],[207,53],[68,-63]],[[3072,6662],[453,34],[344,-86],[-173,-98],[28,-68],[-21,-104],[-93,-85],[25,-76],[-125,-64],[-116,-28],[-82,-68],[-80,-20],[-82,-207],[-113,30],[-77,106],[-54,138],[23,45],[-40,48],[16,75],[-106,153],[-228,21],[-108,92],[243,128],[366,34]],[[5739,1597],[37,-17],[-6,-25],[-35,-3],[4,45]],[[7031,3130],[39,19],[7,-10],[-43,-28]],[[4527,2370],[49,-18],[33,23],[0,142]],[[4609,2517],[39,-75],[39,56],[55,-8],[33,73],[54,58]],[[4829,2621],[40,-7]],[[4869,2614],[17,-81],[-2,-57]],[[4884,2476],[-18,4],[-9,-39],[32,0]],[[4889,2441],[18,0]],[[4907,2441],[-9,-60],[-97,-173],[-57,-45],[-74,3],[-68,-37],[-31,37],[-1,85],[-43,119]],[[4818,2356],[-46,-36],[18,-30],[25,23],[3,43]],[[1901,4470],[-8,-131],[16,-70],[30,-69],[34,-27],[84,44],[12,66],[74,21],[-29,-117]],[[2114,4187],[-19,-27]],[[2095,4160],[-43,1],[12,-68],[-29,0],[-11,-59]],[[2024,4034],[-57,64],[-43,-21],[-99,59],[-61,43],[-35,39],[-24,134],[-75,141],[-67,97],[-22,86],[-35,-39],[71,-135],[30,-125],[-43,51],[-3,49],[-50,43],[7,55],[-31,39],[-37,115]],[[2821,2307],[15,4],[74,-75],[9,-66]],[[2919,2170],[-36,-46],[-66,19],[-14,21]],[[2891,2480],[7,45],[-25,24],[-5,50],[-54,22],[-5,73]],[[2809,2694],[15,78],[-17,72],[-44,2],[-8,95],[-113,86],[2,69],[-31,-6],[-37,-42],[-29,2]],[[2547,3050],[-24,-2],[-37,37],[-42,98],[25,86],[49,40],[21,-2]],[[2539,3307],[10,106],[-13,53],[4,73],[68,-18]],[[2608,3521],[13,-20],[49,30],[-4,89],[78,28],[6,26]],[[2750,3674],[27,-48],[-10,-47],[22,-55],[57,22]],[[2846,3546],[47,16]],[[2893,3562],[36,-7],[30,78]],[[2959,3633],[39,-120],[-10,-43],[41,-6],[86,-51],[11,-22],[68,-30],[34,1],[64,-75],[46,-25],[11,-72],[-9,-64],[-44,-79],[-44,-106],[2,-73],[-21,-151],[-27,-91],[-24,-39],[-61,-15],[-42,-29],[-47,-69],[-9,-107],[-104,-197]],[[2809,2694],[-22,32],[-62,-11],[-20,-101]],[[2546,2795],[21,193],[-20,62]],[[2528,2765],[-26,38],[-104,105],[-26,93],[-61,194],[-34,41],[-4,54],[26,52]],[[2299,3342],[-4,-40],[42,-4],[18,59],[53,56],[4,54]],[[2412,3467],[40,-43],[13,-40],[52,2],[22,-79]],[[2412,3467],[-47,21],[-33,38]],[[2332,3526],[10,49],[30,47],[-18,130]],[[2354,3752],[13,56]],[[2367,3808],[38,29],[5,46],[95,44]],[[2505,3927],[-36,-51],[22,-133],[43,-1],[16,-34],[47,0],[-11,-61],[22,-126]],[[2354,3752],[-28,68],[-32,-35],[-57,5]],[[2237,3790],[10,52]],[[2247,3842],[25,-30],[43,32],[52,-36]],[[2237,3790],[-15,32],[-50,42],[2,37]],[[2174,3901],[47,-6]],[[2221,3895],[26,-53]],[[2174,3901],[-37,73]],[[2137,3974],[55,70],[41,8]],[[2233,4052],[-12,-157]],[[2137,3974],[-11,16]],[[2126,3990],[-36,40]],[[2090,4030],[26,50]],[[2116,4080],[89,4],[28,-32]],[[2126,3990],[-53,13]],[[2073,4003],[17,27]],[[2095,4160],[5,-74]],[[2100,4086],[16,-6]],[[2073,4003],[-49,31]],[[2114,4187],[-1,-76],[-13,-25]],[[2505,3927],[57,-12],[16,-35],[89,4],[37,-9],[68,-79]],[[2772,3796],[-38,-93],[16,-29]],[[2772,3796],[60,-92]],[[2832,3704],[-20,-74],[34,-84]],[[2832,3704],[74,-9]],[[2906,3695],[-1,-82],[-12,-51]],[[2906,3695],[53,-62]],[[4293,5382],[44,-17],[-15,-54]],[[4322,5311],[-14,-63]],[[4308,5248],[13,-89]],[[4321,5159],[-66,-11],[-36,-36]],[[4219,5112],[-27,-5],[-86,42]],[[4106,5149],[16,100],[-40,60],[45,68],[81,70]],[[4208,5447],[73,-63]],[[4281,5384],[12,-2]],[[2299,3342],[-15,90],[19,71],[29,23]],[[2622,4188],[10,-21],[-31,-1],[2,22],[19,0]],[[2362,4187],[27,-13],[-19,-18],[-8,31]],[[2253,4368],[91,-26],[42,-51],[20,-51],[-49,-1],[-22,67],[-71,23],[-11,39]],[[4829,2621],[-33,23],[-64,145]],[[4732,2789],[42,-8],[57,88],[17,6]],[[4848,2875],[59,-47],[-1,-116],[-37,-98]],[[4609,2517],[0,113],[22,1],[1,138],[96,22]],[[4728,2791],[4,-2]],[[4527,2370],[-26,58],[-22,192],[-21,48],[-37,137]],[[4421,2805],[150,0],[72,-24],[42,16]],[[4685,2797],[43,-6]],[[3765,3998],[-11,51],[16,47]],[[3770,4096],[44,18],[55,-77]],[[3869,4037],[16,-84]],[[3885,3953],[-51,6]],[[3834,3959],[-69,-8]],[[3765,3951],[-3,30]],[[3762,3981],[21,-1],[7,19],[-25,-1]],[[3869,4037],[12,30],[141,4],[-10,199],[-11,166],[35,1]],[[4036,4437],[78,-84],[109,-120],[25,-21]],[[4248,4212],[0,-89],[-14,-49],[-75,-25]],[[4159,4049],[-55,-14],[-74,-110],[-5,-52]],[[4025,3873],[-60,-6]],[[3965,3867],[-25,81],[-24,-18],[-31,23]],[[3950,4530],[86,-93]],[[3770,4096],[5,152],[-18,35]],[[4212,3715],[-19,-5]],[[4193,3710],[-5,115],[-17,72]],[[4171,3897],[29,37]],[[4200,3934],[33,-11]],[[4233,3923],[2,-62],[-22,-60],[-1,-86]],[[4484,3969],[-7,-14]],[[4477,3955],[-20,41],[-23,-20],[-51,9],[-25,-17],[-107,36],[-18,-81]],[[4200,3934],[-26,35],[-15,80]],[[4248,4212],[33,17],[67,76],[79,74]],[[4427,4379],[65,-24]],[[4477,3955],[-56,-213],[-58,-20],[-17,-65]],[[4346,3657],[-60,-19],[-36,77],[-38,0]],[[4502,3759],[-17,-46],[-1,-57],[35,-95]],[[4519,3561],[-68,0]],[[4451,3561],[-41,-1]],[[4410,3560],[-38,1]],[[4372,3561],[4,31],[-30,65]],[[4193,3710],[-19,-8]],[[4174,3702],[-13,57],[-10,139]],[[4151,3898],[20,-1]],[[4174,3702],[-69,-47],[-21,11]],[[4084,3666],[-9,48],[16,76],[-6,55]],[[4085,3845],[-3,51],[69,2]],[[4025,3873],[25,-29],[35,1]],[[4084,3666],[-69,0],[-43,-25]],[[3972,3641],[3,52],[-23,30],[3,47]],[[3955,3770],[14,34],[-4,63]],[[3955,3770],[-41,27]],[[3914,3797],[-20,64],[-49,-44]],[[3845,3817],[-44,82]],[[3801,3899],[33,60]],[[3801,3899],[-36,52]],[[3972,3641],[-30,19],[-56,75]],[[3886,3735],[28,62]],[[3886,3735],[-35,39],[-6,43]],[[4575,3608],[-30,9],[-26,-56]],[[4716,3791],[65,-116]],[[4450,3289],[-25,-10]],[[4425,3279],[-19,40]],[[4406,3319],[32,62],[35,-3],[10,44],[-32,139]],[[4406,3319],[-53,111],[16,82]],[[4369,3512],[41,2],[0,46]],[[4369,3512],[3,49]],[[4905,3117],[17,-50],[-6,-133]],[[4916,2934],[-70,-32],[2,-27]],[[4685,2797],[-30,56],[1,122],[48,0],[-3,76]],[[4947,3028],[0,-79],[26,-40],[2,-49],[-32,-11],[1,60],[-28,25]],[[5080,3075],[10,-169],[-30,-78],[-47,-34],[-61,-84],[18,-89],[-2,-79],[-67,-62],[6,-39]],[[4889,2441],[-5,35]],[[4421,2805],[1,59],[22,102],[20,42],[-9,135],[-21,95]],[[4431,3250],[-6,29]],[[4819,3363],[33,17]],[[4974,4735],[-4,-12]],[[4970,4723],[-9,5],[-6,-45],[11,5]],[[4966,4688],[-11,-77]],[[4955,4611],[-2,10]],[[4953,4621],[-13,57]],[[4940,4678],[20,72]],[[4960,4750],[16,7]],[[4976,4757],[-2,-22]],[[4960,4750],[20,60]],[[4980,4810],[-4,-53]],[[5292,2992],[22,-107],[-23,-72],[-22,-131],[-33,-171],[-39,-26],[-32,24],[-18,113],[26,76],[-9,103],[11,46],[43,17],[74,128]],[[4970,4723],[-4,-35]],[[3762,3981],[3,17]],[[4369,4643],[-10,69],[-33,48],[18,139]],[[4344,4899],[25,15],[33,-63],[-18,-53],[31,-46]],[[4415,4752],[-46,-109]],[[3950,4540],[0,46],[79,45],[37,63],[54,24],[-20,112]],[[4100,4830],[84,56],[110,19],[50,-6]],[[4369,4643],[8,-52],[-3,-95],[14,-82],[39,-35]],[[4974,4735],[25,-15],[45,41]],[[5044,4761],[10,-47]],[[5054,4714],[-51,-25],[23,-39],[-44,-50],[-26,6]],[[4956,4606],[-1,5]],[[5339,4409],[56,-5],[48,74]],[[5443,4478],[4,-13]],[[5447,4465],[3,-30]],[[5450,4435],[-27,-86]],[[5423,4349],[-74,12],[-10,48]],[[5321,4428],[5,49],[13,-8],[-4,-46]],[[5335,4423],[-14,5]],[[5256,4630],[10,-55]],[[5266,4575],[-42,21]],[[5224,4596],[32,34]],[[5044,4761],[51,40],[7,75],[24,34]],[[5126,4910],[56,-3]],[[5182,4907],[30,-57],[-15,-66],[44,-58],[29,-98]],[[5270,4628],[-14,2]],[[5224,4596],[-43,3],[-65,78],[-62,37]],[[5443,4478],[4,-13]],[[5450,4435],[54,-53],[25,-48],[-47,-125],[-58,-71],[-50,-22]],[[5374,4116],[-25,90]],[[5349,4206],[69,39],[15,77],[-10,27]],[[7996,2868],[-4,41],[11,-12],[4,-31],[-11,2]],[[6515,3943],[9,79],[52,2]],[[6576,4024],[50,-3]],[[6626,4021],[2,-72],[-73,-71]],[[6555,3878],[-19,5],[-21,60]],[[6515,3943],[-37,48],[-22,-43],[-20,-90],[30,-98],[39,-47]],[[6505,3713],[-47,9]],[[6458,3722],[-37,75],[1,59]],[[6422,3856],[24,76],[-27,105],[11,60],[-24,54],[9,83],[43,27]],[[6458,4261],[46,-89],[43,5],[37,-103],[-8,-50]],[[6458,4261],[25,39]],[[6483,4300],[23,40]],[[6506,4340],[23,-66],[29,0],[15,-81],[57,-133],[-4,-39]],[[6422,3856],[5,59],[-27,179],[-10,32],[-41,-47],[-27,13],[3,84],[-45,95]],[[6280,4271],[7,53]],[[6287,4324],[33,69],[23,105],[51,66]],[[6394,4564],[31,-29],[0,-62],[-22,-32],[22,-39],[13,-75],[45,-27]],[[6506,4340],[72,34],[63,-69]],[[6641,4305],[-31,-33],[-24,-64],[39,-91],[35,-54],[11,-72],[-3,-68],[-94,-118],[-19,73]],[[7165,5102],[-25,-51],[-50,-44],[19,-44]],[[7109,4963],[-50,-33]],[[7059,4930],[-34,14],[-10,70]],[[7015,5014],[60,73],[87,22]],[[7109,4963],[26,-70],[-9,-66],[-60,-27],[-7,130]],[[6840,5398],[-27,-67],[59,-3],[-15,-54],[-188,-160],[-99,-36],[-72,36],[-127,8],[-24,58],[-100,41],[0,61],[-74,93]],[[6287,4324],[-18,80],[-46,44],[-42,-29],[22,-95]],[[6203,4324],[-48,-21],[-11,-52],[-59,-72],[-83,-92],[-1,-112],[-10,-102],[-53,-93],[-22,36],[-40,149],[-10,72],[-21,53],[-16,124],[-4,83],[-50,-18],[-53,108]],[[5722,4387],[15,26],[51,0],[-20,82],[10,58],[27,-3],[61,119],[-4,145],[60,-4],[23,33]],[[5945,4843],[24,-46],[-4,-108],[55,-51]],[[6020,4638],[-24,-54],[120,-80],[64,-12],[2,57]],[[6182,4549],[16,-23]],[[6198,4526],[21,-22],[45,41]],[[6264,4545],[66,58],[36,7],[28,-46]],[[6280,4271],[-22,81],[-27,-36],[-28,8]],[[6198,4526],[27,39],[39,-20]],[[6020,4638],[28,-3],[81,-74],[53,-12]],[[5722,4387],[-42,67],[-112,-13]],[[5568,4441],[9,45],[33,20],[-14,58],[-43,60]],[[5553,4624],[39,-20],[88,22],[13,55],[46,12],[45,92],[22,97],[77,24]],[[5883,4906],[24,-48],[38,-15]],[[5714,4906],[85,30],[80,-19]],[[5879,4917],[4,-11]],[[5553,4624],[-7,149],[15,76]],[[5561,4849],[24,-15],[99,81]],[[5787,5026],[18,-37],[44,6]],[[5849,4995],[30,-78]],[[6000,5107],[-47,-45],[-101,-49],[-3,-18]],[[5561,4849],[-45,68],[-86,21],[-37,-29]],[[5393,4909],[-1,67],[-27,42],[47,35],[-52,32]],[[5182,4907],[1,99]],[[5183,5006],[31,-38]],[[5214,4968],[8,1]],[[5222,4969],[27,29],[28,-46]],[[5277,4952],[7,-29],[71,-34],[38,20]],[[5568,4441],[-95,25],[-21,54],[-41,-25],[-73,53],[-33,88],[-35,-8]],[[4980,4810],[3,45]],[[4983,4855],[22,31],[121,24]],[[5214,4968],[-31,38]],[[5183,5006],[-28,53]],[[5155,5059],[32,6]],[[5187,5065],[35,-96]],[[4626,6140],[67,-45],[8,-75]],[[4701,6020],[-140,-126],[-16,-54],[38,-48],[-45,-53],[-22,-101],[-68,-29],[-44,135]],[[4883,5484],[-59,-29],[-108,20],[-24,-12]],[[4692,5463],[-1,90]],[[4691,5553],[48,15],[22,51]],[[4761,5619],[39,22]],[[5031,5291],[-74,-53]],[[4921,5247],[-62,24],[-26,-50]],[[4833,5221],[-32,7]],[[4801,5228],[35,34],[-15,57],[-57,15]],[[4764,5334],[-90,-13]],[[4674,5321],[-15,21]],[[4659,5342],[11,25]],[[4670,5367],[34,63],[-12,33]],[[4670,5367],[-85,16]],[[4585,5383],[-89,62]],[[4496,5445],[-20,102]],[[4476,5547],[80,43],[47,-17]],[[4674,5569],[17,-16]],[[4541,5330],[-17,-49]],[[4524,5281],[-56,-13]],[[4468,5268],[-77,15]],[[4391,5283],[-20,24]],[[4371,5307],[79,4],[13,48]],[[4463,5359],[78,-11]],[[4541,5348],[0,-18]],[[4674,5321],[-58,-68]],[[4616,5253],[-32,-8]],[[4584,5245],[-52,23]],[[4532,5268],[-8,13]],[[4541,5330],[21,-14],[68,33],[29,-7]],[[4801,5228],[-2,51],[-35,55]],[[4833,5221],[-25,-61]],[[4808,5160],[-68,-1],[-68,21]],[[4672,5180],[-56,73]],[[4640,5603],[-5,32]],[[4635,5635],[88,13],[38,-29]],[[4635,5635],[13,54],[63,14]],[[4711,5703],[68,-12]],[[4711,5703],[-23,54],[107,11]],[[4496,5445],[-64,-32],[31,-54]],[[4371,5307],[-49,4]],[[4293,5382],[-4,25]],[[4289,5407],[3,27]],[[4292,5434],[17,103]],[[4309,5537],[38,57]],[[4347,5594],[32,1]],[[4379,5595],[97,-48]],[[4808,5160],[-13,-66]],[[4795,5094],[-43,-7]],[[4752,5087],[-73,-19]],[[4679,5068],[-13,38]],[[4666,5106],[6,74]],[[4752,5087],[-1,-39]],[[4751,5048],[-74,-45],[27,-77],[-54,-31],[-35,107]],[[4615,5002],[20,47]],[[4635,5049],[44,19]],[[4983,4855],[-33,38],[-50,-27],[-44,22],[-21,-20],[-48,20],[-30,59],[-4,49],[71,68],[44,-5],[55,36],[38,0],[73,-42],[74,23]],[[5108,5076],[47,-17]],[[4795,5094],[-44,-46]],[[4615,5002],[-18,87]],[[4597,5089],[16,28]],[[4613,5117],[12,-29]],[[4625,5088],[10,-39]],[[4584,5245],[4,-41]],[[4588,5204],[-75,-1],[65,-84]],[[4578,5119],[-3,-7]],[[4575,5112],[-56,40],[-53,77]],[[4466,5229],[37,-2],[29,41]],[[4391,5283],[-83,-35]],[[4281,5384],[8,23]],[[4208,5447],[18,7]],[[4226,5454],[66,-20]],[[4226,5454],[32,68],[51,15]],[[3942,5089],[54,0],[-18,-184]],[[3978,4905],[-33,-9],[-15,72],[18,78],[-6,43]],[[3942,5089],[-9,44],[33,28],[140,-12]],[[4219,5112],[-50,-56],[-35,-130],[-33,-38],[-52,0],[-23,-28],[-48,45]],[[4007,5552],[-14,-62],[-40,-23],[-26,85],[48,49]],[[3975,5601],[32,-49]],[[7972,2660],[-7,-24],[-30,48],[7,13],[30,-37]],[[7831,3164],[6,-20],[-31,30],[-5,17],[30,-27]],[[8228,1927],[-20,-47],[-50,68],[20,83],[88,-13],[-38,-91]],[[8062,1792],[56,101],[49,-32],[-64,-95],[-19,-65],[-30,-28],[-61,16],[8,43],[61,60]],[[7555,1898],[16,-48],[-54,-58],[-30,93],[68,13]],[[7058,2230],[-44,-29],[-13,-36],[-87,-3],[-43,-42],[-69,33],[18,77],[-18,106],[-20,52],[-18,144],[29,99],[48,43],[95,39],[32,58],[2,36],[78,117],[32,16],[29,-41],[25,18],[27,72],[68,29],[78,-22],[-35,-91],[89,-102],[37,0],[19,89],[0,102],[19,67],[32,-149],[34,-17],[23,-154],[57,-55],[19,-75],[73,-113],[17,-110],[-16,-136],[-27,-54],[-38,-130],[-2,-39],[-39,-15],[-46,-47],[-42,36],[-20,-28],[-68,31],[-25,72],[-34,21],[-88,115],[-68,44],[-120,-28]],[[6036,3763],[-4,-40],[-30,-20],[-15,87],[27,41],[22,-68]],[[7015,5014],[-49,-29],[-18,22],[-88,-39],[50,-61],[26,27],[35,-16],[-74,-98],[25,-21],[39,-103],[4,-72],[-79,-204],[-64,-68],[-93,-47],[-88,0]],[[6958,4414],[-24,-93],[-15,61],[39,32]],[[4468,5268],[3,-36]],[[4471,5232],[-37,-8],[6,-50],[76,-98],[38,-26],[-25,-41],[-100,73],[-74,103],[-34,-26]],[[4347,5594],[-10,61],[49,13],[-7,-73]],[[3975,5601],[32,-49]],[[4079,5534],[-13,47],[-45,26],[-13,57],[26,72],[71,-37],[-3,-68],[59,-115],[2,-84],[-96,-21],[-38,68],[50,55]],[[3815,6038],[21,-52],[-116,-63],[-95,18],[-20,89],[71,-20],[139,28]],[[5270,5086],[24,-47],[-17,-87]],[[5187,5065],[33,23]],[[5108,5076],[-2,43],[-35,30]],[[7064,3798],[3,-48],[-53,-39],[-21,48],[4,49],[63,23],[4,-33]],[[6971,4176],[4,-43],[-20,-45],[2,-62],[-39,25],[15,136],[38,-11]],[[6678,3550],[77,43],[28,55]],[[6783,3648],[26,-8],[3,43]],[[6812,3683],[29,57],[57,-58],[-30,-49]],[[6505,3713],[29,-53],[3,-140],[-49,60],[-28,98],[-2,44]],[[6783,3648],[29,35]],[[4466,5229],[5,3]],[[4797,5808],[-120,-26],[-35,34],[-6,73],[100,97],[-35,34]],[[4541,5348],[44,35]],[[5036,4168],[19,-81],[88,-124]],[[5143,3963],[-17,-6]],[[5126,3957],[-33,61],[-42,24],[-61,-12]],[[7421,4985],[-21,-39],[-4,-90],[-42,-45],[-90,-3],[-67,-27],[-19,-94],[-44,71],[74,82],[70,4],[87,104],[10,90],[34,32],[12,-85]],[[7484,5169],[-33,-75],[-41,53],[13,84],[61,-62]],[[5374,4116],[-21,-41],[-60,-34],[-21,-28],[-119,-52],[-17,143]],[[5136,4104],[14,47],[84,-24],[48,64],[67,15]],[[5266,4575],[40,-72],[15,-75]],[[5335,4423],[4,-14]],[[5136,4104],[-42,121],[-42,70],[-15,92],[-77,169],[-4,50]],[[3028,461],[109,-16],[14,-60],[-197,3],[74,73]],[[2446,723],[96,78],[22,-113],[-118,35]],[[8300,204],[0,-204],[-8300,0],[0,204],[299,6],[426,-41],[131,41],[-247,34],[17,63],[130,53],[-54,51],[-133,11],[-38,68],[130,-4],[162,72],[210,48],[438,2],[52,20],[147,-56],[160,-5],[7,98],[92,-33],[182,24],[282,-37],[168,37],[38,53],[-28,59],[17,107],[109,104],[21,-60],[-78,-54],[92,-135],[19,-80],[-30,-50],[-199,-84],[-169,-68],[60,-72],[279,-58],[144,-43],[167,44],[489,54],[-26,41],[-141,36],[159,64],[177,30],[127,54],[6,52],[119,73],[66,-17],[191,15],[200,50],[224,5],[181,-22],[130,42],[26,34],[110,-50],[32,26],[290,118],[86,3],[55,-51],[123,-4],[111,-21],[16,-67],[-41,-24],[75,-69],[65,86],[87,16],[34,43],[84,43],[109,13],[282,-14],[72,65],[77,-53],[171,41],[46,-32],[122,-19],[33,24],[150,-7],[163,28],[36,-36],[185,2],[27,-38],[135,-38],[41,12],[113,-40],[81,-44],[132,-9],[64,-28],[-44,-75],[-74,-28],[-60,-104],[81,-65],[-120,-16],[-46,-69],[466,-145]],[[4905,4829],[28,-3],[-23,-19],[-5,22]],[[3758,4300],[59,186],[42,69],[22,4],[48,69],[-5,48],[26,80],[41,33],[22,64],[87,-23]],[[4726,4322],[0,142],[4,227]],[[4730,4691],[87,-27],[47,27],[76,-13]],[[4953,4621],[-9,-54],[-25,-25],[81,-220]],[[4415,4752],[86,-34],[11,-34],[78,-43],[41,94],[47,-2],[52,-42]],[[4964,3686],[-46,109],[15,13]],[[5126,3957],[10,-62]],[[5136,3895],[21,-68],[75,-45],[20,0]],[[5143,3963],[2,-48],[-9,-20]],[[4851,3429],[-19,-8]],[[4861,3608],[73,29]],[[4588,5204],[5,-51]],[[4593,5153],[-15,-34]],[[4625,5088],[22,15]],[[4647,5103],[19,3]],[[4647,5103],[-30,22]],[[4617,5125],[-24,28]],[[4597,5089],[-22,23]],[[4617,5125],[-4,-8]],[[2728,3888],[18,4],[-1,-29],[-19,-4],[2,29]]],"transform":{"scale":[0.043373493975903614,0.02591392771804062],"translate":[-180,-90]},"objects":{"countries":{"type":"GeometryCollection","geometries":[{"arcs":[[0]],"type":"Polygon","properties":{"name":"Fiji","ISO_A3_EH":"FJI"},"id":"FJI"},{"arcs":[[1,2,3,4,5,6,7,8,9]],"type":"Polygon","properties":{"name":"Tanzania","ISO_A3_EH":"TZA"},"id":"TZA"},{"arcs":[[10,11,12,13]],"type":"Polygon","properties":{"name":"W. Sahara","ISO_A3_EH":"ESH"},"id":"ESH"},{"arcs":[[[14,15,16,17]],[[18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]]],"type":"MultiPolygon","properties":{"name":"Canada","ISO_A3_EH":"CAN"},"id":"CAN"},{"arcs":[[[-16,26]],[[-18,27,28,29]]],"type":"MultiPolygon","properties":{"name":"United States of America","ISO_A3_EH":"USA"},"id":"USA"},{"arcs":[[30,31,32,33,34,35]],"type":"Polygon","properties":{"name":"Kazakhstan","ISO_A3_EH":"KAZ"},"id":"KAZ"},{"arcs":[[-33,36,37,38,39]],"type":"Polygon","properties":{"name":"Uzbekistan","ISO_A3_EH":"UZB"},"id":"UZB"},{"arcs":[[40,41]],"type":"Polygon","properties":{"name":"Papua New Guinea","ISO_A3_EH":"PNG"},"id":"PNG"},{"arcs":[[[-42,42]],[[45,46]],[[47]],[[48]],[[49]]],"type":"MultiPolygon","properties":{"name":"Indonesia","ISO_A3_EH":"IDN"},"id":"IDN"},{"arcs":[[[50,51]],[[52,53,54,55,56,57]]],"type":"MultiPolygon","properties":{"name":"Argentina","ISO_A3_EH":"ARG"},"id":"ARG"},{"arcs":[[[-52,58]],[[59,-55,60,61]]],"type":"MultiPolygon","properties":{"name":"Chile","ISO_A3_EH":"CHL"},"id":"CHL"},{"arcs":[[-7,62,63,64,65,66,67,68,69,70,71]],"type":"Polygon","properties":{"name":"Dem. Rep. Congo","ISO_A3_EH":"COD"},"id":"COD"},{"arcs":[[72,73,74]],"type":"Polygon","properties":{"name":"Somalia","ISO_A3_EH":"SOM"},"id":"SOM"},{"arcs":[[-2,75,76,77,-73,78]],"type":"Polygon","properties":{"name":"Kenya","ISO_A3_EH":"KEN"},"id":"KEN"},{"arcs":[[79,80,81,82,83,84,85,86]],"type":"Polygon","properties":{"name":"Sudan","ISO_A3_EH":"SDN"},"id":"SDN"},{"arcs":[[-81,87,88,89,90]],"type":"Polygon","properties":{"name":"Chad","ISO_A3_EH":"TCD"},"id":"TCD"},{"arcs":[[91,92]],"type":"Polygon","properties":{"name":"Haiti","ISO_A3_EH":"HTI"},"id":"HTI"},{"arcs":[[-92,93]],"type":"Polygon","properties":{"name":"Dominican Rep.","ISO_A3_EH":"DOM"},"id":"DOM"},{"arcs":[[[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,-36]],[[110,111,112]],[[113]],[[114]]],"type":"MultiPolygon","properties":{"name":"Russia","ISO_A3_EH":"RUS"},"id":"RUS"},{"arcs":[[117]],"type":"Polygon","properties":{"name":"Bahamas","ISO_A3_EH":"BHS"},"id":"BHS"},{"arcs":[[118]],"type":"Polygon","properties":{"name":"Falkland Is.","ISO_A3_EH":"FLK"},"id":"FLK"},{"arcs":[[-105,119,120,121]],"type":"Polygon","properties":{"name":"Norway","ISO_A3_EH":"NOR"},"id":"NOR"},{"arcs":[[122]],"type":"Polygon","properties":{"name":"Greenland","ISO_A3_EH":"GRL"},"id":"GRL"},{"arcs":[[123]],"type":"Polygon","properties":{"name":"Fr. S. Antarctic Lands","ISO_A3_EH":"ATF"},"id":"ATF"},{"arcs":[[124,-44]],"type":"Polygon","properties":{"name":"Timor-Leste","ISO_A3_EH":"TLS"},"id":"TLS"},{"arcs":[[125,126,127,128,129,130,131],[132]],"type":"Polygon","properties":{"name":"South Africa","ISO_A3_EH":"ZAF"},"id":"ZAF"},{"arcs":[[-133]],"type":"Polygon","properties":{"name":"Lesotho","ISO_A3_EH":"LSO"},"id":"LSO"},{"arcs":[[-29,133,134,135,136]],"type":"Polygon","properties":{"name":"Mexico","ISO_A3_EH":"MEX"},"id":"MEX"},{"arcs":[[137,138,-53]],"type":"Polygon","properties":{"name":"Uruguay","ISO_A3_EH":"URY"},"id":"URY"},{"arcs":[[-138,-58,139,140,141,142,143,144,145,146,147]],"type":"Polygon","properties":{"name":"Brazil","ISO_A3_EH":"BRA"},"id":"BRA"},{"arcs":[[-141,148,-56,-60,149]],"type":"Polygon","properties":{"name":"Bolivia","ISO_A3_EH":"BOL"},"id":"BOL"},{"arcs":[[-142,-150,-62,150,151,152]],"type":"Polygon","properties":{"name":"Peru","ISO_A3_EH":"PER"},"id":"PER"},{"arcs":[[-143,-153,153,154,155,156,157]],"type":"Polygon","properties":{"name":"Colombia","ISO_A3_EH":"COL"},"id":"COL"},{"arcs":[[-156,158,159,160]],"type":"Polygon","properties":{"name":"Panama","ISO_A3_EH":"PAN"},"id":"PAN"},{"arcs":[[-160,161,162,163]],"type":"Polygon","properties":{"name":"Costa Rica","ISO_A3_EH":"CRI"},"id":"CRI"},{"arcs":[[-163,164,165,166]],"type":"Polygon","properties":{"name":"Nicaragua","ISO_A3_EH":"NIC"},"id":"NIC"},{"arcs":[[-166,167,168,169,170]],"type":"Polygon","properties":{"name":"Honduras","ISO_A3_EH":"HND"},"id":"HND"},{"arcs":[[-169,171,172]],"type":"Polygon","properties":{"name":"El Salvador","ISO_A3_EH":"SLV"},"id":"SLV"},{"arcs":[[-136,173,174,-170,-173,175]],"type":"Polygon","properties":{"name":"Guatemala","ISO_A3_EH":"GTM"},"id":"GTM"},{"arcs":[[-135,176,-174]],"type":"Polygon","properties":{"name":"Belize","ISO_A3_EH":"BLZ"},"id":"BLZ"},{"arcs":[[-144,-158,177,178]],"type":"Polygon","properties":{"name":"Venezuela","ISO_A3_EH":"VEN"},"id":"VEN"},{"arcs":[[-145,-179,179,180]],"type":"Polygon","properties":{"name":"Guyana","ISO_A3_EH":"GUY"},"id":"GUY"},{"arcs":[[-146,-181,181,182]],"type":"Polygon","properties":{"name":"Suriname","ISO_A3_EH":"SUR"},"id":"SUR"},{"arcs":[[[-147,-183,183]],[[184,185,186,187,188,189,190,191]]],"type":"MultiPolygon","properties":{"name":"France","ISO_A3_EH":"FRA"},"id":"FRA"},{"arcs":[[-152,192,-154]],"type":"Polygon","properties":{"name":"Ecuador","ISO_A3_EH":"ECU"},"id":"ECU"},{"arcs":[[193]],"type":"Polygon","properties":{"name":"Puerto Rico","ISO_A3_EH":"PRI"},"id":"PRI"},{"arcs":[[194]],"type":"Polygon","properties":{"name":"Jamaica","ISO_A3_EH":"JAM"},"id":"JAM"},{"arcs":[[195]],"type":"Polygon","properties":{"name":"Cuba","ISO_A3_EH":"CUB"},"id":"CUB"},{"arcs":[[-128,196,197,198]],"type":"Polygon","properties":{"name":"Zimbabwe","ISO_A3_EH":"ZWE"},"id":"ZWE"},{"arcs":[[-127,199,200,-197]],"type":"Polygon","properties":{"name":"Botswana","ISO_A3_EH":"BWA"},"id":"BWA"},{"arcs":[[-126,201,202,203,-200]],"type":"Polygon","properties":{"name":"Namibia","ISO_A3_EH":"NAM"},"id":"NAM"},{"arcs":[[204,205,206,207,208,209,210]],"type":"Polygon","properties":{"name":"Senegal","ISO_A3_EH":"SEN"},"id":"SEN"},{"arcs":[[-207,211,212,213,214,215,216]],"type":"Polygon","properties":{"name":"Mali","ISO_A3_EH":"MLI"},"id":"MLI"},{"arcs":[[-12,217,-212,-206,218]],"type":"Polygon","properties":{"name":"Mauritania","ISO_A3_EH":"MRT"},"id":"MRT"},{"arcs":[[219,220,221,222,223]],"type":"Polygon","properties":{"name":"Benin","ISO_A3_EH":"BEN"},"id":"BEN"},{"arcs":[[-90,224,225,-223,226,-214,227,228]],"type":"Polygon","properties":{"name":"Niger","ISO_A3_EH":"NER"},"id":"NER"},{"arcs":[[-224,-226,229,230]],"type":"Polygon","properties":{"name":"Nigeria","ISO_A3_EH":"NGA"},"id":"NGA"},{"arcs":[[-89,231,232,233,234,235,-230,-225]],"type":"Polygon","properties":{"name":"Cameroon","ISO_A3_EH":"CMR"},"id":"CMR"},{"arcs":[[-221,236,237,238]],"type":"Polygon","properties":{"name":"Togo","ISO_A3_EH":"TGO"},"id":"TGO"},{"arcs":[[-238,239,240,241]],"type":"Polygon","properties":{"name":"Ghana","ISO_A3_EH":"GHA"},"id":"GHA"},{"arcs":[[-216,242,-241,243,244,245]],"type":"Polygon","properties":{"name":"Côte d'Ivoire","ISO_A3_EH":"CIV"},"id":"CIV"},{"arcs":[[-208,-217,-246,246,247,248,249]],"type":"Polygon","properties":{"name":"Guinea","ISO_A3_EH":"GIN"},"id":"GIN"},{"arcs":[[-209,-250,250]],"type":"Polygon","properties":{"name":"Guinea-Bissau","ISO_A3_EH":"GNB"},"id":"GNB"},{"arcs":[[-245,251,252,-247]],"type":"Polygon","properties":{"name":"Liberia","ISO_A3_EH":"LBR"},"id":"LBR"},{"arcs":[[-248,-253,253]],"type":"Polygon","properties":{"name":"Sierra Leone","ISO_A3_EH":"SLE"},"id":"SLE"},{"arcs":[[-215,-227,-222,-239,-242,-243]],"type":"Polygon","properties":{"name":"Burkina Faso","ISO_A3_EH":"BFA"},"id":"BFA"},{"arcs":[[-68,254,-232,-88,-80,255]],"type":"Polygon","properties":{"name":"Central African Rep.","ISO_A3_EH":"CAF"},"id":"CAF"},{"arcs":[[-67,256,257,258,-233,-255]],"type":"Polygon","properties":{"name":"Congo","ISO_A3_EH":"COG"},"id":"COG"},{"arcs":[[-234,-259,259,260]],"type":"Polygon","properties":{"name":"Gabon","ISO_A3_EH":"GAB"},"id":"GAB"},{"arcs":[[-235,-261,261]],"type":"Polygon","properties":{"name":"Eq. Guinea","ISO_A3_EH":"GNQ"},"id":"GNQ"},{"arcs":[[-6,262,263,-198,-201,-204,264,-63]],"type":"Polygon","properties":{"name":"Zambia","ISO_A3_EH":"ZMB"},"id":"ZMB"},{"arcs":[[-5,265,-263]],"type":"Polygon","properties":{"name":"Malawi","ISO_A3_EH":"MWI"},"id":"MWI"},{"arcs":[[-4,266,-131,267,-129,-199,-264,-266]],"type":"Polygon","properties":{"name":"Mozambique","ISO_A3_EH":"MOZ"},"id":"MOZ"},{"arcs":[[-130,-268]],"type":"Polygon","properties":{"name":"eSwatini","ISO_A3_EH":"SWZ"},"id":"SWZ"},{"arcs":[[[-64,-265,-203,268]],[[-66,269,-257]]],"type":"MultiPolygon","properties":{"name":"Angola","ISO_A3_EH":"AGO"},"id":"AGO"},{"arcs":[[-8,-72,270]],"type":"Polygon","properties":{"name":"Burundi","ISO_A3_EH":"BDI"},"id":"BDI"},{"arcs":[[271,272,273,274,275,276,277,278]],"type":"Polygon","properties":{"name":"Israel","ISO_A3_EH":"ISR"},"id":"ISR"},{"arcs":[[-278,279,280]],"type":"Polygon","properties":{"name":"Lebanon","ISO_A3_EH":"LBN"},"id":"LBN"},{"arcs":[[281]],"type":"Polygon","properties":{"name":"Madagascar","ISO_A3_EH":"MDG"},"id":"MDG"},{"arcs":[[-273,282]],"type":"Polygon","properties":{"name":"Palestine","ISO_A3_EH":"PSE"},"id":"PSE"},{"arcs":[[-211,283]],"type":"Polygon","properties":{"name":"Gambia","ISO_A3_EH":"GMB"},"id":"GMB"},{"arcs":[[284,285,286]],"type":"Polygon","properties":{"name":"Tunisia","ISO_A3_EH":"TUN"},"id":"TUN"},{"arcs":[[-11,287,288,-285,289,-228,-213,-218]],"type":"Polygon","properties":{"name":"Algeria","ISO_A3_EH":"DZA"},"id":"DZA"},{"arcs":[[-272,290,291,292,293,-274,-283]],"type":"Polygon","properties":{"name":"Jordan","ISO_A3_EH":"JOR"},"id":"JOR"},{"arcs":[[294,295,296,297,298]],"type":"Polygon","properties":{"name":"United Arab Emirates","ISO_A3_EH":"ARE"},"id":"ARE"},{"arcs":[[299,300]],"type":"Polygon","properties":{"name":"Qatar","ISO_A3_EH":"QAT"},"id":"QAT"},{"arcs":[[301,302,303]],"type":"Polygon","properties":{"name":"Kuwait","ISO_A3_EH":"KWT"},"id":"KWT"},{"arcs":[[-292,304,305,306,307,-304,308]],"type":"Polygon","properties":{"name":"Iraq","ISO_A3_EH":"IRQ"},"id":"IRQ"},{"arcs":[[-298,310,311,312]],"type":"Polygon","properties":{"name":"Oman","ISO_A3_EH":"OMN"},"id":"OMN"},{"arcs":[[313]],"type":"Polygon","properties":{"name":"Vanuatu","ISO_A3_EH":"VUT"},"id":"VUT"},{"arcs":[[314,315,316,317]],"type":"Polygon","properties":{"name":"Cambodia","ISO_A3_EH":"KHM"},"id":"KHM"},{"arcs":[[-315,318,319,320,321,322]],"type":"Polygon","properties":{"name":"Thailand","ISO_A3_EH":"THA"},"id":"THA"},{"arcs":[[-316,-323,323,324,325]],"type":"Polygon","properties":{"name":"Laos","ISO_A3_EH":"LAO"},"id":"LAO"},{"arcs":[[-322,326,327,328,329,-324]],"type":"Polygon","properties":{"name":"Myanmar","ISO_A3_EH":"MMR"},"id":"MMR"},{"arcs":[[-317,-326,330,331]],"type":"Polygon","properties":{"name":"Vietnam","ISO_A3_EH":"VNM"},"id":"VNM"},{"arcs":[[-107,332,333,334,335]],"type":"Polygon","properties":{"name":"North Korea","ISO_A3_EH":"PRK"},"id":"PRK"},{"arcs":[[-334,336]],"type":"Polygon","properties":{"name":"South Korea","ISO_A3_EH":"KOR"},"id":"KOR"},{"arcs":[[-109,337]],"type":"Polygon","properties":{"name":"Mongolia","ISO_A3_EH":"MNG"},"id":"MNG"},{"arcs":[[-329,338,339,340,341,342,343,344,345]],"type":"Polygon","properties":{"name":"India","ISO_A3_EH":"IND"},"id":"IND"},{"arcs":[[-328,346,-339]],"type":"Polygon","properties":{"name":"Bangladesh","ISO_A3_EH":"BGD"},"id":"BGD"},{"arcs":[[-345,347]],"type":"Polygon","properties":{"name":"Bhutan","ISO_A3_EH":"BTN"},"id":"BTN"},{"arcs":[[-343,348]],"type":"Polygon","properties":{"name":"Nepal","ISO_A3_EH":"NPL"},"id":"NPL"},{"arcs":[[-341,349,350,351,352]],"type":"Polygon","properties":{"name":"Pakistan","ISO_A3_EH":"PAK"},"id":"PAK"},{"arcs":[[-39,353,354,-352,355,356]],"type":"Polygon","properties":{"name":"Afghanistan","ISO_A3_EH":"AFG"},"id":"AFG"},{"arcs":[[-38,357,358,-354]],"type":"Polygon","properties":{"name":"Tajikistan","ISO_A3_EH":"TJK"},"id":"TJK"},{"arcs":[[-32,359,-358,-37]],"type":"Polygon","properties":{"name":"Kyrgyzstan","ISO_A3_EH":"KGZ"},"id":"KGZ"},{"arcs":[[-34,-40,-357,360,361]],"type":"Polygon","properties":{"name":"Turkmenistan","ISO_A3_EH":"TKM"},"id":"TKM"},{"arcs":[[-307,362,363,364,365,366,-361,-356,-351,367]],"type":"Polygon","properties":{"name":"Iran","ISO_A3_EH":"IRN"},"id":"IRN"},{"arcs":[[-279,-281,368,369,-305,-291]],"type":"Polygon","properties":{"name":"Syria","ISO_A3_EH":"SYR"},"id":"SYR"},{"arcs":[[-365,370,371,372,373]],"type":"Polygon","properties":{"name":"Armenia","ISO_A3_EH":"ARM"},"id":"ARM"},{"arcs":[[-121,374,375]],"type":"Polygon","properties":{"name":"Sweden","ISO_A3_EH":"SWE"},"id":"SWE"},{"arcs":[[-100,376,377,378,379]],"type":"Polygon","properties":{"name":"Belarus","ISO_A3_EH":"BLR"},"id":"BLR"},{"arcs":[[-99,380,-116,381,382,383,384,385,386,387,-377]],"type":"Polygon","properties":{"name":"Ukraine","ISO_A3_EH":"UKR"},"id":"UKR"},{"arcs":[[-378,-388,388,389,390,391,-111,392]],"type":"Polygon","properties":{"name":"Poland","ISO_A3_EH":"POL"},"id":"POL"},{"arcs":[[393,394,395,396,397,398,399]],"type":"Polygon","properties":{"name":"Austria","ISO_A3_EH":"AUT"},"id":"AUT"},{"arcs":[[-386,400,401,402,403,-394,404]],"type":"Polygon","properties":{"name":"Hungary","ISO_A3_EH":"HUN"},"id":"HUN"},{"arcs":[[-384,405]],"type":"Polygon","properties":{"name":"Moldova","ISO_A3_EH":"MDA"},"id":"MDA"},{"arcs":[[-383,406,407,408,-401,-385,-406]],"type":"Polygon","properties":{"name":"Romania","ISO_A3_EH":"ROU"},"id":"ROU"},{"arcs":[[-379,-393,-113,409,410]],"type":"Polygon","properties":{"name":"Lithuania","ISO_A3_EH":"LTU"},"id":"LTU"},{"arcs":[[-101,-380,-411,411,412]],"type":"Polygon","properties":{"name":"Latvia","ISO_A3_EH":"LVA"},"id":"LVA"},{"arcs":[[-102,-413,413]],"type":"Polygon","properties":{"name":"Estonia","ISO_A3_EH":"EST"},"id":"EST"},{"arcs":[[-391,414,-398,415,-185,416,417,418,419,420,421]],"type":"Polygon","properties":{"name":"Germany","ISO_A3_EH":"DEU"},"id":"DEU"},{"arcs":[[-408,422,423,424,425,426]],"type":"Polygon","properties":{"name":"Bulgaria","ISO_A3_EH":"BGR"},"id":"BGR"},{"arcs":[[-425,427,428,429,430]],"type":"Polygon","properties":{"name":"Greece","ISO_A3_EH":"GRC"},"id":"GRC"},{"arcs":[[[-306,-370,431,432,-372,-363]],[[-424,433,-428]]],"type":"MultiPolygon","properties":{"name":"Turkey","ISO_A3_EH":"TUR"},"id":"TUR"},{"arcs":[[-430,434,435,436,437]],"type":"Polygon","properties":{"name":"Albania","ISO_A3_EH":"ALB"},"id":"ALB"},{"arcs":[[-403,438,439,440,441,442]],"type":"Polygon","properties":{"name":"Croatia","ISO_A3_EH":"HRV"},"id":"HRV"},{"arcs":[[-397,443,-186,-416]],"type":"Polygon","properties":{"name":"Switzerland","ISO_A3_EH":"CHE"},"id":"CHE"},{"arcs":[[-417,-192,444]],"type":"Polygon","properties":{"name":"Luxembourg","ISO_A3_EH":"LUX"},"id":"LUX"},{"arcs":[[-418,-445,-191,445,446]],"type":"Polygon","properties":{"name":"Belgium","ISO_A3_EH":"BEL"},"id":"BEL"},{"arcs":[[-419,-447,447]],"type":"Polygon","properties":{"name":"Netherlands","ISO_A3_EH":"NLD"},"id":"NLD"},{"arcs":[[448,449]],"type":"Polygon","properties":{"name":"Portugal","ISO_A3_EH":"PRT"},"id":"PRT"},{"arcs":[[-449,450,-189,451]],"type":"Polygon","properties":{"name":"Spain","ISO_A3_EH":"ESP"},"id":"ESP"},{"arcs":[[452,453]],"type":"Polygon","properties":{"name":"Ireland","ISO_A3_EH":"IRL"},"id":"IRL"},{"arcs":[[454]],"type":"Polygon","properties":{"name":"New Caledonia","ISO_A3_EH":"NCL"},"id":"NCL"},{"arcs":[[455]],"type":"Polygon","properties":{"name":"Solomon Is.","ISO_A3_EH":"SLB"},"id":"SLB"},{"arcs":[[[456]],[[457]]],"type":"MultiPolygon","properties":{"name":"New Zealand","ISO_A3_EH":"NZL"},"id":"NZL"},{"arcs":[[[458]],[[459]]],"type":"MultiPolygon","properties":{"name":"Australia","ISO_A3_EH":"AUS"},"id":"AUS"},{"arcs":[[460]],"type":"Polygon","properties":{"name":"Sri Lanka","ISO_A3_EH":"LKA"},"id":"LKA"},{"arcs":[[-31,-110,-338,-108,-336,461,-331,-325,-330,-346,-348,-344,-349,-342,-353,-355,-359,-360]],"type":"Polygon","properties":{"name":"China","ISO_A3_EH":"CHN"},"id":"CHN"},{"arcs":[[462]],"type":"Polygon","properties":{"name":"Taiwan","ISO_A3_EH":"TWN"},"id":"TWN"},{"arcs":[[-396,463,464,-187,-444]],"type":"Polygon","properties":{"name":"Italy","ISO_A3_EH":"ITA"},"id":"ITA"},{"arcs":[[-421,465]],"type":"Polygon","properties":{"name":"Denmark","ISO_A3_EH":"DNK"},"id":"DNK"},{"arcs":[[467]],"type":"Polygon","properties":{"name":"United Kingdom","ISO_A3_EH":"GBR"},"id":"GBR"},{"arcs":[[468]],"type":"Polygon","properties":{"name":"Iceland","ISO_A3_EH":"ISL"},"id":"ISL"},{"arcs":[[-96,469,-366,-374,470]],"type":"Polygon","properties":{"name":"Azerbaijan","ISO_A3_EH":"AZE"},"id":"AZE"},{"arcs":[[-97,-471,-373,-433,471]],"type":"Polygon","properties":{"name":"Georgia","ISO_A3_EH":"GEO"},"id":"GEO"},{"arcs":[[[472]],[[473]]],"type":"MultiPolygon","properties":{"name":"Philippines","ISO_A3_EH":"PHL"},"id":"PHL"},{"arcs":[[[-47,474,475,476]],[[-320,477]]],"type":"MultiPolygon","properties":{"name":"Malaysia","ISO_A3_EH":"MYS"},"id":"MYS"},{"arcs":[[-476,478]],"type":"Polygon","properties":{"name":"Brunei","ISO_A3_EH":"BRN"},"id":"BRN"},{"arcs":[[-395,-404,-443,479,-464]],"type":"Polygon","properties":{"name":"Slovenia","ISO_A3_EH":"SVN"},"id":"SVN"},{"arcs":[[-104,480,-375,-120]],"type":"Polygon","properties":{"name":"Finland","ISO_A3_EH":"FIN"},"id":"FIN"},{"arcs":[[-387,-405,-400,481,-389]],"type":"Polygon","properties":{"name":"Slovakia","ISO_A3_EH":"SVK"},"id":"SVK"},{"arcs":[[-390,-482,-399,-415]],"type":"Polygon","properties":{"name":"Czechia","ISO_A3_EH":"CZE"},"id":"CZE"},{"arcs":[[-85,482,483,484]],"type":"Polygon","properties":{"name":"Eritrea","ISO_A3_EH":"ERI"},"id":"ERI"},{"arcs":[[[485]],[[486]]],"type":"MultiPolygon","properties":{"name":"Japan","ISO_A3_EH":"JPN"},"id":"JPN"},{"arcs":[[-140,-57,-149]],"type":"Polygon","properties":{"name":"Paraguay","ISO_A3_EH":"PRY"},"id":"PRY"},{"arcs":[[-312,487,488]],"type":"Polygon","properties":{"name":"Yemen","ISO_A3_EH":"YEM"},"id":"YEM"},{"arcs":[[-293,-309,-303,489,-301,490,-299,-313,-489,491]],"type":"Polygon","properties":{"name":"Saudi Arabia","ISO_A3_EH":"SAU"},"id":"SAU"},{"arcs":[[[492]],[[493]],[[494]]],"type":"MultiPolygon","properties":{"name":"Antarctica","ISO_A3_EH":"ATA"},"id":"ATA"},{"arcs":[[495]],"type":"Polygon","properties":{"name":"Cyprus","ISO_A3_EH":"CYP"},"id":"CYP"},{"arcs":[[-288,-14,496]],"type":"Polygon","properties":{"name":"Morocco","ISO_A3_EH":"MAR"},"id":"MAR"},{"arcs":[[-83,497,498,-276,499]],"type":"Polygon","properties":{"name":"Egypt","ISO_A3_EH":"EGY"},"id":"EGY"},{"arcs":[[-82,-91,-229,-290,-287,500,-498]],"type":"Polygon","properties":{"name":"Libya","ISO_A3_EH":"LBY"},"id":"LBY"},{"arcs":[[-74,-78,501,-86,-485,502,503]],"type":"Polygon","properties":{"name":"Ethiopia","ISO_A3_EH":"ETH"},"id":"ETH"},{"arcs":[[-484,504,-503]],"type":"Polygon","properties":{"name":"Djibouti","ISO_A3_EH":"DJI"},"id":"DJI"},{"arcs":[[-10,505,-70,506,-76]],"type":"Polygon","properties":{"name":"Uganda","ISO_A3_EH":"UGA"},"id":"UGA"},{"arcs":[[-9,-271,-71,-506]],"type":"Polygon","properties":{"name":"Rwanda","ISO_A3_EH":"RWA"},"id":"RWA"},{"arcs":[[-440,507,508]],"type":"Polygon","properties":{"name":"Bosnia and Herz.","ISO_A3_EH":"BIH"},"id":"BIH"},{"arcs":[[-426,-431,-438,509,510]],"type":"Polygon","properties":{"name":"North Macedonia","ISO_A3_EH":"MKD"},"id":"MKD"},{"arcs":[[-402,-409,-427,-511,511,512,-508,-439]],"type":"Polygon","properties":{"name":"Serbia","ISO_A3_EH":"SRB"},"id":"SRB"},{"arcs":[[-436,513,-441,-509,-513,514]],"type":"Polygon","properties":{"name":"Montenegro","ISO_A3_EH":"MNE"},"id":"MNE"},{"arcs":[[515]],"type":"Polygon","properties":{"name":"Trinidad and Tobago","ISO_A3_EH":"TTO"},"id":"TTO"},{"arcs":[[-69,-256,-87,-502,-77,-507]],"type":"Polygon","properties":{"name":"S. Sudan","ISO_A3_EH":"SSD"},"id":"SSD"}]}}} \ No newline at end of file diff --git a/r/inst/htmlwidgets/lib/geo/us-10m.topo.json b/r/inst/htmlwidgets/lib/geo/us-10m.topo.json new file mode 100644 index 0000000..3878059 --- /dev/null +++ b/r/inst/htmlwidgets/lib/geo/us-10m.topo.json @@ -0,0 +1 @@ +{"type":"Topology","bbox":[-179.14733999999999,-14.552548999999999,179.77847,71.352561],"transform":{"scale":[0.003589293992939929,0.0008590596905969058],"translate":[-179.14733999999999,-14.552548999999999]},"objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","arcs":[[0,1,2,3,4,5,6,7,8,9,10,11]],"id":"04015","properties":{"name":"Mohave"}},{"type":"Polygon","arcs":[[12,13,14,15,16,17,18]],"id":"22105","properties":{"name":"Tangipahoa"}},{"type":"Polygon","arcs":[[19,20,21,22,23]],"id":"16063","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[24,25,26,27,28,29,30,31,32]],"id":"27119","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[33,34,35,36,37,38,39]],"id":"38017","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[40,41,42,43,44]],"id":"46081","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[45,46,47,48,49,50]],"id":"36095","properties":{"name":"Schoharie"}},{"type":"MultiPolygon","arcs":[[[51]],[[52]],[[53]],[[54,55,56,57]],[[58]],[[59]]],"id":"02275","properties":{"name":"Wrangell"}},{"type":"Polygon","arcs":[[60,61,62,63]],"id":"13143","properties":{"name":"Haralson"}},{"type":"Polygon","arcs":[[64,65,66,67,68]],"id":"13023","properties":{"name":"Bleckley"}},{"type":"Polygon","arcs":[[69,70,71,72,73,74]],"id":"18093","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[75,76,77,78,79,80]],"id":"18079","properties":{"name":"Jennings"}},{"type":"Polygon","arcs":[[81,82,83,84,85,86]],"id":"26087","properties":{"name":"Lapeer"}},{"type":"Polygon","arcs":[[87,88,89,90,91,92]],"id":"28017","properties":{"name":"Chickasaw"}},{"type":"Polygon","arcs":[[93,94,95,96,97,98]],"id":"39033","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[99,100,101,102,103,104,105]],"id":"46099","properties":{"name":"Minnehaha"}},{"type":"Polygon","arcs":[[106,-105,107,108,109,110]],"id":"46125","properties":{"name":"Turner"}},{"type":"Polygon","arcs":[[111,112,113,114,115,116]],"id":"48471","properties":{"name":"Walker"}},{"type":"Polygon","arcs":[[117,118,119,120]],"id":"72133","properties":{"name":"Santa Isabel"}},{"type":"Polygon","arcs":[[121,122,123,124,125,126]],"id":"46003","properties":{"name":"Aurora"}},{"type":"Polygon","arcs":[[127,128,129,130,131,132,133]],"id":"48047","properties":{"name":"Brooks"}},{"type":"Polygon","arcs":[[134,135,136,137,138,139,140]],"id":"72025","properties":{"name":"Caguas"}},{"type":"Polygon","arcs":[[141,142,143,144,145]],"id":"72033","properties":{"name":"Cataño"}},{"type":"Polygon","arcs":[[146,147,148,149,150,151]],"id":"72101","properties":{"name":"Morovis"}},{"type":"Polygon","arcs":[[152,153,154,155,156]],"id":"31029","properties":{"name":"Chase"}},{"type":"Polygon","arcs":[[157,158,159,160]],"id":"72054","properties":{"name":"Florida"}},{"type":"Polygon","arcs":[[161,162,163,164,165,166]],"id":"08021","properties":{"name":"Conejos"}},{"type":"Polygon","arcs":[[167,168,169,170,171,172,173,174]],"id":"24043","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[175,176,177,178,179]],"id":"20137","properties":{"name":"Norton"}},{"type":"Polygon","arcs":[[180,181,182,183,184,185]],"id":"17053","properties":{"name":"Ford"}},{"type":"Polygon","arcs":[[186,187,188,189,190,191]],"id":"48117","properties":{"name":"Deaf Smith"}},{"type":"Polygon","arcs":[[192,193,194,195,196,197,198,199]],"id":"13261","properties":{"name":"Sumter"}},{"type":"Polygon","arcs":[[200,201,202,203,204,205,206,207]],"id":"55075","properties":{"name":"Marinette"}},{"type":"Polygon","arcs":[[208,209,210,211,212,213,214]],"id":"06069","properties":{"name":"San Benito"}},{"type":"Polygon","arcs":[[215,216,217,218,219,220,221]],"id":"13199","properties":{"name":"Meriwether"}},{"type":"Polygon","arcs":[[222,223,224,225,226,227]],"id":"19013","properties":{"name":"Black Hawk"}},{"type":"Polygon","arcs":[[228,229,230,231]],"id":"19081","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[232,-27]],"id":"27125","properties":{"name":"Red Lake"}},{"type":"Polygon","arcs":[[233,234,235,236,237]],"id":"31125","properties":{"name":"Nance"}},{"type":"Polygon","arcs":[[238,239,240,241]],"id":"42075","properties":{"name":"Lebanon"}},{"type":"Polygon","arcs":[[242,243,244,245]],"id":"48219","properties":{"name":"Hockley"}},{"type":"Polygon","arcs":[[246,247,248,249,250,251]],"id":"48417","properties":{"name":"Shackelford"}},{"type":"Polygon","arcs":[[252,253,254,255,256,257,258]],"id":"48451","properties":{"name":"Tom Green"}},{"type":"Polygon","arcs":[[259,260,261,262,263,264]],"id":"48497","properties":{"name":"Wise"}},{"type":"Polygon","arcs":[[265,266,267,-100,268,269]],"id":"46079","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[270,271,272,273,274,275,276]],"id":"46069","properties":{"name":"Hyde"}},{"type":"Polygon","arcs":[[277,278,279,280,281,282]],"id":"48101","properties":{"name":"Cottle"}},{"type":"Polygon","arcs":[[283,284,285]],"id":"04023","properties":{"name":"Santa Cruz"}},{"type":"Polygon","arcs":[[286,287,288,289,290]],"id":"19179","properties":{"name":"Wapello"}},{"type":"Polygon","arcs":[[291,292,293,294,295,296]],"id":"19031","properties":{"name":"Cedar"}},{"type":"Polygon","arcs":[[297,298,299,300,301,302,303,304,305]],"id":"30033","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[306,307,308,309,310,311,312]],"id":"29185","properties":{"name":"St. Clair"}},{"type":"Polygon","arcs":[[313,314,315,316,317]],"id":"12091","properties":{"name":"Okaloosa"}},{"type":"Polygon","arcs":[[318,319,320,321,322]],"id":"21219","properties":{"name":"Todd"}},{"type":"Polygon","arcs":[[323,324,325,326,327]],"id":"23003","properties":{"name":"Aroostook"}},{"type":"Polygon","arcs":[[328,329,330,-175,331,332,333,334]],"id":"24001","properties":{"name":"Allegany"}},{"type":"Polygon","arcs":[[335,336,337,338,339]],"id":"28075","properties":{"name":"Lauderdale"}},{"type":"Polygon","arcs":[[340,341,342,343,344,345]],"id":"38021","properties":{"name":"Dickey"}},{"type":"Polygon","arcs":[[346,347,348,349,350]],"id":"27093","properties":{"name":"Meeker"}},{"type":"Polygon","arcs":[[351,352,353,354]],"id":"46007","properties":{"name":"Bennett"}},{"type":"Polygon","arcs":[[355,356,357,358,359,360,361,362]],"id":"49043","properties":{"name":"Summit"}},{"type":"Polygon","arcs":[[363,364,365,366,367,368]],"id":"36099","properties":{"name":"Seneca"}},{"type":"Polygon","arcs":[[369,370,371,372,373,374,375]],"id":"20073","properties":{"name":"Greenwood"}},{"type":"Polygon","arcs":[[376,377,378,379]],"id":"20101","properties":{"name":"Lane"}},{"type":"Polygon","arcs":[[380,381,382,383,384,385]],"id":"26123","properties":{"name":"Newaygo"}},{"type":"Polygon","arcs":[[386,387,388,389,390]],"id":"31035","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[391,392,393,394]],"id":"36073","properties":{"name":"Orleans"}},{"type":"Polygon","arcs":[[395,396,397,398,399,400,401]],"id":"38063","properties":{"name":"Nelson"}},{"type":"Polygon","arcs":[[402,403,404,405,406,407]],"id":"40011","properties":{"name":"Blaine"}},{"type":"Polygon","arcs":[[408,409,410,411,412]],"id":"48441","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[413,414,415,416,417]],"id":"48011","properties":{"name":"Armstrong"}},{"type":"Polygon","arcs":[[418,419,420,421]],"id":"48233","properties":{"name":"Hutchinson"}},{"type":"Polygon","arcs":[[-258,422,423,424]],"id":"48235","properties":{"name":"Irion"}},{"type":"Polygon","arcs":[[425,426,427,428,429,430]],"id":"55137","properties":{"name":"Waushara"}},{"type":"Polygon","arcs":[[431,432,433,434,435,436,437]],"id":"47151","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[438,439,440,441,442]],"id":"55113","properties":{"name":"Sawyer"}},{"type":"Polygon","arcs":[[443,444,445,446,447]],"id":"26073","properties":{"name":"Isabella"}},{"type":"Polygon","arcs":[[448,449,450,451,452,453]],"id":"28131","properties":{"name":"Stone"}},{"type":"Polygon","arcs":[[454,455,-93,456,457,458]],"id":"28013","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[459,460,461,462,463]],"id":"31171","properties":{"name":"Thomas"}},{"type":"Polygon","arcs":[[464,465,466,467,468,469]],"id":"48335","properties":{"name":"Mitchell"}},{"type":"Polygon","arcs":[[470,471,472,473,474]],"id":"08057","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[475,476,477,478,479]],"id":"19089","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[480,481,482,483,-82]],"id":"26151","properties":{"name":"Sanilac"}},{"type":"Polygon","arcs":[[484,485,486,487,488,489,490]],"id":"18075","properties":{"name":"Jay"}},{"type":"Polygon","arcs":[[491,492,493,494,495]],"id":"38075","properties":{"name":"Renville"}},{"type":"Polygon","arcs":[[496,497,498,499,500]],"id":"41021","properties":{"name":"Gilliam"}},{"type":"Polygon","arcs":[[501,502,503,504,505]],"id":"29119","properties":{"name":"McDonald"}},{"type":"Polygon","arcs":[[506,507,508,509]],"id":"48501","properties":{"name":"Yoakum"}},{"type":"Polygon","arcs":[[510,511,512,-279,513]],"id":"48075","properties":{"name":"Childress"}},{"type":"Polygon","arcs":[[514,515,516,517]],"id":"13097","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[518,519,520,521]],"id":"02158","properties":{"name":"Kusilvak"}},{"type":"Polygon","arcs":[[522,523,524,525,526]],"id":"19181","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[527,528,529,530,531,532]],"id":"40031","properties":{"name":"Comanche"}},{"type":"Polygon","arcs":[[533,534,535,536,537,538,539,540]],"id":"40009","properties":{"name":"Beckham"}},{"type":"Polygon","arcs":[[-274,541,542,543,544]],"id":"46017","properties":{"name":"Buffalo"}},{"type":"Polygon","arcs":[[545,546,547,548,549,550]],"id":"48171","properties":{"name":"Gillespie"}},{"type":"Polygon","arcs":[[551,552,553,554]],"id":"48125","properties":{"name":"Dickens"}},{"type":"Polygon","arcs":[[555,556,557,558,559]],"id":"48283","properties":{"name":"La Salle"}},{"type":"Polygon","arcs":[[560,561,562,563]],"id":"54093","properties":{"name":"Tucker"}},{"type":"Polygon","arcs":[[564,565,566,567,568,569,570,571,572,573,574,575]],"id":"06089","properties":{"name":"Shasta"}},{"type":"Polygon","arcs":[[576,577,578,579,580,581]],"id":"17165","properties":{"name":"Saline"}},{"type":"Polygon","arcs":[[582,583,584,585,586]],"id":"26101","properties":{"name":"Manistee"}},{"type":"Polygon","arcs":[[587,588,589,590,591]],"id":"31071","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[592,593,-591,594,595,596,597,598,599]],"id":"31041","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[600,-270,601,602,603]],"id":"46097","properties":{"name":"Miner"}},{"type":"Polygon","arcs":[[604,605,606,607,608,609]],"id":"46025","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[610,611,612,613,614]],"id":"05037","properties":{"name":"Cross"}},{"type":"Polygon","arcs":[[615,616,617,-167,618,619,620]],"id":"08007","properties":{"name":"Archuleta"}},{"type":"Polygon","arcs":[[621,622,623,624]],"id":"12043","properties":{"name":"Glades"}},{"type":"Polygon","arcs":[[625,626,627,628,629]],"id":"46053","properties":{"name":"Gregory"}},{"type":"Polygon","arcs":[[630,631,632,-419,633]],"id":"48195","properties":{"name":"Hansford"}},{"type":"MultiPolygon","arcs":[[[634,635,636,637,638]],[[639,640,641]]],"id":"53053","properties":{"name":"Pierce"}},{"type":"Polygon","arcs":[[642,643,644,-216,645,646,647]],"id":"13077","properties":{"name":"Coweta"}},{"type":"Polygon","arcs":[[648,649,650,651]],"id":"13059","properties":{"name":"Clarke"}},{"type":"Polygon","arcs":[[652,653,654,655,656]],"id":"18081","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[657,658,659,660,661,662]],"id":"20115","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[663,664,665,666,667]],"id":"27059","properties":{"name":"Isanti"}},{"type":"Polygon","arcs":[[668,669,670,671,672,673]],"id":"31003","properties":{"name":"Antelope"}},{"type":"Polygon","arcs":[[674,675,676,677,678]],"id":"39103","properties":{"name":"Medina"}},{"type":"Polygon","arcs":[[679,680,681,682,683,684]],"id":"47153","properties":{"name":"Sequatchie"}},{"type":"Polygon","arcs":[[685,686,687,688]],"id":"48375","properties":{"name":"Potter"}},{"type":"Polygon","arcs":[[689,690,691,692,693]],"id":"48145","properties":{"name":"Falls"}},{"type":"Polygon","arcs":[[-399,694,695,696,697,698]],"id":"38039","properties":{"name":"Griggs"}},{"type":"Polygon","arcs":[[-125,699,700,701]],"id":"46043","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[702,703,704,705,706,707]],"id":"48193","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[708,709,710,711,712]],"id":"19185","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[713,714,715,716,717,718,719]],"id":"38087","properties":{"name":"Slope"}},{"type":"Polygon","arcs":[[720,-412,721,722,-255,723]],"id":"48399","properties":{"name":"Runnels"}},{"type":"Polygon","arcs":[[6,-6,4,-4,724,725,726,727,728,-8]],"id":"04005","properties":{"name":"Coconino"}},{"type":"Polygon","arcs":[[729,730,731,732,733]],"id":"16009","properties":{"name":"Benewah"}},{"type":"Polygon","arcs":[[734,735,736,737,738,739,740]],"id":"20007","properties":{"name":"Barber"}},{"type":"Polygon","arcs":[[741,742,743,744,-102]],"id":"27133","properties":{"name":"Rock"}},{"type":"Polygon","arcs":[[745,-324,746,747]],"id":"23029","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[748,749,750,751,752]],"id":"30051","properties":{"name":"Liberty"}},{"type":"Polygon","arcs":[[753,754,755,756]],"id":"46091","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[757,758,-364,759,760]],"id":"36117","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[761,762]],"id":"02060","properties":{"name":"Bristol Bay"}},{"type":"Polygon","arcs":[[763,764,765,766,767]],"id":"12027","properties":{"name":"DeSoto"}},{"type":"Polygon","arcs":[[768,769,770,771,772,773]],"id":"13015","properties":{"name":"Bartow"}},{"type":"Polygon","arcs":[[774,775,776,777,778]],"id":"19127","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[779,780,781,782,783,784]],"id":"20047","properties":{"name":"Edwards"}},{"type":"Polygon","arcs":[[785,786,787,788,789]],"id":"26129","properties":{"name":"Ogemaw"}},{"type":"Polygon","arcs":[[790,-237,791,792,793,794]],"id":"31093","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[795,796,797,798,799,800]],"id":"39063","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[801,802,803,804,805,806,807]],"id":"21209","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[808,809,810,811,-682]],"id":"47007","properties":{"name":"Bledsoe"}},{"type":"Polygon","arcs":[[812,813,814,815,816,817]],"id":"37157","properties":{"name":"Rockingham"}},{"type":"Polygon","arcs":[[818,819,820,821,822]],"id":"48189","properties":{"name":"Hale"}},{"type":"Polygon","arcs":[[823]],"id":"51820","properties":{"name":"Waynesboro"}},{"type":"Polygon","arcs":[[824,825,826,827,828]],"id":"56025","properties":{"name":"Natrona"}},{"type":"Polygon","arcs":[[-114,829,830,831,832]],"id":"48407","properties":{"name":"San Jacinto"}},{"type":"Polygon","arcs":[[833,834,835,-427,836]],"id":"55135","properties":{"name":"Waupaca"}},{"type":"Polygon","arcs":[[837,838,839,840,841]],"id":"39067","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[842,843,844,845,846,847,848]],"id":"13087","properties":{"name":"Decatur"}},{"type":"Polygon","arcs":[[849,850,851,852,853]],"id":"22001","properties":{"name":"Acadia"}},{"type":"Polygon","arcs":[[854,855,856,857,858]],"id":"27019","properties":{"name":"Carver"}},{"type":"Polygon","arcs":[[859,860,861,862,-578,863]],"id":"17065","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[864,865,-351,866,867,868]],"id":"27067","properties":{"name":"Kandiyohi"}},{"type":"Polygon","arcs":[[869,870,871,872,873]],"id":"55071","properties":{"name":"Manitowoc"}},{"type":"Polygon","arcs":[[874,875,876,877,878,879]],"id":"01013","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[880,881,882,883,884,885,886]],"id":"13169","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[887,888,889,890]],"id":"19069","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[891,892,893,894,895,896]],"id":"18113","properties":{"name":"Noble"}},{"type":"Polygon","arcs":[[897,898,899,900,901,902]],"id":"20193","properties":{"name":"Thomas"}},{"type":"Polygon","arcs":[[903,904,905,-444,906]],"id":"26035","properties":{"name":"Clare"}},{"type":"Polygon","arcs":[[907,908,909,910]],"id":"26039","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[911,912,913,914,915,916]],"id":"29225","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[917,918,919,920,921]],"id":"31005","properties":{"name":"Arthur"}},{"type":"Polygon","arcs":[[922,923,924,925,926]],"id":"31143","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[927,928,929,930,-606]],"id":"46029","properties":{"name":"Codington"}},{"type":"Polygon","arcs":[[931,932,933,-128,934,935]],"id":"48131","properties":{"name":"Duval"}},{"type":"Polygon","arcs":[[936,-422,937,-686,938,939]],"id":"48341","properties":{"name":"Moore"}},{"type":"Polygon","arcs":[[940,941,942,943,944,945]],"id":"48317","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[946,947,948,949,950,951,952]],"id":"39083","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[953,954,955,956,957]],"id":"72073","properties":{"name":"Jayuya"}},{"type":"Polygon","arcs":[[958,959,960,961,962,-691,963]],"id":"48293","properties":{"name":"Limestone"}},{"type":"Polygon","arcs":[[964,965,966,967,968]],"id":"19055","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[969,970,971,972]],"id":"31159","properties":{"name":"Seward"}},{"type":"Polygon","arcs":[[973,974,975,976]],"id":"48507","properties":{"name":"Zavala"}},{"type":"Polygon","arcs":[[977,978,979,980,981,982,983,984,985]],"id":"06091","properties":{"name":"Sierra"}},{"type":"Polygon","arcs":[[986,987,988,989,990]],"id":"17201","properties":{"name":"Winnebago"}},{"type":"Polygon","arcs":[[991,992,993,994,995,996]],"id":"23031","properties":{"name":"York"}},{"type":"Polygon","arcs":[[997,998,999,1000,1001]],"id":"24011","properties":{"name":"Caroline"}},{"type":"Polygon","arcs":[[1002,1003,1004,1005,1006]],"id":"26119","properties":{"name":"Montmorency"}},{"type":"Polygon","arcs":[[-38,1007,1008,1009,1010,1011,1012]],"id":"38077","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[1013,1014,1015,1016,1017,1018]],"id":"42007","properties":{"name":"Beaver"}},{"type":"Polygon","arcs":[[1019,1020,1021,-246,-507]],"id":"48079","properties":{"name":"Cochran"}},{"type":"Polygon","arcs":[[1022,-789,1023,1024,1025,-906]],"id":"26051","properties":{"name":"Gladwin"}},{"type":"Polygon","arcs":[[1026,1027,1028,1029,1030,1031,1032]],"id":"08121","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[1033,-969,1034,1035,-224]],"id":"19019","properties":{"name":"Buchanan"}},{"type":"Polygon","arcs":[[1036,1037,1038,1039,1040,1041,1042]],"id":"19187","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[1043,-785,1044,1045,1046,1047]],"id":"20057","properties":{"name":"Ford"}},{"type":"Polygon","arcs":[[-1006,1048,-786,-909]],"id":"26135","properties":{"name":"Oscoda"}},{"type":"Polygon","arcs":[[1049,1050,1051,1052]],"id":"28099","properties":{"name":"Neshoba"}},{"type":"Polygon","arcs":[[1053,1054,1055,1056,1057,1058]],"id":"31137","properties":{"name":"Phelps"}},{"type":"Polygon","arcs":[[1059,1060,1061,1062,1063,1064]],"id":"31039","properties":{"name":"Cuming"}},{"type":"Polygon","arcs":[[1065,1066,1067,1068,1069,1070,1071]],"id":"45045","properties":{"name":"Greenville"}},{"type":"Polygon","arcs":[[1072,1073,1074,1075,1076]],"id":"48151","properties":{"name":"Fisher"}},{"type":"Polygon","arcs":[[1077,1078,1079,1080,1081]],"id":"37069","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[1082,1083,1084,1085,1086,1087]],"id":"39039","properties":{"name":"Defiance"}},{"type":"Polygon","arcs":[[1088,1089,1090,1091,1092,1093]],"id":"47055","properties":{"name":"Giles"}},{"type":"Polygon","arcs":[[1094,1095,1096,1097,1098]],"id":"48023","properties":{"name":"Baylor"}},{"type":"Polygon","arcs":[[1099,1100,1101,1102,1103]],"id":"48365","properties":{"name":"Panola"}},{"type":"Polygon","arcs":[[1104,1105,1106,1107]],"id":"53001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-1040,1108,1109,1110,1111,1112]],"id":"19015","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[1113,1114,1115,-265,1116,1117,1118]],"id":"48237","properties":{"name":"Jack"}},{"type":"Polygon","arcs":[[1119,1120,1121,1122,1123]],"id":"72009","properties":{"name":"Aibonito"}},{"type":"Polygon","arcs":[[1124,1125,-370,1126,-660]],"id":"20017","properties":{"name":"Chase"}},{"type":"Polygon","arcs":[[-706,1127,1128,1129,1130]],"id":"48099","properties":{"name":"Coryell"}},{"type":"Polygon","arcs":[[1131,1132,1133,1134,1135]],"id":"26037","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[1136,1137,1138,-373]],"id":"20207","properties":{"name":"Woodson"}},{"type":"Polygon","arcs":[[1139,1140,1141,1142,1143,1144,1145]],"id":"17037","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[1146,1147,1148,1149,1150]],"id":"19159","properties":{"name":"Ringgold"}},{"type":"Polygon","arcs":[[1151,1152,1153,1154,1155]],"id":"19165","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[1156,1157,1158,1159,1160,1161,-212,1162]],"id":"06019","properties":{"name":"Fresno"}},{"type":"Polygon","arcs":[[1163,1164,1165,-1147,1166]],"id":"19175","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[1167,1168,1169,1170,1171,1172]],"id":"17123","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[1173,1174,1175,1176,1177,1178]],"id":"17147","properties":{"name":"Piatt"}},{"type":"Polygon","arcs":[[1179,1180,-1167,1181,1182]],"id":"19003","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[1183,1184,1185,1186,1187,1188,1189]],"id":"17159","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[1190,1191,1192,1193,1194]],"id":"47023","properties":{"name":"Chester"}},{"type":"Polygon","arcs":[[1195,1196,1197,1198,1199]],"id":"26023","properties":{"name":"Branch"}},{"type":"Polygon","arcs":[[1200,1201,1202,1203,1204,1205]],"id":"37151","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[1206,1207,1208,1209,1210,1211]],"id":"20199","properties":{"name":"Wallace"}},{"type":"Polygon","arcs":[[1212,1213,1214,1215,1216,1217]],"id":"18177","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[1218]],"id":"51595","properties":{"name":"Emporia"}},{"type":"Polygon","arcs":[[1219,1220,1221,1222,1223]],"id":"48295","properties":{"name":"Lipscomb"}},{"type":"Polygon","arcs":[[1224,1225,1226,1227]],"id":"47169","properties":{"name":"Trousdale"}},{"type":"Polygon","arcs":[[1228,1229,1230,1231,1232,1233,1234,1235,1236,-726,1237]],"id":"49037","properties":{"name":"San Juan"}},{"type":"Polygon","arcs":[[1238,1239,1240,-287,1241,1242]],"id":"19123","properties":{"name":"Mahaska"}},{"type":"Polygon","arcs":[[1243,1244,1245,1246]],"id":"16021","properties":{"name":"Boundary"}},{"type":"Polygon","arcs":[[1247,1248,1249,1250,1251,1252,1253]],"id":"17107","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[1254,1255,1256,1257,1258]],"id":"20059","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[1259,1260,1261,1262,1263,1264,1265,1266]],"id":"22013","properties":{"name":"Bienville"}},{"type":"Polygon","arcs":[[1267,1268,1269,1270,1271]],"id":"06005","properties":{"name":"Amador"}},{"type":"Polygon","arcs":[[1272,1273,-1268,1274,1275]],"id":"06017","properties":{"name":"El Dorado"}},{"type":"Polygon","arcs":[[1276,1277,1278,1279,1280]],"id":"05065","properties":{"name":"Izard"}},{"type":"Polygon","arcs":[[1281]],"id":"51530","properties":{"name":"Buena Vista"}},{"type":"Polygon","arcs":[[1282,1283]],"id":"51590","properties":{"name":"Danville"}},{"type":"Polygon","arcs":[[1284,1285]],"id":"51640","properties":{"name":"Galax"}},{"type":"Polygon","arcs":[[1286]],"id":"51660","properties":{"name":"Harrisonburg"}},{"type":"Polygon","arcs":[[1287]],"id":"51690","properties":{"name":"Martinsville"}},{"type":"Polygon","arcs":[[1288,1289,1290,1291,1292,1293]],"id":"18049","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[1294,1295,-1164,-1181,1296]],"id":"19001","properties":{"name":"Adair"}},{"type":"Polygon","arcs":[[1297,-215,213,-213,-1162,1298,1299,1300]],"id":"06053","properties":{"name":"Monterey"}},{"type":"Polygon","arcs":[[1301,1302,1303,1304,1305]],"id":"29219","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[1306,1307,1308,1309,1310]],"id":"37197","properties":{"name":"Yadkin"}},{"type":"Polygon","arcs":[[-446,1311,1312,1313,-1132,1314]],"id":"26057","properties":{"name":"Gratiot"}},{"type":"Polygon","arcs":[[1315,1316,1317,1318,1319,1320]],"id":"21129","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[1321,1322,1323,1324,1325,1326]],"id":"20133","properties":{"name":"Neosho"}},{"type":"Polygon","arcs":[[1327,-1136,1328,1329,1330]],"id":"26067","properties":{"name":"Ionia"}},{"type":"Polygon","arcs":[[1331,1332,1333,1334,1335]],"id":"26077","properties":{"name":"Kalamazoo"}},{"type":"Polygon","arcs":[[1336,1337,1338,1339,1340,1341]],"id":"21149","properties":{"name":"McLean"}},{"type":"Polygon","arcs":[[1342,1343,1344,1345,1346,1347]],"id":"27033","properties":{"name":"Cottonwood"}},{"type":"Polygon","arcs":[[-585,1348,1349,-382,1350]],"id":"26085","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-586,-1351,1351,1352]],"id":"26105","properties":{"name":"Mason"}},{"type":"Polygon","arcs":[[1353,-448,1354,-383]],"id":"26107","properties":{"name":"Mecosta"}},{"type":"Polygon","arcs":[[1355,-386,1356,1357,1358]],"id":"26121","properties":{"name":"Muskegon"}},{"type":"Polygon","arcs":[[1359,1360,1361,1362,1363,1364]],"id":"27047","properties":{"name":"Freeborn"}},{"type":"Polygon","arcs":[[1365,1366,1367,1368,1369,1370,1371]],"id":"17051","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[1372,1373,1374,1375,-1368]],"id":"17049","properties":{"name":"Effingham"}},{"type":"Polygon","arcs":[[1376,1377,1378,1379]],"id":"27009","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[1380,1381,1382,1383,-415]],"id":"48129","properties":{"name":"Donley"}},{"type":"Polygon","arcs":[[1384,1385,1386,1387,1388]],"id":"27041","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[1389,1390,1391,1392,-404]],"id":"40073","properties":{"name":"Kingfisher"}},{"type":"Polygon","arcs":[[1393,1394,1395,1396,1397,1398]],"id":"47053","properties":{"name":"Gibson"}},{"type":"Polygon","arcs":[[1399,1400,1401,1402,1403,1404,1405]],"id":"47005","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[1406,1407,1408,1409]],"id":"45009","properties":{"name":"Bamberg"}},{"type":"Polygon","arcs":[[1410,1411,1412,1413,1414,-557,1415,1416]],"id":"48013","properties":{"name":"Atascosa"}},{"type":"Polygon","arcs":[[1417,1418,1419,-111,1420,1421,1422,-701]],"id":"46067","properties":{"name":"Hutchinson"}},{"type":"Polygon","arcs":[[1423,1424,1425,1426,-41,1427]],"id":"46019","properties":{"name":"Butte"}},{"type":"MultiPolygon","arcs":[[[1428,1429,1430,1431]],[[1432,1433]],[[1434]],[[1435,1436]],[[1437]],[[1438]],[[1439]],[[1440]],[[1441,1442]],[[1443,1444,1445,1446]]],"id":"02105","properties":{"name":"Hoonah-Angoon"}},{"type":"Polygon","arcs":[[1447,1448,1449,1450,-542,-273]],"id":"46059","properties":{"name":"Hand"}},{"type":"Polygon","arcs":[[-608,1451,1452,-266,-601,1453,1454]],"id":"46077","properties":{"name":"Kingsbury"}},{"type":"Polygon","arcs":[[1455,1456,1457,1458,1459]],"id":"47101","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[1460,1461,1462,1463,1464]],"id":"55069","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[1465,-1397,1466,1467,-1191,1468,1469]],"id":"47113","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[1470]],"id":"51540","properties":{"name":"Charlottesville"}},{"type":"Polygon","arcs":[[1471,1472,1473,1474,1475,1476]],"id":"30037","properties":{"name":"Golden Valley"}},{"type":"Polygon","arcs":[[1477,1478,1479,1480,1481,1482,1483,-827]],"id":"56009","properties":{"name":"Converse"}},{"type":"Polygon","arcs":[[1484,1485,1486,1487,1488]],"id":"47179","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[1489,1490,-1465,1491,1492,1493]],"id":"55119","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[1494,1495,1496,1497,1498,1499,1500,1501,1502,-1502,1501,1503,1504]],"id":"56029","properties":{"name":"Park"}},{"type":"Polygon","arcs":[[1505,1506,-1348,1507,-743,1508]],"id":"27101","properties":{"name":"Murray"}},{"type":"Polygon","arcs":[[1509,1510,1511,1512,1513,1514]],"id":"55133","properties":{"name":"Waukesha"}},{"type":"Polygon","arcs":[[1515,1516,-1509,-742,1517]],"id":"27117","properties":{"name":"Pipestone"}},{"type":"Polygon","arcs":[[1518,1519,1520,1521,1522]],"id":"51099","properties":{"name":"King George"}},{"type":"Polygon","arcs":[[1523,1524,1525,1526,1527,1528,1529]],"id":"30001","properties":{"name":"Beaverhead"}},{"type":"Polygon","arcs":[[1530,1531,-1472,1532,1533]],"id":"30107","properties":{"name":"Wheatland"}},{"type":"Polygon","arcs":[[1534,-916,1535,1536,1537,1538]],"id":"29043","properties":{"name":"Christian"}},{"type":"Polygon","arcs":[[1539,1540,1541,1542,1543,1544]],"id":"29053","properties":{"name":"Cooper"}},{"type":"Polygon","arcs":[[1545,1546,1547,1548,1549,1550]],"id":"20029","properties":{"name":"Cloud"}},{"type":"Polygon","arcs":[[1551,1552,1553,1554,1555]],"id":"51159","properties":{"name":"Richmond"}},{"type":"Polygon","arcs":[[1556,-1398,-1466,1557,1558]],"id":"47033","properties":{"name":"Crockett"}},{"type":"Polygon","arcs":[[1559,1560,1561,1562,1563]],"id":"18063","properties":{"name":"Hendricks"}},{"type":"Polygon","arcs":[[1564,1565,1566,1567,1568,1569,1570,-378]],"id":"20135","properties":{"name":"Ness"}},{"type":"Polygon","arcs":[[1571,1572,1573,1574,-1143]],"id":"17093","properties":{"name":"Kendall"}},{"type":"Polygon","arcs":[[1575,1576,1577,1578,1579]],"id":"18149","properties":{"name":"Starke"}},{"type":"Polygon","arcs":[[1580,1581,1582,1583,1584,-654]],"id":"18145","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[1585,1586,1587,1588,-913,1589]],"id":"29105","properties":{"name":"Laclede"}},{"type":"Polygon","arcs":[[1590,1591,1592,1593,1594,1595]],"id":"29117","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[1596,1597,-1007,-908,1598]],"id":"26137","properties":{"name":"Otsego"}},{"type":"Polygon","arcs":[[1599,1600,1601,1602,1603]],"id":"31087","properties":{"name":"Hitchcock"}},{"type":"Polygon","arcs":[[-910,-790,-1023,-905,1604]],"id":"26143","properties":{"name":"Roscommon"}},{"type":"Polygon","arcs":[[1605,1606,1607,1608,1609]],"id":"29011","properties":{"name":"Barton"}},{"type":"Polygon","arcs":[[-416,-1384,1610,1611,1612,1613]],"id":"48045","properties":{"name":"Briscoe"}},{"type":"Polygon","arcs":[[1614,1615,1616,1617,1618,1619]],"id":"26161","properties":{"name":"Washtenaw"}},{"type":"Polygon","arcs":[[1620,-1330,1621,1622,-1333,1623]],"id":"26015","properties":{"name":"Barry"}},{"type":"Polygon","arcs":[[1624,1625,1626,1627,1628]],"id":"35029","properties":{"name":"Luna"}},{"type":"Polygon","arcs":[[1629,1630,1631,1632,1633,1634,1635]],"id":"51169","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[1636,1637,1638,1639,1640]],"id":"33007","properties":{"name":"Coos"}},{"type":"Polygon","arcs":[[1641,1642,1643,1644,1645,1646]],"id":"38095","properties":{"name":"Towner"}},{"type":"Polygon","arcs":[[1647,1648,1649,1650,-502,1651]],"id":"29145","properties":{"name":"Newton"}},{"type":"MultiPolygon","arcs":[[[1652,1653]],[[-1431,1654,-55,1655]]],"id":"02195","properties":{"name":"Petersburg"}},{"type":"Polygon","arcs":[[1656,-1065,1657,1658,1659]],"id":"31167","properties":{"name":"Stanton"}},{"type":"Polygon","arcs":[[1660,1661,1662,-1060,-1657,1663]],"id":"31179","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[1664,1665,1666,1667,-205,203,-203]],"id":"26109","properties":{"name":"Menominee"}},{"type":"Polygon","arcs":[[1668,1669,1670,1671,1672]],"id":"48175","properties":{"name":"Goliad"}},{"type":"Polygon","arcs":[[1673,-39,-1013,1674,-343,1675]],"id":"38073","properties":{"name":"Ransom"}},{"type":"Polygon","arcs":[[1676,1677,-1381,1678]],"id":"48179","properties":{"name":"Gray"}},{"type":"Polygon","arcs":[[1679,1680,1681,1682,1683,1684]],"id":"42121","properties":{"name":"Venango"}},{"type":"Polygon","arcs":[[-1383,1685,-514,-278,1686,-1611]],"id":"48191","properties":{"name":"Hall"}},{"type":"Polygon","arcs":[[1687,-1538,1688,1689,1690]],"id":"29209","properties":{"name":"Stone"}},{"type":"Polygon","arcs":[[1691,1692,1693,1694,1695,1696]],"id":"39057","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[1697,1698,-1596,1699,1700,1701]],"id":"29061","properties":{"name":"Daviess"}},{"type":"Polygon","arcs":[[1702,1703,1704,1705,1706,1707]],"id":"29199","properties":{"name":"Scotland"}},{"type":"Polygon","arcs":[[1708,1709,1710,1711,1712,1713,1714]],"id":"48049","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[-509,1715,1716,-941,1717,1718]],"id":"48165","properties":{"name":"Gaines"}},{"type":"Polygon","arcs":[[-1130,1719,-694,1720,1721,1722,1723]],"id":"48027","properties":{"name":"Bell"}},{"type":"Polygon","arcs":[[1724,-1247,1725,1726,1727]],"id":"53051","properties":{"name":"Pend Oreille"}},{"type":"Polygon","arcs":[[1728,1729,1730,1731,1732,1733]],"id":"13277","properties":{"name":"Tift"}},{"type":"Polygon","arcs":[[1734,1735,1736,1737,1738]],"id":"48435","properties":{"name":"Sutton"}},{"type":"Polygon","arcs":[[1739,1740,1741,1742,1743]],"id":"51023","properties":{"name":"Botetourt"}},{"type":"Polygon","arcs":[[1744,1745,1746,1747,1748]],"id":"48405","properties":{"name":"San Augustine"}},{"type":"Polygon","arcs":[[-139,1749,1750,1751,1752,1753,1754]],"id":"72129","properties":{"name":"San Lorenzo"}},{"type":"Polygon","arcs":[[1755,1756,1757,1758,-149,1759]],"id":"72143","properties":{"name":"Vega Alta"}},{"type":"Polygon","arcs":[[1760,1761,1762,1763]],"id":"27017","properties":{"name":"Carlton"}},{"type":"Polygon","arcs":[[1764,1765,1766,1767,1768]],"id":"12029","properties":{"name":"Dixie"}},{"type":"Polygon","arcs":[[1769,1770,1771,1772,1773,1774]],"id":"13211","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[1775,1776,1777,1778]],"id":"02188","properties":{"name":"Northwest Arctic"}},{"type":"Polygon","arcs":[[1779,1780,1781,-715,1782]],"id":"38007","properties":{"name":"Billings"}},{"type":"Polygon","arcs":[[1783,1784,1785,-1764,1786,1787,1788,1789]],"id":"27001","properties":{"name":"Aitkin"}},{"type":"Polygon","arcs":[[1790,1791,1792,1793,1794,1795,1796]],"id":"08045","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[-1257,1797,1798,1799]],"id":"20003","properties":{"name":"Anderson"}},{"type":"Polygon","arcs":[[-282,1800,1801,1802,-553]],"id":"48269","properties":{"name":"King"}},{"type":"Polygon","arcs":[[1803,-407,1804,1805,-535,1806]],"id":"40039","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[1807,-98,1808,1809,1810,1811]],"id":"39101","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[1812,1813,1814,1815,1816,1817]],"id":"17095","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[1818,1819,1820,1821]],"id":"13013","properties":{"name":"Barrow"}},{"type":"Polygon","arcs":[[-1144,-1575,1822,1823,1824,-1170,1825,1826,1827]],"id":"17099","properties":{"name":"LaSalle"}},{"type":"Polygon","arcs":[[1828,1829,1830,1831,1832]],"id":"01031","properties":{"name":"Coffee"}},{"type":"Polygon","arcs":[[1833,1834,1835,1836]],"id":"12085","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[1837,1838,1839,-1109,-1039]],"id":"19079","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-890,1840,-775,1841,-1839]],"id":"19083","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[1842,1843,1844,1845,1846,1847]],"id":"16037","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[1848,1849,1850,1851,1852,1853]],"id":"13037","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[1854,1855,1856,1857]],"id":"19093","properties":{"name":"Ida"}},{"type":"Polygon","arcs":[[1858,1859,-162,-618,1860]],"id":"08105","properties":{"name":"Rio Grande"}},{"type":"Polygon","arcs":[[1861,-1243,1862,1863,-524,1864]],"id":"19125","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[1865,-1028,1866,1867]],"id":"08087","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[1868,1869,1870,-1240,1871]],"id":"19157","properties":{"name":"Poweshiek"}},{"type":"Polygon","arcs":[[1872,1873,1874,-1248,1875,1876]],"id":"17179","properties":{"name":"Tazewell"}},{"type":"Polygon","arcs":[[1877,1878,1879,1880]],"id":"08039","properties":{"name":"Elbert"}},{"type":"Polygon","arcs":[[-1111,1881,1882,-1865,-523,1883]],"id":"19153","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[1884,1885,1886,1887,1888]],"id":"39149","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[1889,-527,1890,-1165,-1296]],"id":"19121","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[1891,1892,1893,1894,-677]],"id":"39153","properties":{"name":"Summit"}},{"type":"Polygon","arcs":[[1895,1896,-765,1897]],"id":"12049","properties":{"name":"Hardee"}},{"type":"Polygon","arcs":[[1898,1899,1900,1901,1902,1903,1904]],"id":"39161","properties":{"name":"Van Wert"}},{"type":"Polygon","arcs":[[1905,-1696,1906,1907,1908,1909]],"id":"39165","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[1910,1911,1912,1913,-974,1914]],"id":"48463","properties":{"name":"Uvalde"}},{"type":"Polygon","arcs":[[1915,1916,1917,1918,1919,-650,1920]],"id":"13195","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[1921,1922,-842,1923,1924,1925]],"id":"39059","properties":{"name":"Guernsey"}},{"type":"Polygon","arcs":[[1926,1927,1928,1929,-1412]],"id":"48493","properties":{"name":"Wilson"}},{"type":"Polygon","arcs":[[-1810,1930,-953,1931,1932,1933]],"id":"39041","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[1934,1935,1936,1937,1938]],"id":"39055","properties":{"name":"Geauga"}},{"type":"Polygon","arcs":[[-538,1939,1940,1941]],"id":"40055","properties":{"name":"Greer"}},{"type":"Polygon","arcs":[[1942,1943,1944,1945,1946,1947,1948]],"id":"27131","properties":{"name":"Rice"}},{"type":"Polygon","arcs":[[1949,1950,1951,1952,1953,1954,1955]],"id":"05025","properties":{"name":"Cleveland"}},{"type":"Polygon","arcs":[[1956,1957,1958,1959,1960,-196]],"id":"13093","properties":{"name":"Dooly"}},{"type":"Polygon","arcs":[[-423,-257,1961,-1735,1962]],"id":"48413","properties":{"name":"Schleicher"}},{"type":"Polygon","arcs":[[1963,1964,1965,1966,-1345]],"id":"27165","properties":{"name":"Watonwan"}},{"type":"Polygon","arcs":[[1967,1968,1969,-391,1970,1971]],"id":"31001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[1972,1973,1974,1975]],"id":"37003","properties":{"name":"Alexander"}},{"type":"Polygon","arcs":[[1976,-312,1977,1978,-1607]],"id":"29039","properties":{"name":"Cedar"}},{"type":"Polygon","arcs":[[1979,-417,-1614,1980,-820,1981]],"id":"48437","properties":{"name":"Swisher"}},{"type":"Polygon","arcs":[[1982,1983,1984,1985,1986,1987,1988]],"id":"30049","properties":{"name":"Lewis and Clark"}},{"type":"Polygon","arcs":[[1989,1990,1991,-1545,1992,1993,1994]],"id":"29159","properties":{"name":"Pettis"}},{"type":"Polygon","arcs":[[-1612,-1687,-283,-552,1995]],"id":"48345","properties":{"name":"Motley"}},{"type":"Polygon","arcs":[[1996,1997,1998,-1524,1999,2000]],"id":"30081","properties":{"name":"Ravalli"}},{"type":"Polygon","arcs":[[2001,2002,2003,-11,2004,2005,2006,2007]],"id":"06071","properties":{"name":"San Bernardino"}},{"type":"Polygon","arcs":[[2008,2009,2010,2011,2012,2013]],"id":"13189","properties":{"name":"McDuffie"}},{"type":"MultiPolygon","arcs":[[[2014]],[[2015,2016,2017,2018,-1446,2019],[-1439]]],"id":"02100","properties":{"name":"Haines"}},{"type":"Polygon","arcs":[[-1492,-1464,2020,2021,2022,2023,2024]],"id":"55073","properties":{"name":"Marathon"}},{"type":"MultiPolygon","arcs":[[[2025]],[[2026]],[[2027]],[[2028]],[[2029]],[[2030]],[[2031]],[[2032]],[[2033]],[[2034]],[[2035]],[[2036]],[[2037]],[[2038]],[[2039]],[[2040]],[[2041]],[[2042,2043]],[[2044]],[[2045]],[[2046]],[[2047]],[[2048]],[[2049]]],"id":"02013","properties":{"name":"Aleutians East"}},{"type":"MultiPolygon","arcs":[[[2050]],[[2051]],[[2052]],[[2053]],[[2054]],[[2055]],[[2056]],[[2057]],[[2058]],[[2059]],[[2060,2061,2062]],[[2063]]],"id":"02150","properties":{"name":"Kodiak Island"}},{"type":"MultiPolygon","arcs":[[[2064]],[[2065]],[[2066]],[[2067]],[[2068]],[[2069,-762,2070,2071,2072,2073,-2063,2074,-2043]]],"id":"02164","properties":{"name":"Lake and Peninsula"}},{"type":"MultiPolygon","arcs":[[[2075]],[[2076]],[[2077]],[[2078]],[[2079]],[[2080]],[[2081]],[[2082]],[[2083,2084,2085,2086,2087,2088,2089]]],"id":"02261","properties":{"name":"Valdez-Cordova"}},{"type":"Polygon","arcs":[[2090,2091,-1418,-700,-124]],"id":"46035","properties":{"name":"Davison"}},{"type":"Polygon","arcs":[[2092,2093,2094,2095,2096,2097,2098,2099]],"id":"41023","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[2100,2101,2102,2103,2104,2105]],"id":"39129","properties":{"name":"Pickaway"}},{"type":"Polygon","arcs":[[-1938,2106,2107,2108,-1893]],"id":"39133","properties":{"name":"Portage"}},{"type":"Polygon","arcs":[[2109,2110,2111,2112,-847]],"id":"13131","properties":{"name":"Grady"}},{"type":"Polygon","arcs":[[2113,2114,2115,2116,2117,2118]],"id":"72093","properties":{"name":"Maricao"}},{"type":"Polygon","arcs":[[2119,2120,2121,2122,2123,2124]],"id":"54075","properties":{"name":"Pocahontas"}},{"type":"Polygon","arcs":[[2125,2126,2127]],"id":"72117","properties":{"name":"Rincón"}},{"type":"Polygon","arcs":[[2128,2129,2130,2131,-1385,2132,2133]],"id":"27111","properties":{"name":"Otter Tail"}},{"type":"Polygon","arcs":[[2134,2135,2136,2137,2138,2139,2140]],"id":"13111","properties":{"name":"Fannin"}},{"type":"Polygon","arcs":[[2141,2142,2143,-28,-233,-26]],"id":"27113","properties":{"name":"Pennington"}},{"type":"Polygon","arcs":[[2144,2145,2146,2147]],"id":"17021","properties":{"name":"Christian"}},{"type":"Polygon","arcs":[[2148,2149,2150,2151,2152,-1291]],"id":"18169","properties":{"name":"Wabash"}},{"type":"Polygon","arcs":[[2153,2154,2155,2156,2157,-1232]],"id":"08085","properties":{"name":"Montrose"}},{"type":"Polygon","arcs":[[2158,2159,2160,-14,2161]],"id":"28113","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-495,2162,2163,2164,2165,2166]],"id":"38049","properties":{"name":"McHenry"}},{"type":"Polygon","arcs":[[2167,2168,2169,2170,-1704,2171]],"id":"19177","properties":{"name":"Van Buren"}},{"type":"Polygon","arcs":[[2172,2173,2174]],"id":"17171","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[2175,-886,2176,2177,2178]],"id":"13021","properties":{"name":"Bibb"}},{"type":"Polygon","arcs":[[2179,-140,-1755,2180,2181,2182,-1122]],"id":"72035","properties":{"name":"Cayey"}},{"type":"Polygon","arcs":[[-1026,2183,2184,-1312,-445]],"id":"26111","properties":{"name":"Midland"}},{"type":"Polygon","arcs":[[2185,2186,2187,2188,-1567,2189]],"id":"20051","properties":{"name":"Ellis"}},{"type":"Polygon","arcs":[[2190,2191,2192,-2163,-494]],"id":"38009","properties":{"name":"Bottineau"}},{"type":"MultiPolygon","arcs":[[[2193]],[[2194]]],"id":"60020","properties":{"name":"Manu'a"}},{"type":"Polygon","arcs":[[2195,2196]],"id":"60050","properties":{"name":"Western"}},{"type":"Polygon","arcs":[[-894,2197,-1087,2198,-1905,2199,2200,2201,2202]],"id":"18003","properties":{"name":"Allen"}},{"type":"Polygon","arcs":[[2203,2204,2205,2206,2207,2208]],"id":"20085","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[2209,2210,2211,2212,2213,-2169]],"id":"19087","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[2214,2215,2216,-1560,2217]],"id":"18011","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[573,-573,571,-571,569,-569,2218,2219,2220,2221,2222,-575]],"id":"06103","properties":{"name":"Tehama"}},{"type":"Polygon","arcs":[[-1292,-2153,2223,2224,2225]],"id":"18103","properties":{"name":"Miami"}},{"type":"Polygon","arcs":[[2226,2227,2228,2229,2230]],"id":"38047","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[2231,2232,2233,2234,2235,2236]],"id":"40021","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[2237,-275,-545,2238,2239,-626,2240,2241,2242,2243]],"id":"46085","properties":{"name":"Lyman"}},{"type":"Polygon","arcs":[[-30,2244,2245,2246]],"id":"27087","properties":{"name":"Mahnomen"}},{"type":"Polygon","arcs":[[-1493,-2025,2247,2248,2249,2250]],"id":"55019","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[2251,2252,-380,2253,2254,2255]],"id":"20171","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[2256,2257,2258,2259,2260]],"id":"27135","properties":{"name":"Roseau"}},{"type":"Polygon","arcs":[[2261,2262,2263,2264,2265,2266,2267]],"id":"05115","properties":{"name":"Pope"}},{"type":"Polygon","arcs":[[2268,2269,2270,2271,2272]],"id":"26095","properties":{"name":"Luce"}},{"type":"Polygon","arcs":[[-1994,2273,2274,2275,-309,2276]],"id":"29015","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[2277,2278,2279,2280,2281,-2264]],"id":"05141","properties":{"name":"Van Buren"}},{"type":"Polygon","arcs":[[2282,2283,2284,2285,2286,2287,2288,2289]],"id":"51199","properties":{"name":"York"}},{"type":"Polygon","arcs":[[-915,2290,2291,2292,2293,2294,-1536]],"id":"29067","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[2295,2296,2297,2298,-1989,2299,2300,2301,2302,2303]],"id":"30029","properties":{"name":"Flathead"}},{"type":"Polygon","arcs":[[2304,2305,2306,2307,2308]],"id":"48305","properties":{"name":"Lynn"}},{"type":"Polygon","arcs":[[2309,2310,2311,2312,2313,2314]],"id":"29065","properties":{"name":"Dent"}},{"type":"Polygon","arcs":[[2315,2316,2317,2318,-1962]],"id":"48327","properties":{"name":"Menard"}},{"type":"Polygon","arcs":[[-1076,-413,-721,2319,-467]],"id":"48353","properties":{"name":"Nolan"}},{"type":"Polygon","arcs":[[2320,-2313,2321,2322,2323,2324]],"id":"29203","properties":{"name":"Shannon"}},{"type":"Polygon","arcs":[[2325,2326,-469,2327,-253,2328]],"id":"48431","properties":{"name":"Sterling"}},{"type":"Polygon","arcs":[[2329,2330,2331,2332,2333]],"id":"08089","properties":{"name":"Otero"}},{"type":"Polygon","arcs":[[2334,2335,2336,2337,-2306]],"id":"48169","properties":{"name":"Garza"}},{"type":"Polygon","arcs":[[2338,2339,2340,2341]],"id":"08119","properties":{"name":"Teller"}},{"type":"Polygon","arcs":[[2342,-2303,2343,2344,2345,2346,2347]],"id":"30089","properties":{"name":"Sanders"}},{"type":"Polygon","arcs":[[2348,-251,2349,-1709,2350,-410]],"id":"48059","properties":{"name":"Callahan"}},{"type":"Polygon","arcs":[[-1803,2351,2352,-1074,2353]],"id":"48433","properties":{"name":"Stonewall"}},{"type":"Polygon","arcs":[[2354,2355,2356,2357,-529,2358]],"id":"40051","properties":{"name":"Grady"}},{"type":"Polygon","arcs":[[2359,2360,2361,2362,2363,2364]],"id":"48159","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[2365,2366,2367,2368,2369,2370]],"id":"48467","properties":{"name":"Van Zandt"}},{"type":"Polygon","arcs":[[2371,-1059,2372,2373]],"id":"31073","properties":{"name":"Gosper"}},{"type":"Polygon","arcs":[[2374,2375,2376,2377,-388]],"id":"31059","properties":{"name":"Fillmore"}},{"type":"Polygon","arcs":[[2378,2379,2380,2381,2382,-2366,2383,2384]],"id":"48231","properties":{"name":"Hunt"}},{"type":"Polygon","arcs":[[2385,2386,-117,2387,2388]],"id":"48313","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[2389,2390,2391,2392,2393,2394,2395]],"id":"40019","properties":{"name":"Carter"}},{"type":"Polygon","arcs":[[2396,2397,2398,2399,2400]],"id":"51157","properties":{"name":"Rappahannock"}},{"type":"Polygon","arcs":[[2401,2402,2403,2404,2405]],"id":"01103","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[2406,2407,2408,2409,2410]],"id":"51079","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[2411,-1777,2412,2413,2414,2415,2416,2417,2418,-520]],"id":"02290","properties":{"name":"Yukon-Koyukuk"}},{"type":"Polygon","arcs":[[2419,2420,2421,2422,2423]],"id":"42059","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[-1953,2424,2425,2426,2427,2428]],"id":"05043","properties":{"name":"Drew"}},{"type":"Polygon","arcs":[[2429,2430,-458,2431,2432,2433,2434]],"id":"28043","properties":{"name":"Grenada"}},{"type":"Polygon","arcs":[[2435,2436],[2437]],"id":"51750","properties":{"name":"Radford"}},{"type":"Polygon","arcs":[[2438,2439,2440,2441,2442]],"id":"29211","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[2443,2444,2445,2446,2447]],"id":"54047","properties":{"name":"McDowell"}},{"type":"Polygon","arcs":[[2448,2449,2450,2451,2452]],"id":"37133","properties":{"name":"Onslow"}},{"type":"Polygon","arcs":[[2453,2454,2455,2456,2457,2458]],"id":"29049","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[2459,2460,2461,2462,2463,2464]],"id":"12005","properties":{"name":"Bay"}},{"type":"Polygon","arcs":[[-144,2465,2466,2467]],"id":"72061","properties":{"name":"Guaynabo"}},{"type":"Polygon","arcs":[[2468,2469,2470,2471,2472]],"id":"72029","properties":{"name":"Canóvanas"}},{"type":"Polygon","arcs":[[-150,-1759,2473,2474,2475,2476]],"id":"72047","properties":{"name":"Corozal"}},{"type":"MultiPolygon","arcs":[[[2477,2478,2479,-636,2480]],[[2481]]],"id":"53033","properties":{"name":"King"}},{"type":"Polygon","arcs":[[2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,-2493,2492,2493,-2479,2494]],"id":"53007","properties":{"name":"Chelan"}},{"type":"Polygon","arcs":[[2495,2496,2497,2498]],"id":"12035","properties":{"name":"Flagler"}},{"type":"Polygon","arcs":[[-2494,-2493,2492,-2493,-2492,2490,-2490,2488,-2488,2486,-2486,2499,2500,2501,-2480]],"id":"53037","properties":{"name":"Kittitas"}},{"type":"Polygon","arcs":[[2502,2503,2504,2505]],"id":"12095","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[2506,-68,2507,2508,-1959]],"id":"13235","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[2509,2510,-2162,-13,2511,2512,2513]],"id":"28005","properties":{"name":"Amite"}},{"type":"Polygon","arcs":[[2514,2515,2516,2517,2518]],"id":"46045","properties":{"name":"Edmunds"}},{"type":"Polygon","arcs":[[-1574,2519,2520,2521,-1823]],"id":"17063","properties":{"name":"Grundy"}},{"type":"Polygon","arcs":[[2522,2523,2524,-735,2525,-783]],"id":"20151","properties":{"name":"Pratt"}},{"type":"Polygon","arcs":[[2526,2527,2528,-888,-230]],"id":"19033","properties":{"name":"Cerro Gordo"}},{"type":"Polygon","arcs":[[2529,2530,2531,2532,2533,2534]],"id":"31155","properties":{"name":"Saunders"}},{"type":"Polygon","arcs":[[2535,2536,2537,2538,2539]],"id":"05125","properties":{"name":"Saline"}},{"type":"Polygon","arcs":[[-2023,-837,-426,2540,2541]],"id":"55097","properties":{"name":"Portage"}},{"type":"Polygon","arcs":[[2542,2543,-1610,2544,2545,2546,-1324]],"id":"20037","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[2547,2548,2549,2550,2551]],"id":"48221","properties":{"name":"Hood"}},{"type":"Polygon","arcs":[[2552,2553,2554,2555,-371,-1126]],"id":"20111","properties":{"name":"Lyon"}},{"type":"Polygon","arcs":[[2556,2557,2558,2559,2560]],"id":"46047","properties":{"name":"Fall River"}},{"type":"Polygon","arcs":[[2561,-299,297,-306,2562,2563,2564]],"id":"30069","properties":{"name":"Petroleum"}},{"type":"Polygon","arcs":[[2565,2566,2567,2568,2569,-2215,2570]],"id":"18023","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-696,2571,-40,-1674,2572,2573]],"id":"38003","properties":{"name":"Barnes"}},{"type":"Polygon","arcs":[[2574,2575,2576,2577,2578]],"id":"50015","properties":{"name":"Lamoille"}},{"type":"Polygon","arcs":[[2579,2580,2581,2582,2583,2584]],"id":"13035","properties":{"name":"Butts"}},{"type":"Polygon","arcs":[[-2248,-2024,-2542,2585,2586,2587]],"id":"55141","properties":{"name":"Wood"}},{"type":"Polygon","arcs":[[2588,-231,-891,-1838,-1038]],"id":"19197","properties":{"name":"Wright"}},{"type":"Polygon","arcs":[[2589,2590,2591,-546,2592,-2318]],"id":"48319","properties":{"name":"Mason"}},{"type":"Polygon","arcs":[[2593,2594,2595,2596]],"id":"48183","properties":{"name":"Gregg"}},{"type":"Polygon","arcs":[[2597,2598,2599,2600,2601,2602]],"id":"28105","properties":{"name":"Oktibbeha"}},{"type":"Polygon","arcs":[[-985,983,-983,981,-981,2603,2604,2605]],"id":"06057","properties":{"name":"Nevada"}},{"type":"Polygon","arcs":[[-2559,2606,2607,2608,2609]],"id":"31045","properties":{"name":"Dawes"}},{"type":"Polygon","arcs":[[2610,2611,2612,2613,2614]],"id":"41033","properties":{"name":"Josephine"}},{"type":"Polygon","arcs":[[-972,2615,2616,2617,-2376]],"id":"31151","properties":{"name":"Saline"}},{"type":"Polygon","arcs":[[-1222,2618,2619,2620,2621]],"id":"48211","properties":{"name":"Hemphill"}},{"type":"Polygon","arcs":[[2622,-2584,2623,2624,2625]],"id":"13171","properties":{"name":"Lamar"}},{"type":"Polygon","arcs":[[2626,2627,2628,2629,2630]],"id":"28065","properties":{"name":"Jefferson Davis"}},{"type":"Polygon","arcs":[[-1932,-952,2631,2632,2633,2634,2635]],"id":"39089","properties":{"name":"Licking"}},{"type":"Polygon","arcs":[[-189,2636,-1982,-819,2637,2638]],"id":"48069","properties":{"name":"Castro"}},{"type":"Polygon","arcs":[[2639,-1599,2640,2641,2642]],"id":"26009","properties":{"name":"Antrim"}},{"type":"Polygon","arcs":[[2643,2644,2645,2646,2647,-177]],"id":"20147","properties":{"name":"Phillips"}},{"type":"Polygon","arcs":[[2648,2649,2650,2651]],"id":"20067","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-1986,2652,2653,2654]],"id":"30007","properties":{"name":"Broadwater"}},{"type":"Polygon","arcs":[[-597,2655,-794,2656,-1968,2657,-1055,2658]],"id":"31019","properties":{"name":"Buffalo"}},{"type":"Polygon","arcs":[[2659,2660,2661,2662]],"id":"32009","properties":{"name":"Esmeralda"}},{"type":"Polygon","arcs":[[2663,2664,2665,2666,2667]],"id":"37135","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[2668,2669,2670,2671,2672,2673]],"id":"16051","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[2674,-1199,2675,-892,2676]],"id":"18087","properties":{"name":"LaGrange"}},{"type":"Polygon","arcs":[[-967,2677,2678,2679,-293,2680]],"id":"19105","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[2681,2682,2683,2684,2685,2686]],"id":"19027","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[2687,2688,-697,-2574,2689,-2228,2690]],"id":"38093","properties":{"name":"Stutsman"}},{"type":"Polygon","arcs":[[2691,-1041,-1113,2692,2693,-2684]],"id":"19073","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[2694,2695,2696,2697,2698,2699,2700]],"id":"01003","properties":{"name":"Baldwin"}},{"type":"Polygon","arcs":[[2701,2702,2703,-1620,2704,2705,2706]],"id":"26075","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[2707,-1635,2708,2709,2710]],"id":"47067","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[-178,-2648,2711,2712,2713,2714]],"id":"20065","properties":{"name":"Graham"}},{"type":"Polygon","arcs":[[-1799,2715,-1322,-1138]],"id":"20001","properties":{"name":"Allen"}},{"type":"Polygon","arcs":[[2716,2717,2718,2719,2720,2721]],"id":"40127","properties":{"name":"Pushmataha"}},{"type":"Polygon","arcs":[[2722,2723,2724,2725,2726]],"id":"48461","properties":{"name":"Upton"}},{"type":"Polygon","arcs":[[2727,-2518,2728,-271,2729,2730]],"id":"46107","properties":{"name":"Potter"}},{"type":"Polygon","arcs":[[-1057,2731,-2644,2732]],"id":"31083","properties":{"name":"Harlan"}},{"type":"Polygon","arcs":[[2733,2734,2735,2736,2737]],"id":"19063","properties":{"name":"Emmet"}},{"type":"Polygon","arcs":[[2738,2739,2740,2741,-1643]],"id":"38019","properties":{"name":"Cavalier"}},{"type":"Polygon","arcs":[[2742,2743,2744,2745,2746,2747]],"id":"06109","properties":{"name":"Tuolumne"}},{"type":"Polygon","arcs":[[-2713,2748,-2190,-1566,2749]],"id":"20195","properties":{"name":"Trego"}},{"type":"Polygon","arcs":[[2750,-935,-134,2751,2752]],"id":"48247","properties":{"name":"Jim Hogg"}},{"type":"Polygon","arcs":[[2753,2754,2755,2756]],"id":"72069","properties":{"name":"Humacao"}},{"type":"Polygon","arcs":[[2757,2758,2759]],"id":"55078","properties":{"name":"Menominee"}},{"type":"Polygon","arcs":[[-1966,2760,2761,2762,-2735,2763]],"id":"27091","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[2764,2765,2766,-875,2767,2768]],"id":"01085","properties":{"name":"Lowndes"}},{"type":"Polygon","arcs":[[2769,2770,-808,2771,2772,2773]],"id":"21073","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[2774,2775,2776,2777,2778]],"id":"29205","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[2779,2780,2781,2782,2783,2784]],"id":"40037","properties":{"name":"Creek"}},{"type":"Polygon","arcs":[[2785,2786,2787,2788,2789,2790]],"id":"48285","properties":{"name":"Lavaca"}},{"type":"Polygon","arcs":[[-429,2791,2792,2793,2794,2795]],"id":"55047","properties":{"name":"Green Lake"}},{"type":"Polygon","arcs":[[-598,-2659,-1054,-2372,2796,2797]],"id":"31047","properties":{"name":"Dawson"}},{"type":"Polygon","arcs":[[-1335,-1200,-2675,2798,2799]],"id":"26149","properties":{"name":"St. Joseph"}},{"type":"Polygon","arcs":[[2800,2801,2802,-860,2803,2804]],"id":"17081","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[2805,-480,2806,-2528,2807]],"id":"19131","properties":{"name":"Mitchell"}},{"type":"Polygon","arcs":[[2808,-2415,2809,-2085,2810,2811]],"id":"02240","properties":{"name":"Southeast Fairbanks"}},{"type":"Polygon","arcs":[[-1826,-1169,2812]],"id":"17155","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[2813,2814,-1183,2815,2816]],"id":"19137","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[2817,2818,-223,2819]],"id":"19017","properties":{"name":"Bremer"}},{"type":"Polygon","arcs":[[2820,-1370,2821,2822,-2802,2823]],"id":"17121","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[2824,2825,2826,2827,2828]],"id":"37025","properties":{"name":"Cabarrus"}},{"type":"Polygon","arcs":[[2829,-945,2830,-2724,2831]],"id":"48329","properties":{"name":"Midland"}},{"type":"Polygon","arcs":[[-2319,-2593,-551,2832,2833,-1736]],"id":"48267","properties":{"name":"Kimble"}},{"type":"Polygon","arcs":[[2834,2835,2836,2837,2838]],"id":"55103","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[-938,-421,2839,-1679,-414,-687]],"id":"48065","properties":{"name":"Carson"}},{"type":"Polygon","arcs":[[2840,2841,2842,2843,2844]],"id":"21061","properties":{"name":"Edmonson"}},{"type":"Polygon","arcs":[[2845,2846,2847,2848,2849,2850,2851]],"id":"18047","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[2852,2853,2854,-1848,2855,2856]],"id":"16085","properties":{"name":"Valley"}},{"type":"Polygon","arcs":[[2857,2858,2859,2860,2861,2862]],"id":"51109","properties":{"name":"Louisa"}},{"type":"Polygon","arcs":[[2863,-1118,2864,-2552,2865,2866,2867]],"id":"48363","properties":{"name":"Palo Pinto"}},{"type":"Polygon","arcs":[[2868,-2638,-823,-243,2869]],"id":"48279","properties":{"name":"Lamb"}},{"type":"Polygon","arcs":[[2870,2871,2872,2873,-2465,2874,-316]],"id":"12131","properties":{"name":"Walton"}},{"type":"Polygon","arcs":[[-49,2875,2876,2877,2878]],"id":"36039","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[-1214,2879,-489,2880,-1889,2881,2882,2883]],"id":"39037","properties":{"name":"Darke"}},{"type":"Polygon","arcs":[[-2259,2884,2885,2886,2887,2888,2889,-2143,2890]],"id":"27007","properties":{"name":"Beltrami"}},{"type":"Polygon","arcs":[[2891,2892,-907,-1354,-1350]],"id":"26133","properties":{"name":"Osceola"}},{"type":"Polygon","arcs":[[-375,2893,2894,2895,2896,2897]],"id":"20049","properties":{"name":"Elk"}},{"type":"Polygon","arcs":[[2898,2899,2900,2901,2902]],"id":"20075","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[2903,2904,2905,2906,-1761,-1786,2907,2908]],"id":"27137","properties":{"name":"St. Louis"}},{"type":"Polygon","arcs":[[2909,2910,2911,-2211,2912,2913]],"id":"19183","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-250,2914,-2867,2915,2916,-1710,-2350]],"id":"48133","properties":{"name":"Eastland"}},{"type":"Polygon","arcs":[[-2833,-550,2917,2918,2919,2920]],"id":"48265","properties":{"name":"Kerr"}},{"type":"Polygon","arcs":[[2921,2922,2923,2924,2925,2926]],"id":"36003","properties":{"name":"Allegany"}},{"type":"Polygon","arcs":[[-822,2927,-2305,-244]],"id":"48303","properties":{"name":"Lubbock"}},{"type":"Polygon","arcs":[[2928,2929]],"id":"51775","properties":{"name":"Salem"}},{"type":"Polygon","arcs":[[2930,2931]],"id":"51670","properties":{"name":"Hopewell"}},{"type":"Polygon","arcs":[[2932,2933,2934,2935,-1814,2936]],"id":"17073","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[2937,2938,-1053,2939,2940]],"id":"28079","properties":{"name":"Leake"}},{"type":"Polygon","arcs":[[2941,2942,2943,2944,2945,2946,2947]],"id":"35057","properties":{"name":"Torrance"}},{"type":"Polygon","arcs":[[2948,2949,-153,2950,2951]],"id":"08095","properties":{"name":"Phillips"}},{"type":"Polygon","arcs":[[2952,-2951,-157,2953,2954,2955,-1030]],"id":"08125","properties":{"name":"Yuma"}},{"type":"Polygon","arcs":[[2956,2957,2958,2959]],"id":"19141","properties":{"name":"O'Brien"}},{"type":"Polygon","arcs":[[-2941,2960,2961,2962,2963]],"id":"28123","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[-590,2964,2965,2966,-595]],"id":"31175","properties":{"name":"Valley"}},{"type":"Polygon","arcs":[[2967,-1310,2968,2969,-2825,2970,2971,2972,-1974]],"id":"37097","properties":{"name":"Iredell"}},{"type":"Polygon","arcs":[[2973,2974,2975,2976,2977]],"id":"01057","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[2978,2979,-180,2980,-899,2981]],"id":"20039","properties":{"name":"Decatur"}},{"type":"Polygon","arcs":[[2982,2983,2984,2985,2986,-2096]],"id":"41001","properties":{"name":"Baker"}},{"type":"Polygon","arcs":[[2987,2988,2989,2990,2991]],"id":"01133","properties":{"name":"Winston"}},{"type":"Polygon","arcs":[[2992,2993,2994,2995,2996]],"id":"29221","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[2997,2998,2999]],"id":"72015","properties":{"name":"Arroyo"}},{"type":"Polygon","arcs":[[3000,3001,3002,3003,3004,3005,3006]],"id":"18007","properties":{"name":"Benton"}},{"type":"MultiPolygon","arcs":[[[3007]],[[3008]],[[3009]],[[3010]],[[3011,3012,3013,3014,3015,3016,3017,3018]]],"id":"06083","properties":{"name":"Santa Barbara"}},{"type":"Polygon","arcs":[[3019,-576,-2223,3020,3021]],"id":"06105","properties":{"name":"Trinity"}},{"type":"Polygon","arcs":[[3022,3023,3024,3025,3026,3027]],"id":"17117","properties":{"name":"Macoupin"}},{"type":"Polygon","arcs":[[3028,3029,3030,3031,-1313,-2185]],"id":"26145","properties":{"name":"Saginaw"}},{"type":"Polygon","arcs":[[-2866,-2551,3032,3033,-704,3034,-2916]],"id":"48143","properties":{"name":"Erath"}},{"type":"MultiPolygon","arcs":[[[3035,3036,3037,3038,3039,3040]],[[3041,3042]]],"id":"12101","properties":{"name":"Pasco"}},{"type":"Polygon","arcs":[[3043,3044,-818,3045,3046]],"id":"37169","properties":{"name":"Stokes"}},{"type":"Polygon","arcs":[[3047,3048,-2857,3049,3050,3051,3052]],"id":"16045","properties":{"name":"Gem"}},{"type":"Polygon","arcs":[[3053,3054,3055,3056,3057]],"id":"54021","properties":{"name":"Gilmer"}},{"type":"Polygon","arcs":[[-738,3058,3059,3060,3061,3062]],"id":"40003","properties":{"name":"Alfalfa"}},{"type":"Polygon","arcs":[[3063,3064,3065,3066,3067,-1547,3068]],"id":"20201","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[3069,3070,3071,3072,3073]],"id":"13109","properties":{"name":"Evans"}},{"type":"Polygon","arcs":[[3074,3075,3076,-1218,3077,3078,3079]],"id":"18065","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[3080,3081,3082,3083]],"id":"45023","properties":{"name":"Chester"}},{"type":"Polygon","arcs":[[3084,-2005,-10,3085,3086,3087,3088]],"id":"04012","properties":{"name":"La Paz"}},{"type":"Polygon","arcs":[[3089,3090,3091,-593,3092,-461]],"id":"31009","properties":{"name":"Blaine"}},{"type":"Polygon","arcs":[[-2855,3093,-2000,-1530,3094,3095,-1843]],"id":"16059","properties":{"name":"Lemhi"}},{"type":"Polygon","arcs":[[3096,-1048,3097,3098,3099]],"id":"20069","properties":{"name":"Gray"}},{"type":"Polygon","arcs":[[-2433,3100,3101,3102,3103]],"id":"28097","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[3104,3105,3106,3107,-2594,3108,3109]],"id":"48459","properties":{"name":"Upshur"}},{"type":"Polygon","arcs":[[3110,3111,3112,3113,3114,3115,-548]],"id":"48031","properties":{"name":"Blanco"}},{"type":"Polygon","arcs":[[3116,3117,3118,3119,3120]],"id":"20061","properties":{"name":"Geary"}},{"type":"Polygon","arcs":[[3121,3122,3123,3124,3125,3126]],"id":"21041","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[3127,3128,-1289,-1578,3129]],"id":"18099","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[3130,-817,3131,-1201,3132]],"id":"37081","properties":{"name":"Guilford"}},{"type":"Polygon","arcs":[[3133,3134]],"id":"51610","properties":{"name":"Falls Church"}},{"type":"Polygon","arcs":[[3135]],"id":"51678","properties":{"name":"Lexington"}},{"type":"Polygon","arcs":[[3136,-2706,3137,3138,3139,3140,-1197]],"id":"26059","properties":{"name":"Hillsdale"}},{"type":"Polygon","arcs":[[-1209,3141,-2256,3142,-2900,3143]],"id":"20203","properties":{"name":"Wichita"}},{"type":"Polygon","arcs":[[-1946,3144,3145,3146,3147]],"id":"27039","properties":{"name":"Dodge"}},{"type":"Polygon","arcs":[[3148,-1174,3149,-1250]],"id":"17039","properties":{"name":"De Witt"}},{"type":"Polygon","arcs":[[-1718,-946,-2830,3150,3151,3152]],"id":"48003","properties":{"name":"Andrews"}},{"type":"Polygon","arcs":[[3153,-1454,-604,3154,-2091,-123,3155]],"id":"46111","properties":{"name":"Sanborn"}},{"type":"Polygon","arcs":[[3156,3157,-1949,3158,3159,3160]],"id":"27079","properties":{"name":"Le Sueur"}},{"type":"Polygon","arcs":[[3161,3162,3163,3164,-988,3165]],"id":"55105","properties":{"name":"Rock"}},{"type":"Polygon","arcs":[[-1947,-3148,3166,-1361,3167]],"id":"27147","properties":{"name":"Steele"}},{"type":"Polygon","arcs":[[3168,3169,3170,3171,3172,3173]],"id":"42065","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[3174,3175,-1043,3176,3177]],"id":"19151","properties":{"name":"Pocahontas"}},{"type":"Polygon","arcs":[[-1508,-1347,3178,3179,3180,-744]],"id":"27105","properties":{"name":"Nobles"}},{"type":"MultiPolygon","arcs":[[[3181,3182]],[[3183]],[[3184]],[[3185]],[[3186]],[[3187]],[[3188]],[[3189]],[[3190]],[[3191]],[[3192]],[[-1654,3193]],[[3194,3195]]],"id":"02198","properties":{"name":"Prince of Wales-Hyder"}},{"type":"Polygon","arcs":[[3196,3197,3198,-353]],"id":"46121","properties":{"name":"Todd"}},{"type":"Polygon","arcs":[[3199,3200,3201,3202,3203]],"id":"13003","properties":{"name":"Atkinson"}},{"type":"MultiPolygon","arcs":[[[-3196,3204]],[[3205]],[[-1442,3206]]],"id":"02220","properties":{"name":"Sitka"}},{"type":"Polygon","arcs":[[-2434,-3104,3207,3208,3209]],"id":"28015","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[3210,3211,-1834,3212]],"id":"12111","properties":{"name":"St. Lucie"}},{"type":"Polygon","arcs":[[-290,-2172,-1703,3213,3214]],"id":"19051","properties":{"name":"Davis"}},{"type":"Polygon","arcs":[[3215,3216,3217,3218,3219]],"id":"17109","properties":{"name":"McDonough"}},{"type":"Polygon","arcs":[[3220,3221,3222,3223,3224]],"id":"39143","properties":{"name":"Sandusky"}},{"type":"Polygon","arcs":[[-2823,3225,-1189,3226,3227,-861,-2803]],"id":"17191","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[3228,3229,3230,3231,3232,3233]],"id":"48243","properties":{"name":"Jeff Davis"}},{"type":"Polygon","arcs":[[3234,-858,3235,-3157,3236,3237]],"id":"27143","properties":{"name":"Sibley"}},{"type":"Polygon","arcs":[[3238,-1098,3239,-1802]],"id":"48275","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[3240,3241,3242,3243,3244,3245,3246]],"id":"17163","properties":{"name":"St. Clair"}},{"type":"Polygon","arcs":[[-788,3247,3248,3249,-1024]],"id":"26011","properties":{"name":"Arenac"}},{"type":"Polygon","arcs":[[-1375,3250,3251,3252,-1184,3253]],"id":"17079","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[-1548,-3068,3254,-3117,3255,3256]],"id":"20027","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[3257,3258,3259,3260,-2001,-3094,-2854,3261,3262]],"id":"16049","properties":{"name":"Idaho"}},{"type":"Polygon","arcs":[[3263,-1647,3264,-2192]],"id":"38079","properties":{"name":"Rolette"}},{"type":"Polygon","arcs":[[-2981,-179,-2715,3265,-900]],"id":"20179","properties":{"name":"Sheridan"}},{"type":"Polygon","arcs":[[3266,3267,-3111,-547,-2592]],"id":"48299","properties":{"name":"Llano"}},{"type":"Polygon","arcs":[[3268,3269,3270,-2334,3271,3272,3273]],"id":"08101","properties":{"name":"Pueblo"}},{"type":"Polygon","arcs":[[3274,3275,-2615,3276,3277]],"id":"41015","properties":{"name":"Curry"}},{"type":"Polygon","arcs":[[3278,-2602,3279,3280,-1050,3281]],"id":"28159","properties":{"name":"Winston"}},{"type":"Polygon","arcs":[[-2658,-1972,3282,-1056]],"id":"31099","properties":{"name":"Kearney"}},{"type":"Polygon","arcs":[[-2476,3283,3284,3285,-1120,3286,3287]],"id":"72019","properties":{"name":"Barranquitas"}},{"type":"Polygon","arcs":[[3288,-2423,3289,3290,3291,3292,3293,3294]],"id":"54103","properties":{"name":"Wetzel"}},{"type":"Polygon","arcs":[[3295,-844,3296,3297]],"id":"13201","properties":{"name":"Miller"}},{"type":"Polygon","arcs":[[-1860,3298,3299,3300,-163]],"id":"08003","properties":{"name":"Alamosa"}},{"type":"Polygon","arcs":[[-784,-2526,-741,3301,3302,-1045]],"id":"20097","properties":{"name":"Kiowa"}},{"type":"Polygon","arcs":[[3303,3304,3305,-717]],"id":"38041","properties":{"name":"Hettinger"}},{"type":"Polygon","arcs":[[-3146,3306,3307,3308,3309,3310]],"id":"27109","properties":{"name":"Olmsted"}},{"type":"Polygon","arcs":[[3311,-2472,3312,-1751]],"id":"72077","properties":{"name":"Juncos"}},{"type":"Polygon","arcs":[[-1857,3313,-2687,-1152,3314,3315]],"id":"19047","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[3316,3317,3318,-1259,3319,-2555]],"id":"20139","properties":{"name":"Osage"}},{"type":"Polygon","arcs":[[3320,-227,3321,-776,-1841]],"id":"19075","properties":{"name":"Grundy"}},{"type":"Polygon","arcs":[[3322,3323,-903,3324,-1207,3325]],"id":"20181","properties":{"name":"Sherman"}},{"type":"Polygon","arcs":[[-2117,3326,3327,3328,3329]],"id":"72121","properties":{"name":"Sabana Grande"}},{"type":"Polygon","arcs":[[-2686,3330,3331,-1153]],"id":"19009","properties":{"name":"Audubon"}},{"type":"MultiPolygon","arcs":[[[3332]],[[3333]],[[3334]],[[3335]],[[3336,-748,3337,3338,3339,3340]]],"id":"23009","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[3341,3342,3343,3344,3345,3346]],"id":"05081","properties":{"name":"Little River"}},{"type":"Polygon","arcs":[[3347,3348,3349,3350]],"id":"05143","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[3351,3352,3353,3354,-2536,3355]],"id":"05119","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[3356,3357,3358,3359,-3353,3360]],"id":"05085","properties":{"name":"Lonoke"}},{"type":"Polygon","arcs":[[3361,3362,3363,3364,3365,3366,3367]],"id":"08009","properties":{"name":"Baca"}},{"type":"Polygon","arcs":[[3368,3369,3370,3371,3372,3373,3374,3375]],"id":"16031","properties":{"name":"Cassia"}},{"type":"Polygon","arcs":[[3376,3377,3378,3379,3380,3381,3382]],"id":"01021","properties":{"name":"Chilton"}},{"type":"Polygon","arcs":[[-1961,3383,3384,3385,3386,-197]],"id":"13081","properties":{"name":"Crisp"}},{"type":"Polygon","arcs":[[3387,3388,-1506,-1517,3389]],"id":"27083","properties":{"name":"Lyon"}},{"type":"Polygon","arcs":[[3390,3391,3392,3393,3394,3395]],"id":"51049","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[3396,3397,3398,3399,3400,3401]],"id":"31133","properties":{"name":"Pawnee"}},{"type":"Polygon","arcs":[[-2621,3402,-541,3403,-1678]],"id":"48483","properties":{"name":"Wheeler"}},{"type":"Polygon","arcs":[[-398,3404,3405,-34,-2572,-695]],"id":"38091","properties":{"name":"Steele"}},{"type":"Polygon","arcs":[[-926,-973,-2375,3406]],"id":"31185","properties":{"name":"York"}},{"type":"Polygon","arcs":[[-2641,-911,3407,3408]],"id":"26079","properties":{"name":"Kalkaska"}},{"type":"Polygon","arcs":[[-2647,3409,3410,-2186,-2749,-2712]],"id":"20163","properties":{"name":"Rooks"}},{"type":"Polygon","arcs":[[3411,3412,3413,-3251,-1374]],"id":"17035","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[3414,3415,3416,3417,-2120,3418,3419]],"id":"54101","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[3420,3421,3422,3423,3424]],"id":"28139","properties":{"name":"Tippah"}},{"type":"Polygon","arcs":[[3425,3426,3427,3428,3429,3430,-3200,3431]],"id":"13069","properties":{"name":"Coffee"}},{"type":"Polygon","arcs":[[3432,3433,3434,3435,3436]],"id":"20169","properties":{"name":"Saline"}},{"type":"Polygon","arcs":[[3437,3438,3439,3440]],"id":"28119","properties":{"name":"Quitman"}},{"type":"Polygon","arcs":[[-2690,-2573,-1676,-342,3441,-2229]],"id":"38045","properties":{"name":"LaMoure"}},{"type":"Polygon","arcs":[[3442,-3437,3443,3444,3445,3446]],"id":"20053","properties":{"name":"Ellsworth"}},{"type":"Polygon","arcs":[[3447,3448,3449,-70,3450,3451,3452,3453]],"id":"18055","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[3454,3455,-1707,3456,3457,3458,-2440]],"id":"29001","properties":{"name":"Adair"}},{"type":"Polygon","arcs":[[3459,3460,3461,3462,-950,3463]],"id":"39075","properties":{"name":"Holmes"}},{"type":"Polygon","arcs":[[-2265,-2282,3464,3465,3466]],"id":"05029","properties":{"name":"Conway"}},{"type":"Polygon","arcs":[[-1579,-1294,3467,3468,3469]],"id":"18131","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[3470,3471,3472,3473,-3285]],"id":"72045","properties":{"name":"Comerío"}},{"type":"Polygon","arcs":[[3474,3475,-238,-791,3476,-2966]],"id":"31077","properties":{"name":"Greeley"}},{"type":"Polygon","arcs":[[3477,-555,-2335,-2928]],"id":"48107","properties":{"name":"Crosby"}},{"type":"Polygon","arcs":[[3478,3479,3480,3481,3482,3483,3484]],"id":"21083","properties":{"name":"Graves"}},{"type":"Polygon","arcs":[[3485,3486,3487,3488,3489,3490]],"id":"21171","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[3491,-1372,3492,3493]],"id":"17005","properties":{"name":"Bond"}},{"type":"Polygon","arcs":[[3494,3495,3496,3497,3498,3499,3500]],"id":"05097","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[3501,3502,3503,3504,3505,-1227]],"id":"47159","properties":{"name":"Smith"}},{"type":"Polygon","arcs":[[3506,3507,3508,3509,3510,3511]],"id":"17045","properties":{"name":"Edgar"}},{"type":"Polygon","arcs":[[3512,3513,3514,3515,3516,3517]],"id":"42021","properties":{"name":"Cambria"}},{"type":"Polygon","arcs":[[3518,3519,3520,3521,3522,3523]],"id":"41043","properties":{"name":"Linn"}},{"type":"Polygon","arcs":[[-867,-350,3524,-3238,3525,3526,3527,3528,3529]],"id":"27129","properties":{"name":"Renville"}},{"type":"Polygon","arcs":[[3530,3531,3532,3533,-1386,-2132]],"id":"27153","properties":{"name":"Todd"}},{"type":"Polygon","arcs":[[3534,3535,3536,3537,-3520,3538]],"id":"41047","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[3539,-241,3540,3541,3542,3543,3544]],"id":"42071","properties":{"name":"Lancaster"}},{"type":"Polygon","arcs":[[3545,3546,3547,3548,-2280]],"id":"05023","properties":{"name":"Cleburne"}},{"type":"Polygon","arcs":[[3549,3550,-3427,3551,3552]],"id":"13017","properties":{"name":"Ben Hill"}},{"type":"MultiPolygon","arcs":[[[3553]],[[3554]],[[3555]],[[3556,3557]]],"id":"15009","properties":{"name":"Maui"}},{"type":"Polygon","arcs":[[3558,3559,3560,3561,3562,-1587]],"id":"29169","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[-1415,3563,-932,-558]],"id":"48311","properties":{"name":"McMullen"}},{"type":"Polygon","arcs":[[-1035,-968,-2681,-292,3564,3565]],"id":"19113","properties":{"name":"Linn"}},{"type":"Polygon","arcs":[[-420,-633,3566,-1223,-2622,-1677,-2840]],"id":"48393","properties":{"name":"Roberts"}},{"type":"Polygon","arcs":[[-1871,3567,-2914,3568,-288,-1241]],"id":"19107","properties":{"name":"Keokuk"}},{"type":"Polygon","arcs":[[-2104,3569,3570,3571,3572,3573]],"id":"39073","properties":{"name":"Hocking"}},{"type":"Polygon","arcs":[[3574,3575,3576,3577,3578]],"id":"13053","properties":{"name":"Chattahoochee"}},{"type":"Polygon","arcs":[[3579,-2564,3580,3581,-1474]],"id":"30065","properties":{"name":"Musselshell"}},{"type":"Polygon","arcs":[[3582,-647,3583,3584]],"id":"13149","properties":{"name":"Heard"}},{"type":"Polygon","arcs":[[3585,3586]],"id":"27031","properties":{"name":"Cook"}},{"type":"Polygon","arcs":[[3587,3588,-2682,-3314,-1856]],"id":"19161","properties":{"name":"Sac"}},{"type":"Polygon","arcs":[[3589,3590,3591,-2665,3592]],"id":"37145","properties":{"name":"Person"}},{"type":"Polygon","arcs":[[-2413,-1776,3593]],"id":"02185","properties":{"name":"North Slope"}},{"type":"Polygon","arcs":[[3594,3595,3596]],"id":"72095","properties":{"name":"Maunabo"}},{"type":"Polygon","arcs":[[3597,-2202,3598,3599,-2151]],"id":"18069","properties":{"name":"Huntington"}},{"type":"Polygon","arcs":[[3600,-2996,3601,3602,3603,3604,-2311]],"id":"29093","properties":{"name":"Iron"}},{"type":"Polygon","arcs":[[-554,-2354,-1073,3605,-2336]],"id":"48263","properties":{"name":"Kent"}},{"type":"Polygon","arcs":[[3606,3607,-2437,3608,3609,3610,3611,3612]],"id":"51155","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[3613,-1700,-1595,3614,3615,-2455]],"id":"29025","properties":{"name":"Caldwell"}},{"type":"Polygon","arcs":[[3616,3617,3618,3619,3620,3621]],"id":"01073","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[3622]],"id":"15001","properties":{"name":"Hawaii"}},{"type":"Polygon","arcs":[[3623,3624,3625,3626]],"id":"53023","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[3627,3628,3629,3630,3631]],"id":"01027","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[3632,3633,-1858,3634,3635,3636,3637]],"id":"19193","properties":{"name":"Woodbury"}},{"type":"Polygon","arcs":[[3638,-1155,3639,-2814,3640,3641,3642,3643]],"id":"19155","properties":{"name":"Pottawattamie"}},{"type":"Polygon","arcs":[[-1845,3644,3645,3646,-3371,3647,-21,3648,3649]],"id":"16013","properties":{"name":"Blaine"}},{"type":"MultiPolygon","arcs":[[[3650]],[[3651,3652,-3341,3653,3654,3655,3656]]],"id":"23027","properties":{"name":"Waldo"}},{"type":"Polygon","arcs":[[3657,3658,3659,3660,3661,3662]],"id":"25025","properties":{"name":"Suffolk"}},{"type":"Polygon","arcs":[[3663,3664,3665,3666,3667,3668]],"id":"25011","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-1025,-3250,3669,3670,-3029,-2184]],"id":"26017","properties":{"name":"Bay"}},{"type":"Polygon","arcs":[[3671,3672,3673,-3390,-1516]],"id":"27081","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[3674,3675,3676,3677,3678,3679]],"id":"28011","properties":{"name":"Bolivar"}},{"type":"Polygon","arcs":[[3680,3681,3682,-1005]],"id":"26007","properties":{"name":"Alpena"}},{"type":"Polygon","arcs":[[3683,3684,3685,3686,3687,3688,3689]],"id":"26053","properties":{"name":"Gogebic"}},{"type":"Polygon","arcs":[[3690,-327,3691,3692,-3652,3693,3694]],"id":"23025","properties":{"name":"Somerset"}},{"type":"Polygon","arcs":[[3695,3696,3697,3698,3699,3700,3701,3702,3703]],"id":"28149","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[3704,3705,3706,3707,3708,3709,3710]],"id":"36075","properties":{"name":"Oswego"}},{"type":"Polygon","arcs":[[3711,-3528,3712,-1343,-1507,-3389]],"id":"27127","properties":{"name":"Redwood"}},{"type":"Polygon","arcs":[[3713,3714,3715,3716,3717,3718,3719]],"id":"39095","properties":{"name":"Lucas"}},{"type":"Polygon","arcs":[[3720,-296,3721,3722,3723]],"id":"19139","properties":{"name":"Muscatine"}},{"type":"Polygon","arcs":[[-531,3724,3725,3726,3727,3728]],"id":"40033","properties":{"name":"Cotton"}},{"type":"Polygon","arcs":[[-3641,-2817,3729,3730,3731]],"id":"19129","properties":{"name":"Mills"}},{"type":"Polygon","arcs":[[3732,3733,3734,3735]],"id":"36059","properties":{"name":"Nassau"}},{"type":"Polygon","arcs":[[3736,3737,3738,3739,3740,3741]],"id":"30109","properties":{"name":"Wibaux"}},{"type":"Polygon","arcs":[[3742,3743,3744,3745,3746]],"id":"29155","properties":{"name":"Pemiscot"}},{"type":"Polygon","arcs":[[3747,3748,3749,3750,3751,-2777]],"id":"29127","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[3752,3753,-1629,3754,3755]],"id":"35017","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[3756,-171,3757,3758,3759,3760,3761,3762]],"id":"51107","properties":{"name":"Loudoun"}},{"type":"Polygon","arcs":[[3763,3764,3765,3766,3767,-1426]],"id":"46105","properties":{"name":"Perkins"}},{"type":"Polygon","arcs":[[3768,-3115,3769,3770,3771]],"id":"48091","properties":{"name":"Comal"}},{"type":"Polygon","arcs":[[3772,-2753,3773,3774]],"id":"48505","properties":{"name":"Zapata"}},{"type":"MultiPolygon","arcs":[[[3775,3776,3777,3778]],[[3779,3780,3781,3782]],[[3783,3784,3785]]],"id":"48007","properties":{"name":"Aransas"}},{"type":"Polygon","arcs":[[3786,3787,3788,3789,3790,3791]],"id":"48361","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[3792,-3152,3793,3794,3795]],"id":"48495","properties":{"name":"Winkler"}},{"type":"Polygon","arcs":[[3796,3797,3798,3799,3800,3801]],"id":"51011","properties":{"name":"Appomattox"}},{"type":"Polygon","arcs":[[3802,3803,3804,-1108,3805,3806,3807,-2501]],"id":"53025","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[3808,-3293,3809,3810,-3055,3811]],"id":"54017","properties":{"name":"Doddridge"}},{"type":"Polygon","arcs":[[3812,-563,3813,3814,-2121,-3418,3815]],"id":"54083","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[-3180,3816,3817,-2957,3818]],"id":"19143","properties":{"name":"Osceola"}},{"type":"Polygon","arcs":[[-1320,3819,3820,3821,3822]],"id":"21189","properties":{"name":"Owsley"}},{"type":"Polygon","arcs":[[3823,3824,-1078,3825]],"id":"37181","properties":{"name":"Vance"}},{"type":"Polygon","arcs":[[-728,3826,3827,3828,3829,3830]],"id":"04007","properties":{"name":"Gila"}},{"type":"Polygon","arcs":[[3831,3832,3833,3834,-2278,-2263,3835]],"id":"05129","properties":{"name":"Searcy"}},{"type":"Polygon","arcs":[[3836,3837,3838,3839,3840,3841]],"id":"05095","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[3842,3843,-2460,-2874]],"id":"12133","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[3844,3845,-1775,3846,-2581,3847]],"id":"13217","properties":{"name":"Newton"}},{"type":"Polygon","arcs":[[3848,3849,3850,-3037,3851,3852]],"id":"12119","properties":{"name":"Sumter"}},{"type":"Polygon","arcs":[[-1584,3853,-2851,3854,-76,3855]],"id":"18031","properties":{"name":"Decatur"}},{"type":"Polygon","arcs":[[3856,3857,3858,-1034,-2819]],"id":"19065","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[3859,-778,-1872,-1239,-1862,-1883]],"id":"19099","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[3860,3861,-1321,-3823,3862,3863,3864]],"id":"21109","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[3865,3866,3867,-3697,3868,3869]],"id":"22035","properties":{"name":"East Carroll"}},{"type":"Polygon","arcs":[[-853,3870,3871,3872,3873,3874]],"id":"22113","properties":{"name":"Vermilion"}},{"type":"Polygon","arcs":[[3875,3876,3877,3878,-850,3879]],"id":"22039","properties":{"name":"Evangeline"}},{"type":"Polygon","arcs":[[3880,-1701,-3614,-2454,3881,3882]],"id":"29063","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[-1304,3883,3884,3885,-2993,3886,3887]],"id":"29071","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[3888,3889,-3397,3890]],"id":"31097","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[3891,-673,3892,-3475,-2965,-589]],"id":"31183","properties":{"name":"Wheeler"}},{"type":"Polygon","arcs":[[3893,3894,3895,3896,-1625,-3754,3897]],"id":"35051","properties":{"name":"Sierra"}},{"type":"Polygon","arcs":[[3898,3899,3900,3901,3902,3903]],"id":"37107","properties":{"name":"Lenoir"}},{"type":"Polygon","arcs":[[3904,3905,3906,3907,3908,3909]],"id":"37045","properties":{"name":"Cleveland"}},{"type":"Polygon","arcs":[[3910,3911,3912,3913,3914]],"id":"31105","properties":{"name":"Kimball"}},{"type":"Polygon","arcs":[[3915,3916,-2237,3917,3918,3919]],"id":"40145","properties":{"name":"Wagoner"}},{"type":"Polygon","arcs":[[3920,3921,3922,3923]],"id":"40027","properties":{"name":"Cleveland"}},{"type":"Polygon","arcs":[[3924,3925,3926,-2392]],"id":"40099","properties":{"name":"Murray"}},{"type":"Polygon","arcs":[[3927,3928,3929,-1017]],"id":"42003","properties":{"name":"Allegheny"}},{"type":"Polygon","arcs":[[3930,3931,3932,-3084,3933,3934,3935]],"id":"45087","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[3936,-276,-2238,3937]],"id":"46065","properties":{"name":"Hughes"}},{"type":"Polygon","arcs":[[3938,3939,3940,3941,3942,3943]],"id":"21235","properties":{"name":"Whitley"}},{"type":"Polygon","arcs":[[3944,3945,-1072,3946,3947,3948]],"id":"37175","properties":{"name":"Transylvania"}},{"type":"Polygon","arcs":[[3949,3950,3951,3952,3953,3954,-3901]],"id":"37049","properties":{"name":"Craven"}},{"type":"Polygon","arcs":[[-2353,3955,-252,-2349,-409,-1075]],"id":"48253","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[3956]],"id":"51720","properties":{"name":"Norton"}},{"type":"Polygon","arcs":[[3957,3958,3959,3960,3961,3962]],"id":"39105","properties":{"name":"Meigs"}},{"type":"Polygon","arcs":[[3963,3964,-3963,3965,3966,3967]],"id":"39053","properties":{"name":"Gallia"}},{"type":"Polygon","arcs":[[3968,-3419,-2125,3969,3970,3971,3972,3973]],"id":"54025","properties":{"name":"Greenbrier"}},{"type":"MultiPolygon","arcs":[[[3974,3975]]],"id":"78030","properties":{"name":"St. Thomas"}},{"type":"Polygon","arcs":[[3976,3977,3978,-612,3979]],"id":"05111","properties":{"name":"Poinsett"}},{"type":"Polygon","arcs":[[3980,3981,3982,-2747,3983,3984]],"id":"06099","properties":{"name":"Stanislaus"}},{"type":"Polygon","arcs":[[3985,3986,3987,3988,3989]],"id":"06011","properties":{"name":"Colusa"}},{"type":"Polygon","arcs":[[3990,3991,3992,3993,3994]],"id":"13089","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[3995,3996,3997,3998,3999]],"id":"13311","properties":{"name":"White"}},{"type":"Polygon","arcs":[[4000,4001,4002,-769,4003,4004]],"id":"13115","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[4005,-24,4006,4007,4008]],"id":"16047","properties":{"name":"Gooding"}},{"type":"Polygon","arcs":[[4009,-990,-1146,4010,4011,4012]],"id":"17141","properties":{"name":"Ogle"}},{"type":"Polygon","arcs":[[4013,4014,4015,-3738,4016]],"id":"30083","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[4017,4018,4019,4020,4021]],"id":"37065","properties":{"name":"Edgecombe"}},{"type":"Polygon","arcs":[[4022,4023,-634,-937,4024]],"id":"48421","properties":{"name":"Sherman"}},{"type":"Polygon","arcs":[[4025,4026,4027,4028,4029]],"id":"01017","properties":{"name":"Chambers"}},{"type":"Polygon","arcs":[[-1269,-1274,4030,4031,-2743,4032]],"id":"06003","properties":{"name":"Alpine"}},{"type":"Polygon","arcs":[[-2613,4033,4034,4035,-565,-3020,4036,4037]],"id":"06093","properties":{"name":"Siskiyou"}},{"type":"Polygon","arcs":[[4038,4039,4040,-1235]],"id":"08083","properties":{"name":"Montezuma"}},{"type":"Polygon","arcs":[[4041,4042,-2141,4043,4044,4045]],"id":"13213","properties":{"name":"Murray"}},{"type":"Polygon","arcs":[[4046,4047,4048,4049,4050,-3373]],"id":"16071","properties":{"name":"Oneida"}},{"type":"Polygon","arcs":[[4051,4052,4053,4054,4055,4056]],"id":"18129","properties":{"name":"Posey"}},{"type":"Polygon","arcs":[[4057,4058,4059,4060,4061,4062,4063,4064,4065]],"id":"21093","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[-3790,4066,4067,-3874,4068,4069]],"id":"22023","properties":{"name":"Cameron"}},{"type":"Polygon","arcs":[[4070,4071,4072,4073,-1256]],"id":"20121","properties":{"name":"Miami"}},{"type":"Polygon","arcs":[[-2856,-1847,4074,4075,-3050]],"id":"16015","properties":{"name":"Boise"}},{"type":"Polygon","arcs":[[-2672,4076,4077,4078,4079,4080,4081]],"id":"16019","properties":{"name":"Bonneville"}},{"type":"Polygon","arcs":[[4082,4083,4084,4085,4086,4087,4088]],"id":"25023","properties":{"name":"Plymouth"}},{"type":"Polygon","arcs":[[4089,4090,4091,4092,4093,4094,4095,4096]],"id":"22077","properties":{"name":"Pointe Coupee"}},{"type":"Polygon","arcs":[[4097,4098,-1665,-202,4099]],"id":"26043","properties":{"name":"Dickinson"}},{"type":"Polygon","arcs":[[-2545,-1609,4100,4101,-1649,4102]],"id":"29097","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[4103,-2651,4104,4105,4106,4107]],"id":"20189","properties":{"name":"Stevens"}},{"type":"Polygon","arcs":[[4108,4109,4110,4111,4112,4113]],"id":"17085","properties":{"name":"Jo Daviess"}},{"type":"Polygon","arcs":[[-3218,4114,-1817,4115,-1877,4116,4117]],"id":"17057","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[4118,-761,4119,4120,4121,-393]],"id":"36055","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[4122,-3587,4123,-2905]],"id":"27075","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[4124,4125,4126,4127,-4128,4128,4129]],"id":"41037","properties":{"name":"Lake"}},{"type":"MultiPolygon","arcs":[[[4130,4131]],[[4132]],[[4133]]],"id":"44005","properties":{"name":"Newport"}},{"type":"Polygon","arcs":[[4134,4135,4136,4137,4138,4139,4140]],"id":"36043","properties":{"name":"Herkimer"}},{"type":"Polygon","arcs":[[4141,-3367,4142,4143,4144,4145,4146,4147]],"id":"35059","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[4148,4149,4150,4151,4152,4153]],"id":"48071","properties":{"name":"Chambers"}},{"type":"Polygon","arcs":[[4154,4155,4156,-3804,4157,-2484,4158,4159]],"id":"53047","properties":{"name":"Okanogan"}},{"type":"Polygon","arcs":[[4160,4161,4162,4163,-3619,4164]],"id":"01115","properties":{"name":"St. Clair"}},{"type":"Polygon","arcs":[[4165,4166,4167,4168,4169]],"id":"55059","properties":{"name":"Kenosha"}},{"type":"Polygon","arcs":[[-956,4170,4171,4172,-118,4173,4174]],"id":"72075","properties":{"name":"Juana Díaz"}},{"type":"Polygon","arcs":[[-430,-2796,4175,4176]],"id":"55077","properties":{"name":"Marquette"}},{"type":"Polygon","arcs":[[-441,4177,4178,4179,4180,-1461,-1491,4181]],"id":"55099","properties":{"name":"Price"}},{"type":"Polygon","arcs":[[4182,-2469,4183,4184]],"id":"72087","properties":{"name":"Loíza"}},{"type":"Polygon","arcs":[[-2347,4185,4186,4187,-731,4188,4189]],"id":"16079","properties":{"name":"Shoshone"}},{"type":"Polygon","arcs":[[4190,4191,-1976,4192,4193,4194]],"id":"37027","properties":{"name":"Caldwell"}},{"type":"Polygon","arcs":[[4195,4196,4197,4198]],"id":"38065","properties":{"name":"Oliver"}},{"type":"Polygon","arcs":[[-3399,4199,4200,4201,4202,4203]],"id":"31147","properties":{"name":"Richardson"}},{"type":"Polygon","arcs":[[4204,4205,-2979,4206,-1603]],"id":"31145","properties":{"name":"Red Willow"}},{"type":"Polygon","arcs":[[4207,4208,4209,-3792,4210,4211]],"id":"48199","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[4212,4213,-1093,4214,4215,4216,4217,4218]],"id":"01077","properties":{"name":"Lauderdale"}},{"type":"Polygon","arcs":[[-504,4219,4220,4221,-3348,4222,4223]],"id":"05007","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[4224,4225,-1827,-2813,-1168,4226,-2935]],"id":"17011","properties":{"name":"Bureau"}},{"type":"Polygon","arcs":[[-2152,-3600,4227,4228,4229,4230,4231,4232,-2224]],"id":"18053","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-3408,-1605,-904,-2893,4233]],"id":"26113","properties":{"name":"Missaukee"}},{"type":"Polygon","arcs":[[-1355,-447,-1315,-1328,4234,-384]],"id":"26117","properties":{"name":"Montcalm"}},{"type":"Polygon","arcs":[[-1589,4235,-2291,-914]],"id":"29229","properties":{"name":"Wright"}},{"type":"Polygon","arcs":[[-1588,-3563,4236,-2314,-2321,4237,-2292,-4236]],"id":"29215","properties":{"name":"Texas"}},{"type":"Polygon","arcs":[[4238,4239,4240,4241,-3603]],"id":"29123","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[4242,4243,4244,-2159,-2511,4245,4246]],"id":"28085","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[4247,4248,4249,4250,4251]],"id":"35011","properties":{"name":"De Baca"}},{"type":"Polygon","arcs":[[4252,-4020,4253,4254,-3950,-3900,4255]],"id":"37147","properties":{"name":"Pitt"}},{"type":"Polygon","arcs":[[4256,-4198,4257,4258,4259,4260,4261]],"id":"38059","properties":{"name":"Morton"}},{"type":"Polygon","arcs":[[4262,4263,4264,4265,-95,4266,-3223]],"id":"39077","properties":{"name":"Huron"}},{"type":"Polygon","arcs":[[-2782,4267,-3919,4268,4269,4270]],"id":"40111","properties":{"name":"Okmulgee"}},{"type":"Polygon","arcs":[[4271,4272,4273,4274,4275,4276,4277,4278]],"id":"45041","properties":{"name":"Florence"}},{"type":"Polygon","arcs":[[4279,4280,4281,4282,4283]],"id":"45081","properties":{"name":"Saluda"}},{"type":"Polygon","arcs":[[4284,4285,-4058,4286,4287,4288]],"id":"21027","properties":{"name":"Breckinridge"}},{"type":"Polygon","arcs":[[-4055,4289,4290,4291,4292,4293]],"id":"21225","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[4294,4295,4296,-432,4297,4298]],"id":"21231","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[4299,-2774,4300,4301,4302,4303]],"id":"21211","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[-3902,-3955,4304,-2449,4305]],"id":"37103","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[4306,4307,4308,4309,4310]],"id":"47105","properties":{"name":"Loudon"}},{"type":"Polygon","arcs":[[4311,4312,4313,-959,4314,4315]],"id":"48217","properties":{"name":"Hill"}},{"type":"Polygon","arcs":[[4316,4317,4318,4319,4320,4321,4322]],"id":"51087","properties":{"name":"Henrico"}},{"type":"Polygon","arcs":[[4323,4324,4325,-839,4326]],"id":"39019","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[-2741,4327,4328,4329,-396,4330]],"id":"38099","properties":{"name":"Walsh"}},{"type":"Polygon","arcs":[[4331,4332,4333,-2760,4334,-2021,-1463]],"id":"55067","properties":{"name":"Langlade"}},{"type":"Polygon","arcs":[[4335,4336,-1494,-2251,4337,4338]],"id":"55017","properties":{"name":"Chippewa"}},{"type":"Polygon","arcs":[[4339,4340,4341,4342,4343]],"id":"22101","properties":{"name":"St. Mary"}},{"type":"Polygon","arcs":[[4344,4345,4346,4347,4348]],"id":"72023","properties":{"name":"Cabo Rojo"}},{"type":"Polygon","arcs":[[4349,4350,4351,4352,4353,4354]],"id":"41009","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[4355,4356,-2098,4357,4358,4359,-4126]],"id":"41025","properties":{"name":"Harney"}},{"type":"Polygon","arcs":[[4360,-1722,4361,4362,4363,4364]],"id":"48491","properties":{"name":"Williamson"}},{"type":"Polygon","arcs":[[4365,4366,4367,4368,-360]],"id":"49009","properties":{"name":"Daggett"}},{"type":"Polygon","arcs":[[4369,4370,-1915,4371,4372]],"id":"48271","properties":{"name":"Kinney"}},{"type":"Polygon","arcs":[[4373,-356,4374,4375,4376]],"id":"49029","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[4377,4378,-4379,4378,4379,4380,4381,4382,4383,4384,-4385,4384,-4385,4384,4385,4386,4387,4388,-4389,4388,4389,4390]],"id":"51620","properties":{"name":"Franklin"}},{"type":"MultiPolygon","arcs":[[[4391]],[[4392,4393,4394,4395,-1033,4396,-1878,4397,4398]]],"id":"08005","properties":{"name":"Arapahoe"}},{"type":"Polygon","arcs":[[4399,4400,4401,4402,4403,-4002,4404,4405]],"id":"13295","properties":{"name":"Walker"}},{"type":"Polygon","arcs":[[4406,4407,4408,4409,4410,4411]],"id":"18121","properties":{"name":"Parke"}},{"type":"Polygon","arcs":[[4412,-79,4413,4414,4415]],"id":"18143","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[-2844,4416,4417,4418,4419,4420]],"id":"21227","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[4421,4422,-1266,4423,4424]],"id":"22081","properties":{"name":"Red River"}},{"type":"Polygon","arcs":[[-3527,4425,4426,-1964,-1344,-3713]],"id":"27015","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[4427,4428,4429,4430,-1306,4431,4432]],"id":"29139","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[4433,-3746,4434,4435,4436,4437,4438,4439,-3978,4440]],"id":"05093","properties":{"name":"Mississippi"}},{"type":"Polygon","arcs":[[4441,4442,4443,4444,-1277,4445]],"id":"05049","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[4446,4447,-4406,4448,4449,4450,4451]],"id":"01049","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[4452,4453,4454,-3495,4455,4456]],"id":"05127","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[-3277,-2614,-4038,4457,4458]],"id":"06015","properties":{"name":"Del Norte"}},{"type":"Polygon","arcs":[[4459,4460,-991,-4010,4461,-4111]],"id":"17177","properties":{"name":"Stephenson"}},{"type":"Polygon","arcs":[[4462,4463,4464,4465,4466,4467]],"id":"18025","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[4468,4469,4470,4471]],"id":"18043","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[-3072,4472,4473,4474,4475,4476]],"id":"13179","properties":{"name":"Liberty"}},{"type":"Polygon","arcs":[[-23,4477,-3369,4478,-4007]],"id":"16053","properties":{"name":"Jerome"}},{"type":"Polygon","arcs":[[4479,4480,4481,4482,4483,4484,-4484,4485,4486]],"id":"24045","properties":{"name":"Wicomico"}},{"type":"Polygon","arcs":[[4487,4488,4489,4490]],"id":"26013","properties":{"name":"Baraga"}},{"type":"Polygon","arcs":[[4491,4492,4493,4494,4495,-1,4496,4497]],"id":"32017","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[4498,4499,4500,4501,4502]],"id":"34011","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[4503,4504,4505,4506]],"id":"18115","properties":{"name":"Ohio"}},{"type":"Polygon","arcs":[[4507,4508,4509,4510,4511,4512]],"id":"36061","properties":{"name":"New York"}},{"type":"Polygon","arcs":[[4513,4514,-4136,4515,4516,4517]],"id":"36089","properties":{"name":"St. Lawrence"}},{"type":"Polygon","arcs":[[4518,4519,-4247,4520,4521,4522]],"id":"28063","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[4523,-2721,4524,4525,4526,4527]],"id":"40023","properties":{"name":"Choctaw"}},{"type":"Polygon","arcs":[[4528,4529,4530,-2175,4531,4532,4533,4534,-3750]],"id":"17149","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[4535,4536,4537,4538,-2213]],"id":"19057","properties":{"name":"Des Moines"}},{"type":"Polygon","arcs":[[4539,4540,4541,-4015,4542,4543]],"id":"30085","properties":{"name":"Roosevelt"}},{"type":"Polygon","arcs":[[4544,4545,4546,4547,-1070,4548,4549,4550]],"id":"45007","properties":{"name":"Anderson"}},{"type":"Polygon","arcs":[[4551,4552,-2557,4553,4554]],"id":"46033","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[4555,-4438,4556,4557,4558,4559,4560]],"id":"47157","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[4561,4562,4563,4564,4565]],"id":"34019","properties":{"name":"Hunterdon"}},{"type":"Polygon","arcs":[[4566,4567,-813,-3045,4568],[-1288]],"id":"51089","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[-2286,4569,4570,4571]],"id":"51650","properties":{"name":"Hampton"}},{"type":"Polygon","arcs":[[4572,4573,-300,-2562,4574,4575]],"id":"30071","properties":{"name":"Phillips"}},{"type":"Polygon","arcs":[[4576,4577,4578,4579,4580,4581,-3429]],"id":"13161","properties":{"name":"Jeff Davis"}},{"type":"Polygon","arcs":[[4582,-4080,4583,4584,4585,4586,4587,4588]],"id":"56023","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[4589,4590,4591,4592,4593]],"id":"01063","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[4594,4595,4596,4597]],"id":"05061","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[4598,4599,4600,-2123]],"id":"51091","properties":{"name":"Highland"}},{"type":"Polygon","arcs":[[4601,4602,4603,4604]],"id":"51101","properties":{"name":"King William"}},{"type":"MultiPolygon","arcs":[[[4605]],[[4606,4607,-439,4608]]],"id":"55007","properties":{"name":"Bayfield"}},{"type":"Polygon","arcs":[[4609,4610,4611,4612,-2839,4613,4614,4615]],"id":"55123","properties":{"name":"Vernon"}},{"type":"Polygon","arcs":[[-672,4616,4617,-234,-3476,-3893]],"id":"31011","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[-4202,4618,4619,4620,4621,4622]],"id":"20043","properties":{"name":"Doniphan"}},{"type":"Polygon","arcs":[[-2967,-3477,-795,-2656,-596]],"id":"31163","properties":{"name":"Sherman"}},{"type":"Polygon","arcs":[[4623,4624,4625,-2663,4626]],"id":"32021","properties":{"name":"Mineral"}},{"type":"Polygon","arcs":[[4627,4628,4629,4630,-1402]],"id":"47083","properties":{"name":"Houston"}},{"type":"MultiPolygon","arcs":[[[-3781,4631]],[[4632,4633,4634,-3777,4635,4636,4637]]],"id":"48057","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[4638,-4005,4639,4640,4641,4642,-4450]],"id":"01019","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[-1475,-3582,4643,4644,4645,4646,4647]],"id":"30111","properties":{"name":"Yellowstone"}},{"type":"Polygon","arcs":[[-793,4648,4649,-1969,-2657]],"id":"31079","properties":{"name":"Hall"}},{"type":"Polygon","arcs":[[4650,4651,4652,-3091,4653]],"id":"31017","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[4654,-2948,4655,4656]],"id":"35061","properties":{"name":"Valencia"}},{"type":"Polygon","arcs":[[4657,4658,4659,4660,-2944,4661]],"id":"35047","properties":{"name":"San Miguel"}},{"type":"Polygon","arcs":[[4662,-3046,-3131,4663,4664,-1308]],"id":"37067","properties":{"name":"Forsyth"}},{"type":"Polygon","arcs":[[4665,4666,-3904,4667,4668,4669]],"id":"37191","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[4670,4671,4672,4673,4674]],"id":"37017","properties":{"name":"Bladen"}},{"type":"Polygon","arcs":[[4675,4676,-1534,4677,4678,4679,-2653,-1985]],"id":"30059","properties":{"name":"Meagher"}},{"type":"Polygon","arcs":[[4680,4681,-3865,4682,4683,4684]],"id":"21203","properties":{"name":"Rockcastle"}},{"type":"Polygon","arcs":[[4685,4686,-4284,4687,4688,4689]],"id":"45047","properties":{"name":"Greenwood"}},{"type":"Polygon","arcs":[[4690,4691,-4289,4692,4693]],"id":"21091","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[4694,4695,4696,4697,4698,4699,4700]],"id":"21045","properties":{"name":"Casey"}},{"type":"Polygon","arcs":[[4701,4702,4703,4704,4705]],"id":"21113","properties":{"name":"Jessamine"}},{"type":"Polygon","arcs":[[4706,4707,-1067,4708]],"id":"37149","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[4709,4710,4711,4712,4713]],"id":"37121","properties":{"name":"Mitchell"}},{"type":"Polygon","arcs":[[4714,4715,4716,4717,4718,4719]],"id":"37053","properties":{"name":"Currituck"}},{"type":"MultiPolygon","arcs":[[[-2438]],[[4720,4721,4722,4723,-3609,-2436,-3608]]],"id":"51121","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-4322,4724]],"id":"51760","properties":{"name":"Richmond"}},{"type":"Polygon","arcs":[[-3806,-1107,4725,4726,4727,4728]],"id":"53021","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-2475,4729,4730,-3471,-3284]],"id":"72105","properties":{"name":"Naranjito"}},{"type":"Polygon","arcs":[[4731,-2396,4732,4733,4734,-3726]],"id":"40067","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[4735,4736,4737,4738,4739,4740,4741]],"id":"47091","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[4742,4743,4744,4745,4746]],"id":"47121","properties":{"name":"Meigs"}},{"type":"Polygon","arcs":[[-544,4747,-127,4748,-2239]],"id":"46015","properties":{"name":"Brule"}},{"type":"Polygon","arcs":[[4749,4750,4751,4752,4753,-4313,4754]],"id":"48139","properties":{"name":"Ellis"}},{"type":"Polygon","arcs":[[-3727,-4735,4755,-1115,4756,4757]],"id":"48077","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[4758,4759,-3802,4760,4761,4762]],"id":"51009","properties":{"name":"Amherst"}},{"type":"Polygon","arcs":[[4763,-1861,-617,4764]],"id":"08079","properties":{"name":"Mineral"}},{"type":"Polygon","arcs":[[4765,4766,4767,4768,4769,4770,4771,4772]],"id":"13107","properties":{"name":"Emanuel"}},{"type":"Polygon","arcs":[[-4117,-1876,-1254,4773,4774,4775]],"id":"17125","properties":{"name":"Mason"}},{"type":"Polygon","arcs":[[-1840,-1842,-779,-3860,-1882,-1110]],"id":"19169","properties":{"name":"Story"}},{"type":"Polygon","arcs":[[4776,4777,-3633,4778]],"id":"19149","properties":{"name":"Plymouth"}},{"type":"Polygon","arcs":[[4779,4780,4781,4782,4783]],"id":"20173","properties":{"name":"Sedgwick"}},{"type":"Polygon","arcs":[[4784,-3125,4785,-2770,-4300,4786]],"id":"21103","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[4787,4788,4789]],"id":"22089","properties":{"name":"St. Charles"}},{"type":"Polygon","arcs":[[-4217,4790,4791,4792]],"id":"01033","properties":{"name":"Colbert"}},{"type":"Polygon","arcs":[[4793,4794,4795,4796,-286,4797,4798]],"id":"04019","properties":{"name":"Pima"}},{"type":"Polygon","arcs":[[4799,4800,-3756,4801,4802,4803]],"id":"04011","properties":{"name":"Greenlee"}},{"type":"Polygon","arcs":[[4804,4805,-615,4806,-3837,4807]],"id":"05147","properties":{"name":"Woodruff"}},{"type":"Polygon","arcs":[[-1836,4808,4809,4810]],"id":"12099","properties":{"name":"Palm Beach"}},{"type":"Polygon","arcs":[[4811,4812,4813,4814,4815]],"id":"13127","properties":{"name":"Glynn"}},{"type":"Polygon","arcs":[[4816,-3215,4817,4818,-710]],"id":"19007","properties":{"name":"Appanoose"}},{"type":"Polygon","arcs":[[4819,4820,-4114,4821,-2678,-966]],"id":"19061","properties":{"name":"Dubuque"}},{"type":"Polygon","arcs":[[4822,4823,4824,4825,-3488,4826]],"id":"21057","properties":{"name":"Cumberland"}},{"type":"MultiPolygon","arcs":[[[4827,4828,4829,4830,4831,-4340,4832,-3872]],[[4833]]],"id":"22045","properties":{"name":"Iberia"}},{"type":"Polygon","arcs":[[4834,4835,4836,-1186]],"id":"17101","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[4837,4838,4839]],"id":"24037","properties":{"name":"St. Mary's"}},{"type":"Polygon","arcs":[[4840,4841,4842,4843,4844,4845]],"id":"22033","properties":{"name":"East Baton Rouge"}},{"type":"Polygon","arcs":[[4846,4847,4848,4849]],"id":"22043","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-1352,-381,-1356,4850]],"id":"26127","properties":{"name":"Oceana"}},{"type":"Polygon","arcs":[[4851,4852,4853,4854,-3889,4855]],"id":"31131","properties":{"name":"Otoe"}},{"type":"Polygon","arcs":[[4856,-4169,4857,4858,4859,-1141,4860]],"id":"17111","properties":{"name":"McHenry"}},{"type":"Polygon","arcs":[[4861,4862,4863,4864,-3410,-2646]],"id":"20183","properties":{"name":"Smith"}},{"type":"Polygon","arcs":[[-4860,4865,4866,-1572,-1142]],"id":"17089","properties":{"name":"Kane"}},{"type":"Polygon","arcs":[[-3896,4867,4868,4869,4870,4871,4872,4873]],"id":"35035","properties":{"name":"Otero"}},{"type":"Polygon","arcs":[[4874,4875,-4467,4876,-4285,-4692]],"id":"18123","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-4836,4877,4878,-3453,4879,4880,4881,4882]],"id":"18083","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[4883,4884,4885,4886,4887]],"id":"42049","properties":{"name":"Erie"}},{"type":"Polygon","arcs":[[4888,4889,4890,4891,4892]],"id":"45019","properties":{"name":"Charleston"}},{"type":"Polygon","arcs":[[-3908,4893,4894,4895,4896,4897,4898,4899,-4899,4898,4900,-3081,-3933,4901]],"id":"45091","properties":{"name":"York"}},{"type":"Polygon","arcs":[[4902,4903,4904,4905,4906]],"id":"45053","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[4907,4908,4909,4910,4911,4912,4913,4914]],"id":"36071","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[4915,4916,4917,-3665,4918]],"id":"50025","properties":{"name":"Windham"}},{"type":"Polygon","arcs":[[-4802,-3755,-1628,4919,4920]],"id":"35023","properties":{"name":"Hidalgo"}},{"type":"Polygon","arcs":[[4921,4922,4923,-4657,4924,4925,4926]],"id":"35006","properties":{"name":"Cibola"}},{"type":"Polygon","arcs":[[-2446,4927,4928,4929,4930,4931,4932]],"id":"54055","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[4933,4934,4935,-2424,-3289,4936]],"id":"54051","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[4937,4938,4939,4940,4941,-2766,4942]],"id":"01101","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[4943,-4451,-4643,4944,-4161,4945]],"id":"01055","properties":{"name":"Etowah"}},{"type":"Polygon","arcs":[[4946,-4792,4947,-2988,4948,4949]],"id":"01059","properties":{"name":"Franklin"}},{"type":"MultiPolygon","arcs":[[[-521,-2419,4950,4951,-2073,4952,4953,4954,4955]],[[4956]],[[4957]],[[4958]]],"id":"02050","properties":{"name":"Bethel"}},{"type":"Polygon","arcs":[[4959,-43,4960,4961,4962,4963,-4552]],"id":"46103","properties":{"name":"Pennington"}},{"type":"Polygon","arcs":[[4964,4965,-610,4966,-1449,4967]],"id":"46115","properties":{"name":"Spink"}},{"type":"Polygon","arcs":[[4968,4969,-4779,-3638,4970,4971,4972]],"id":"46127","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[4973,4974,4975,-4904]],"id":"45013","properties":{"name":"Beaufort"}},{"type":"Polygon","arcs":[[4976,4977,4978,4979,4980,4981]],"id":"47029","properties":{"name":"Cocke"}},{"type":"Polygon","arcs":[[4982,4983,4984,-4566,4985,4986,4987,4988]],"id":"42017","properties":{"name":"Bucks"}},{"type":"Polygon","arcs":[[-1422,4989,4990,4991]],"id":"46009","properties":{"name":"Bon Homme"}},{"type":"Polygon","arcs":[[-4630,4992,4993,4994,4995,4996]],"id":"47043","properties":{"name":"Dickson"}},{"type":"Polygon","arcs":[[4997,4998,4999,5000,5001]],"id":"40105","properties":{"name":"Nowata"}},{"type":"Polygon","arcs":[[5002,-2384,-2371,5003,-4752,5004]],"id":"48257","properties":{"name":"Kaufman"}},{"type":"Polygon","arcs":[[5005,5006,-1099,-3239,-1801,-281]],"id":"48155","properties":{"name":"Foard"}},{"type":"Polygon","arcs":[[5007,5008,-4346]],"id":"72067","properties":{"name":"Hormigueros"}},{"type":"Polygon","arcs":[[5009,5010,5011,5012,5013]],"id":"23023","properties":{"name":"Sagadahoc"}},{"type":"Polygon","arcs":[[5014,5015,-2379,5016,5017,5018]],"id":"48085","properties":{"name":"Collin"}},{"type":"Polygon","arcs":[[-2917,-3035,-703,5019,-1711]],"id":"48093","properties":{"name":"Comanche"}},{"type":"Polygon","arcs":[[-723,5020,5021,-2316,-256]],"id":"48095","properties":{"name":"Concho"}},{"type":"Polygon","arcs":[[5022,-2727,5023,5024,5025]],"id":"48103","properties":{"name":"Crane"}},{"type":"Polygon","arcs":[[5026,5027,5028,5029,5030,-4870]],"id":"35015","properties":{"name":"Eddy"}},{"type":"Polygon","arcs":[[5031,5032,5033,-2315,-4237,-3562]],"id":"29161","properties":{"name":"Phelps"}},{"type":"Polygon","arcs":[[5034,5035,5036,-2267,5037,-4454]],"id":"05083","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[-2456,-3616,5038,5039,5040,5041]],"id":"29177","properties":{"name":"Ray"}},{"type":"Polygon","arcs":[[5042,-2661,5043,5044,-2003,5045,5046,-1159]],"id":"06027","properties":{"name":"Inyo"}},{"type":"Polygon","arcs":[[5047,5048,-3174,5049,5050]],"id":"42005","properties":{"name":"Armstrong"}},{"type":"Polygon","arcs":[[5051,-2972,5052,5053,-3906,5054]],"id":"37109","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-4981,5055,5056,-3945,5057,5058,5059]],"id":"37087","properties":{"name":"Haywood"}},{"type":"Polygon","arcs":[[5060,5061,-2710,5062,5063,5064,5065]],"id":"47057","properties":{"name":"Grainger"}},{"type":"Polygon","arcs":[[5066,5067,5068,5069,5070]],"id":"42023","properties":{"name":"Cameron"}},{"type":"Polygon","arcs":[[-109,5071,-4973,5072,5073,5074]],"id":"46027","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[5075,5076,5077,5078,5079]],"id":"42025","properties":{"name":"Carbon"}},{"type":"Polygon","arcs":[[5080,5081,5082,5083,5084,5085]],"id":"45025","properties":{"name":"Chesterfield"}},{"type":"Polygon","arcs":[[5086,5087,-4889,5088]],"id":"45035","properties":{"name":"Dorchester"}},{"type":"Polygon","arcs":[[5089,5090,5091,5092,5093,5094,-1593]],"id":"29041","properties":{"name":"Chariton"}},{"type":"Polygon","arcs":[[5095,5096,-2579,5097,5098]],"id":"50011","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[5099,5100,-5071,5101,-3171,5102]],"id":"42047","properties":{"name":"Elk"}},{"type":"Polygon","arcs":[[5103,5104,5105]],"id":"51115","properties":{"name":"Mathews"}},{"type":"Polygon","arcs":[[5106,5107,5108,5109,-3560,5110,5111]],"id":"29131","properties":{"name":"Miller"}},{"type":"Polygon","arcs":[[-304,5112,5113,5114,5115,5116]],"id":"30017","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[-5116,5117,5118,5119,5120,5121,5122]],"id":"30075","properties":{"name":"Powder River"}},{"type":"Polygon","arcs":[[5123,-1341,5124,5125,5126]],"id":"21107","properties":{"name":"Hopkins"}},{"type":"Polygon","arcs":[[5127,-2269,5128,5129,5130]],"id":"26003","properties":{"name":"Alger"}},{"type":"Polygon","arcs":[[5131,5132,5133,5134,5135]],"id":"21115","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-1177,5136,-3512,5137,5138]],"id":"17041","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[5139,5140,5141,5142,5143,5144]],"id":"21119","properties":{"name":"Knott"}},{"type":"Polygon","arcs":[[5145,-662,5146,-4781,5147]],"id":"20079","properties":{"name":"Harvey"}},{"type":"Polygon","arcs":[[5148,-3241,5149]],"id":"29510","properties":{"name":"St. Louis"}},{"type":"Polygon","arcs":[[-3516,5150,5151,5152,-330,5153]],"id":"42009","properties":{"name":"Bedford"}},{"type":"Polygon","arcs":[[-4203,-4623,5154,-2205,5155]],"id":"20013","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[5156,5157,5158,5159,5160,5161,5162,5163]],"id":"05099","properties":{"name":"Nevada"}},{"type":"Polygon","arcs":[[-3500,5164,-5158,5165,-4595]],"id":"05109","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[5166,5167,5168,5169,5170]],"id":"51730","properties":{"name":"Petersburg"}},{"type":"Polygon","arcs":[[-4534,5171,5172,-4430,5173,5174]],"id":"29163","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-3027,5175,5176,5177,5178]],"id":"17083","properties":{"name":"Jersey"}},{"type":"Polygon","arcs":[[5179,-4277,5180,5181,5182,5183]],"id":"45027","properties":{"name":"Clarendon"}},{"type":"Polygon","arcs":[[-2709,-1634,5184,-1489,5185,5186,-5063]],"id":"47073","properties":{"name":"Hawkins"}},{"type":"Polygon","arcs":[[5187,5188,5189,-1192,-1468]],"id":"47077","properties":{"name":"Henderson"}},{"type":"Polygon","arcs":[[-5084,5190,-4272,5191,5192]],"id":"45031","properties":{"name":"Darlington"}},{"type":"Polygon","arcs":[[-3542,5193,5194,5195,5196,5197]],"id":"42029","properties":{"name":"Chester"}},{"type":"Polygon","arcs":[[5198,5199,5200,5201,-4274]],"id":"45033","properties":{"name":"Dillon"}},{"type":"Polygon","arcs":[[5202,-3169,-5049,5203,-1683]],"id":"42031","properties":{"name":"Clarion"}},{"type":"Polygon","arcs":[[5204,-4100,-201,5205]],"id":"55037","properties":{"name":"Florence"}},{"type":"Polygon","arcs":[[5206,-5103,-3170,-5203,-1682]],"id":"42053","properties":{"name":"Forest"}},{"type":"Polygon","arcs":[[5207,5208,5209,5210,5211]],"id":"13049","properties":{"name":"Charlton"}},{"type":"Polygon","arcs":[[-619,-166,5212,5213,5214,5215,5216,5217]],"id":"35039","properties":{"name":"Rio Arriba"}},{"type":"Polygon","arcs":[[5218,-4425,5219,5220,5221,-1102]],"id":"22031","properties":{"name":"De Soto"}},{"type":"Polygon","arcs":[[-3592,5222,5223,5224,-2666]],"id":"37063","properties":{"name":"Durham"}},{"type":"Polygon","arcs":[[5225,5226,-4922,5227]],"id":"35031","properties":{"name":"McKinley"}},{"type":"Polygon","arcs":[[5228,5229,5230,5231,5232]],"id":"24013","properties":{"name":"Carroll"}},{"type":"MultiPolygon","arcs":[[[5233,5234]],[[-5197,5235,5236,5237,5238,5239,5240,5241]]],"id":"10003","properties":{"name":"New Castle"}},{"type":"Polygon","arcs":[[5242,5243,-3323,5244,-2955]],"id":"20023","properties":{"name":"Cheyenne"}},{"type":"Polygon","arcs":[[5245,5246,5247,5248,5249,-4581]],"id":"13001","properties":{"name":"Appling"}},{"type":"Polygon","arcs":[[5250,5251,5252,-4938,5253,-3380]],"id":"01051","properties":{"name":"Elmore"}},{"type":"Polygon","arcs":[[5254,5255,-4039,-1234]],"id":"08033","properties":{"name":"Dolores"}},{"type":"Polygon","arcs":[[5256,-2261,5257,5258]],"id":"27069","properties":{"name":"Kittson"}},{"type":"Polygon","arcs":[[5259,-1747,5260,5261,-3787,-4210,5262]],"id":"48241","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[5263,5264,5265,-4891,5266,5267]],"id":"45043","properties":{"name":"Georgetown"}},{"type":"Polygon","arcs":[[5268,-3730,5269,5270,-4853]],"id":"19071","properties":{"name":"Fremont"}},{"type":"Polygon","arcs":[[5271,-4775,5272,5273,5274,5275]],"id":"17017","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[5276,5277,5278,-4916,5279,5280,5281]],"id":"50027","properties":{"name":"Windsor"}},{"type":"Polygon","arcs":[[5282,-2166,5283,5284,-4196,5285,5286,5287]],"id":"38055","properties":{"name":"McLean"}},{"type":"Polygon","arcs":[[5288,-4256,-3899,-4667]],"id":"37079","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[5289,5290,5291,5292,5293]],"id":"17127","properties":{"name":"Massac"}},{"type":"MultiPolygon","arcs":[[[5294,5295]],[[5296,-1001,5297,-4480,5298]]],"id":"24019","properties":{"name":"Dorchester"}},{"type":"Polygon","arcs":[[5299,-4189,-730,5300]],"id":"16055","properties":{"name":"Kootenai"}},{"type":"Polygon","arcs":[[5301,5302,5303,5304]],"id":"09007","properties":{"name":"Middlesex"}},{"type":"Polygon","arcs":[[5305,-2799,-2677,-897,5306,-3128,5307]],"id":"18039","properties":{"name":"Elkhart"}},{"type":"Polygon","arcs":[[5308,-1210,-3144,-2899,5309,5310]],"id":"20071","properties":{"name":"Greeley"}},{"type":"Polygon","arcs":[[5311,-5275,5312,-3023,5313,-2173,-4531]],"id":"17137","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[5314,5315,5316,-3940]],"id":"21121","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[5317,-713,5318,5319,-1148]],"id":"19053","properties":{"name":"Decatur"}},{"type":"Polygon","arcs":[[5320,5321,5322,5323,5324,-5132,5325]],"id":"21127","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[5326,5327,-564,-3813,5328,5329]],"id":"54001","properties":{"name":"Barbour"}},{"type":"Polygon","arcs":[[5330,5331,-3669,5332,5333,5334,5335,5336]],"id":"25003","properties":{"name":"Berkshire"}},{"type":"Polygon","arcs":[[5337,-4428,5338,5339,5340]],"id":"29027","properties":{"name":"Callaway"}},{"type":"Polygon","arcs":[[5341,5342,5343,5344,5345,5346]],"id":"27073","properties":{"name":"Lac qui Parle"}},{"type":"Polygon","arcs":[[-2862,5347,-4317,5348,-3393,5349]],"id":"51075","properties":{"name":"Goochland"}},{"type":"Polygon","arcs":[[5350,5351,5352,-4585]],"id":"56035","properties":{"name":"Sublette"}},{"type":"Polygon","arcs":[[-4050,5353,5354,5355,5356]],"id":"49005","properties":{"name":"Cache"}},{"type":"Polygon","arcs":[[-1245,5357,-2304,-2343,5358]],"id":"30053","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[5359,5360,5361,5362,5363,5364,5365]],"id":"12001","properties":{"name":"Alachua"}},{"type":"Polygon","arcs":[[-4704,5366,5367,5368,-3861,-4682,5369]],"id":"21151","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[5370,5371,5372,-2791,5373,5374,-1929]],"id":"48177","properties":{"name":"Gonzales"}},{"type":"Polygon","arcs":[[5375,5376,-674,-3892,-588,5377,5378]],"id":"31089","properties":{"name":"Holt"}},{"type":"Polygon","arcs":[[5379,5380,5381,-4670,5382,5383]],"id":"37101","properties":{"name":"Johnston"}},{"type":"Polygon","arcs":[[5384,-2937,-1813,5385,5386,-4537,5387]],"id":"17131","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[-478,5388,5389,5390,-3858,5391]],"id":"19191","properties":{"name":"Winneshiek"}},{"type":"Polygon","arcs":[[-1558,-1470,5392,5393,5394,5395]],"id":"47075","properties":{"name":"Haywood"}},{"type":"Polygon","arcs":[[5396,5397,-335,5398,5399,5400]],"id":"24023","properties":{"name":"Garrett"}},{"type":"Polygon","arcs":[[5401,-5401,5402,-561,-5328,5403,5404]],"id":"54077","properties":{"name":"Preston"}},{"type":"Polygon","arcs":[[5405,5406,5407,-4491,5408,5409]],"id":"26061","properties":{"name":"Houghton"}},{"type":"MultiPolygon","arcs":[[[5410,-5395,5411,-4557,-4437]],[[-4439,-4556,5412]]],"id":"47167","properties":{"name":"Tipton"}},{"type":"Polygon","arcs":[[-1134,5413,5414,-2703,5415]],"id":"26065","properties":{"name":"Ingham"}},{"type":"Polygon","arcs":[[-4783,5416,5417,5418,5419,5420]],"id":"20191","properties":{"name":"Sumner"}},{"type":"Polygon","arcs":[[5421,5422,5423,5424,5425,5426,5427]],"id":"21135","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[-4211,-3791,-4070,5428,-4150,5429]],"id":"48245","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[5430,5431,-3644,5432,5433]],"id":"31177","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[5434,5435,5436,-497,5437,5438,5439,5440]],"id":"53039","properties":{"name":"Klickitat"}},{"type":"Polygon","arcs":[[5441,-3751,-4535,-5175,5442]],"id":"29173","properties":{"name":"Ralls"}},{"type":"Polygon","arcs":[[-1483,5443,5444,5445,-472,5446]],"id":"56001","properties":{"name":"Albany"}},{"type":"Polygon","arcs":[[5447,5448,-2410,5449,-2858,5450,5451,5452],[-1471]],"id":"51003","properties":{"name":"Albemarle"}},{"type":"Polygon","arcs":[[-5040,5453,5454,-1991,5455,5456]],"id":"29107","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[5457,5458,-5032,-3561,-5110]],"id":"29125","properties":{"name":"Maries"}},{"type":"Polygon","arcs":[[5459,-5339,-4433,5460,-5458,-5109]],"id":"29151","properties":{"name":"Osage"}},{"type":"Polygon","arcs":[[-3159,-1948,-3168,-1360,5461,5462]],"id":"27161","properties":{"name":"Waseca"}},{"type":"Polygon","arcs":[[5463,5464,5465,5466,-4542,5467]],"id":"38105","properties":{"name":"Williams"}},{"type":"Polygon","arcs":[[-3799,5468,-3396,5469,5470,5471,5472]],"id":"51147","properties":{"name":"Prince Edward"}},{"type":"Polygon","arcs":[[5473,-5241,5474,5475,5476]],"id":"24029","properties":{"name":"Kent"}},{"type":"Polygon","arcs":[[5477,-3219,-4118,-4776,-5272,5478,5479]],"id":"17169","properties":{"name":"Schuyler"}},{"type":"Polygon","arcs":[[5480,5481,5482,5483,5484,-3759]],"id":"24031","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-1194,5485,5486,5487]],"id":"47109","properties":{"name":"McNairy"}},{"type":"Polygon","arcs":[[5488,5489,5490,-1260,5491]],"id":"22119","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[5492,5493,5494]],"id":"37129","properties":{"name":"New Hanover"}},{"type":"Polygon","arcs":[[-5409,-4490,5495,-4098,-5205,5496,5497,-3686,5498]],"id":"26071","properties":{"name":"Iron"}},{"type":"Polygon","arcs":[[-5292,5499,5500,5501,5502,5503,5504,5505]],"id":"21139","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[5506,-1271,5507,-3982,5508,5509]],"id":"06077","properties":{"name":"San Joaquin"}},{"type":"Polygon","arcs":[[5510,-5293,-5506,5511,-3480,5512,5513]],"id":"21145","properties":{"name":"McCracken"}},{"type":"Polygon","arcs":[[5514,5515,-4974,-4903,5516,5517]],"id":"45049","properties":{"name":"Hampton"}},{"type":"Polygon","arcs":[[-1658,-1064,5518,5519,5520]],"id":"31037","properties":{"name":"Colfax"}},{"type":"MultiPolygon","arcs":[[[5521]]],"id":"78010","properties":{"name":"St. Croix"}},{"type":"Polygon","arcs":[[5522,-2654,-4680,5523,-1505,5524,5525,5526]],"id":"30031","properties":{"name":"Gallatin"}},{"type":"Polygon","arcs":[[-1404,5527,5528,-1460,5529,5530]],"id":"47135","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[5531,-4075,-1846,-3650,5532,-4009,5533,5534]],"id":"16039","properties":{"name":"Elmore"}},{"type":"Polygon","arcs":[[-2609,5535,5536,5537,5538]],"id":"31013","properties":{"name":"Box Butte"}},{"type":"MultiPolygon","arcs":[[[5539,-4089,5540,-4131,5541,5542,5543]]],"id":"25005","properties":{"name":"Bristol"}},{"type":"Polygon","arcs":[[-1187,-4837,-4883,5544,5545,5546]],"id":"17185","properties":{"name":"Wabash"}},{"type":"Polygon","arcs":[[5547,5548,5549,5550,5551,5552]],"id":"21095","properties":{"name":"Harlan"}},{"type":"Polygon","arcs":[[5553,5554,5555,-1089,5556,-1457]],"id":"47119","properties":{"name":"Maury"}},{"type":"Polygon","arcs":[[5557,5558,-4067,-3789,5559]],"id":"22019","properties":{"name":"Calcasieu"}},{"type":"Polygon","arcs":[[5560,-2667,-5225,5561,5562,5563,5564,-1203]],"id":"37037","properties":{"name":"Chatham"}},{"type":"Polygon","arcs":[[-976,5565,-560,5566,5567]],"id":"48127","properties":{"name":"Dimmit"}},{"type":"Polygon","arcs":[[-5135,5568,-5140,5569,5570,5571]],"id":"21153","properties":{"name":"Magoffin"}},{"type":"Polygon","arcs":[[-4376,5572,5573,5574]],"id":"49011","properties":{"name":"Davis"}},{"type":"Polygon","arcs":[[5575,5576,5577,5578]],"id":"49031","properties":{"name":"Piute"}},{"type":"Polygon","arcs":[[-5325,5579,5580,5581,5582,-5133]],"id":"21159","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[5583,5584,-4616,5585,-5390,5586]],"id":"27055","properties":{"name":"Houston"}},{"type":"Polygon","arcs":[[5587,5588,5589,-4352]],"id":"53011","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[5590,5591,5592,5593]],"id":"55089","properties":{"name":"Ozaukee"}},{"type":"Polygon","arcs":[[5594,-1987,-2655,-5523,5595,5596,5597]],"id":"30043","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[5598,-4982,-5060,5599,5600,5601]],"id":"47155","properties":{"name":"Sevier"}},{"type":"Polygon","arcs":[[-2182,5602,-3000,5603,5604]],"id":"72057","properties":{"name":"Guayama"}},{"type":"Polygon","arcs":[[5605,5606,5607,5608]],"id":"32011","properties":{"name":"Eureka"}},{"type":"Polygon","arcs":[[5609,5610,5611,-1262,5612]],"id":"22061","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[5613,5614,5615,-5610,5616]],"id":"22111","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[5617,5618,5619,5620]],"id":"33001","properties":{"name":"Belknap"}},{"type":"Polygon","arcs":[[-1954,-2429,5621,5622,5623]],"id":"05011","properties":{"name":"Bradley"}},{"type":"Polygon","arcs":[[5624,5625,5626,-1601,5627,-155]],"id":"31085","properties":{"name":"Hayes"}},{"type":"Polygon","arcs":[[5628,5629,5630,5631,5632,5633,5634,5635,5636]],"id":"42097","properties":{"name":"Northumberland"}},{"type":"MultiPolygon","arcs":[[[5637,-1002,-5297,5638]],[[5639]]],"id":"24041","properties":{"name":"Talbot"}},{"type":"Polygon","arcs":[[5640,5641,5642,-2958]],"id":"19041","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[5643,5644,5645,-2135,-4043,5646]],"id":"47139","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[5647,5648,-2209,5649,5650,5651]],"id":"20149","properties":{"name":"Pottawatomie"}},{"type":"Polygon","arcs":[[5652,5653,5654]],"id":"24510","properties":{"name":"Baltimore"}},{"type":"Polygon","arcs":[[5655,5656,-5014,5657,5658]],"id":"23001","properties":{"name":"Androscoggin"}},{"type":"Polygon","arcs":[[5659,5660,5661,-3454,-4879,5662]],"id":"18153","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[5663,5664,-3424,5665,5666,5667,5668]],"id":"28145","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-1346,-1967,-2764,-2734,5669,-3817,-3179]],"id":"27063","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[5670,5671,5672,5673,5674,5675,5676]],"id":"49049","properties":{"name":"Utah"}},{"type":"Polygon","arcs":[[5677,-3973,5678,5679,-4930,5680]],"id":"54089","properties":{"name":"Summers"}},{"type":"Polygon","arcs":[[-5675,5681,5682,5683,5684,5685]],"id":"49039","properties":{"name":"Sanpete"}},{"type":"Polygon","arcs":[[-2794,5686,5687,-1510,5688,5689,5690]],"id":"55027","properties":{"name":"Dodge"}},{"type":"Polygon","arcs":[[5691,5692,-5347,5693,-929,5694]],"id":"46051","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-5153,5695,5696,-168,-331]],"id":"42057","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[5697,5698,5699,5700,5701,5702]],"id":"55093","properties":{"name":"Pierce"}},{"type":"Polygon","arcs":[[5703,5704,-1531,-4677,5705]],"id":"30045","properties":{"name":"Judith Basin"}},{"type":"Polygon","arcs":[[5706,5707,-5086,5708,5709,-3082,-4901,-4899,4898,4899,-4899,-4898,4896,-4896]],"id":"45057","properties":{"name":"Lancaster"}},{"type":"Polygon","arcs":[[5710,5711,-1522,5712,5713,-4602,5714]],"id":"51033","properties":{"name":"Caroline"}},{"type":"Polygon","arcs":[[5715,5716,5717,-5444,-1482]],"id":"56031","properties":{"name":"Platte"}},{"type":"Polygon","arcs":[[5718,5719,5720,5721,5722,-5703,5723]],"id":"27163","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[5724,5725,5726,5727,5728,5729,5730]],"id":"29133","properties":{"name":"Mississippi"}},{"type":"Polygon","arcs":[[-5078,5731,5732,-4984,5733]],"id":"42095","properties":{"name":"Northampton"}},{"type":"Polygon","arcs":[[-5221,5734,5735,5736,5737,5738]],"id":"22085","properties":{"name":"Sabine"}},{"type":"Polygon","arcs":[[5739,5740,5741,-4827,-3487,5742]],"id":"21169","properties":{"name":"Metcalfe"}},{"type":"Polygon","arcs":[[-3829,5743,-4795,5744]],"id":"04021","properties":{"name":"Pinal"}},{"type":"Polygon","arcs":[[-1237,5745,5746,-3827,-727]],"id":"04017","properties":{"name":"Navajo"}},{"type":"Polygon","arcs":[[5747,-3088,5748,-4799,5749]],"id":"04027","properties":{"name":"Yuma"}},{"type":"Polygon","arcs":[[5750,5751,5752,-5721,5753,-665]],"id":"27025","properties":{"name":"Chisago"}},{"type":"Polygon","arcs":[[-3745,5754,5755,-1399,-1557,5756,-4435]],"id":"47045","properties":{"name":"Dyer"}},{"type":"Polygon","arcs":[[5757,5758,5759,5760,5761]],"id":"21181","properties":{"name":"Nicholas"}},{"type":"Polygon","arcs":[[5762,-5462,-1365,5763,5764,-2762]],"id":"27043","properties":{"name":"Faribault"}},{"type":"Polygon","arcs":[[5765,-5144,5766,-5549,5767,5768,-3821]],"id":"21193","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[5769,-3346,-3345,3344,5770,5771,5772,5773]],"id":"48037","properties":{"name":"Bowie"}},{"type":"Polygon","arcs":[[-5119,5774,-1428,-45,5775,5776]],"id":"56011","properties":{"name":"Crook"}},{"type":"Polygon","arcs":[[5777,-5192,-4279,5778]],"id":"45061","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[5779,5780,5781,5782,5783,-5717]],"id":"56015","properties":{"name":"Goshen"}},{"type":"MultiPolygon","arcs":[[[5784,-4085]],[[-3659,5785]],[[5786,-3663,5787,-4083,-5540,5788,5789]]],"id":"25021","properties":{"name":"Norfolk"}},{"type":"Polygon","arcs":[[5790,5791,5792,5793,5794,-4064]],"id":"21123","properties":{"name":"Larue"}},{"type":"Polygon","arcs":[[5795,-1528,5796,-5526,5797,5798,5799,-2670]],"id":"16043","properties":{"name":"Fremont"}},{"type":"Polygon","arcs":[[-4004,-774,5800,-61,5801,-4640]],"id":"13233","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[-354,-3199,5802,-4654,-3090,-460,5803,5804,5805]],"id":"31031","properties":{"name":"Cherry"}},{"type":"Polygon","arcs":[[-3992,5806,5807,-3845,5808]],"id":"13247","properties":{"name":"Rockdale"}},{"type":"Polygon","arcs":[[5809,-3089,-5748,5810,5811]],"id":"06025","properties":{"name":"Imperial"}},{"type":"Polygon","arcs":[[-1726,-1246,-5359,-2348,-4190,-5300,5812]],"id":"16017","properties":{"name":"Bonner"}},{"type":"Polygon","arcs":[[5813,5814,5815,-4407,5816]],"id":"18045","properties":{"name":"Fountain"}},{"type":"Polygon","arcs":[[5817,5818,5819,5820,5821,5822,5823]],"id":"47031","properties":{"name":"Coffee"}},{"type":"Polygon","arcs":[[5824,5825,5826,-680,5827,-5821,5828]],"id":"47177","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[5829,-5582,5830,5831,5832,5833,5834,-5142]],"id":"21195","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[5835,5836,5837,-1317,5838,5839]],"id":"21197","properties":{"name":"Powell"}},{"type":"Polygon","arcs":[[-1358,5840,5841,5842]],"id":"26139","properties":{"name":"Ottawa"}},{"type":"Polygon","arcs":[[5843,5844,5845,-1225,5846,5847,5848]],"id":"47165","properties":{"name":"Sumner"}},{"type":"Polygon","arcs":[[5849,5850,5851,5852,5853]],"id":"37153","properties":{"name":"Richmond"}},{"type":"Polygon","arcs":[[-3232,5854,5855,5856,5857]],"id":"48043","properties":{"name":"Brewster"}},{"type":"Polygon","arcs":[[5858,5859,-1478,-826,5860,5861]],"id":"56019","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[5862,5863,5864,-5722,-5753]],"id":"55095","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[-5865,5865,-5698,-5723]],"id":"55109","properties":{"name":"St. Croix"}},{"type":"Polygon","arcs":[[5866,-4025,5867,-4144]],"id":"48111","properties":{"name":"Dallam"}},{"type":"Polygon","arcs":[[5868,-5637,5869,5870,5871,5872]],"id":"42067","properties":{"name":"Juniata"}},{"type":"Polygon","arcs":[[5873,5874,5875,5876,5877,5878,5879]],"id":"18089","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[5880,5881,5882,5883,5884]],"id":"42131","properties":{"name":"Wyoming"}},{"type":"Polygon","arcs":[[5885,5886,-5041,-5457,5887,5888,5889]],"id":"29095","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[5890,5891,-1015,5892,5893]],"id":"42073","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[5894,-1685,5895,-5891,5896,5897]],"id":"42085","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[5898,-5885,5899,5900,-5076,5901,5902]],"id":"42079","properties":{"name":"Luzerne"}},{"type":"Polygon","arcs":[[-3649,-20,-4006,-5533]],"id":"16025","properties":{"name":"Camas"}},{"type":"Polygon","arcs":[[-3565,-297,-3721,5903,-2911,5904]],"id":"19103","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-525,-1864,5905,-709,5906]],"id":"19117","properties":{"name":"Lucas"}},{"type":"Polygon","arcs":[[5907,-739,-3063,5908,5909,5910]],"id":"40151","properties":{"name":"Woods"}},{"type":"Polygon","arcs":[[5911,-5910,5912,5913,5914]],"id":"40153","properties":{"name":"Woodward"}},{"type":"Polygon","arcs":[[-2946,5915,-4252,5916,-4868,-3895,5917]],"id":"35027","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-5286,-4199,-4257,5918,5919]],"id":"38057","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[-4925,-4656,-2947,-5918,-3894,5920]],"id":"35053","properties":{"name":"Socorro"}},{"type":"Polygon","arcs":[[5921,5922,-2566,5923,-5815,5924,-3006]],"id":"18157","properties":{"name":"Tippecanoe"}},{"type":"Polygon","arcs":[[5925,5926,5927,5928,5929,5930]],"id":"21221","properties":{"name":"Trigg"}},{"type":"Polygon","arcs":[[-5852,5931,5932,5933]],"id":"37165","properties":{"name":"Scotland"}},{"type":"Polygon","arcs":[[-2804,-864,-577,5934,5935,5936]],"id":"17055","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-863,5937,-4056,-4294,5938,-579]],"id":"17059","properties":{"name":"Gallatin"}},{"type":"Polygon","arcs":[[-4532,-2174,-5314,-3028,-5179,5939]],"id":"17061","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[-4033,-2748,-3983,-5508,-1270]],"id":"06009","properties":{"name":"Calaveras"}},{"type":"Polygon","arcs":[[5940,-4689,5941,5942,5943,5944]],"id":"45065","properties":{"name":"McCormick"}},{"type":"MultiPolygon","arcs":[[[-4546,5945]],[[-3947,-1071,-4548,5946]]],"id":"45077","properties":{"name":"Pickens"}},{"type":"Polygon","arcs":[[-5451,-2863,-5350,-3392,5947]],"id":"51065","properties":{"name":"Fluvanna"}},{"type":"Polygon","arcs":[[5948,-5779,-4278,-5180,5949,5950]],"id":"45085","properties":{"name":"Sumter"}},{"type":"Polygon","arcs":[[5951,5952,-1553,5953]],"id":"51133","properties":{"name":"Northumberland"}},{"type":"Polygon","arcs":[[5954,-5426,5955,5956,-5760,5957]],"id":"21069","properties":{"name":"Fleming"}},{"type":"Polygon","arcs":[[-435,5958,5959,5960,5961,5962]],"id":"47001","properties":{"name":"Anderson"}},{"type":"Polygon","arcs":[[5963,5964,5965,-1983,-2299]],"id":"30099","properties":{"name":"Teton"}},{"type":"Polygon","arcs":[[-165,5966,5967,5968,-5213]],"id":"35055","properties":{"name":"Taos"}},{"type":"Polygon","arcs":[[-3129,-5307,-896,5969,-2149,-1290]],"id":"18085","properties":{"name":"Kosciusko"}},{"type":"Polygon","arcs":[[5970,-4260,5971,5972,5973]],"id":"38085","properties":{"name":"Sioux"}},{"type":"Polygon","arcs":[[-3489,-4826,5974,5975,5976,5977,5978]],"id":"47027","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-5772,5979,5980,5981,5982]],"id":"48067","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[5983,-5659,5984,-992,5985,-1639,5986]],"id":"23017","properties":{"name":"Oxford"}},{"type":"Polygon","arcs":[[-5761,-5957,5987,5988,5989]],"id":"21011","properties":{"name":"Bath"}},{"type":"Polygon","arcs":[[-4664,-3133,-1206,5990,5991,5992]],"id":"37057","properties":{"name":"Davidson"}},{"type":"Polygon","arcs":[[-5658,-5013,5993,-993,-5985]],"id":"23005","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[5994,-3160,-5463,-5763,-2761,-1965,-4427]],"id":"27013","properties":{"name":"Blue Earth"}},{"type":"Polygon","arcs":[[5995,5996,5997,5998,5999,-4390,-4389,4388,-4389,-4388,4386,-4386,-4385,4384,-4385,4384,-4385,-4384,4382,-4382,-4381,-4380,-4379,4378,-4379,-4378]],"id":"51093","properties":{"name":"Isle of Wight"}},{"type":"Polygon","arcs":[[-5353,6000,6001,6002,-4366,-359,6003,-4586]],"id":"56037","properties":{"name":"Sweetwater"}},{"type":"Polygon","arcs":[[-2346,6004,6005,-4186]],"id":"30061","properties":{"name":"Mineral"}},{"type":"Polygon","arcs":[[6006,6007,6008]],"id":"51685","properties":{"name":"Manassas Park"}},{"type":"Polygon","arcs":[[6009,-4176,-2795,-5691,6010,6011]],"id":"55021","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[6012,-1760,-148,6013]],"id":"72145","properties":{"name":"Vega Baja"}},{"type":"Polygon","arcs":[[6014,6015,-2731,6016,6017,6018]],"id":"46041","properties":{"name":"Dewey"}},{"type":"Polygon","arcs":[[6019,-1409,-5515,6020,6021]],"id":"45005","properties":{"name":"Allendale"}},{"type":"Polygon","arcs":[[6022,-5186,-1488,6023,6024,-4979]],"id":"47059","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[-3863,-3822,-5769,6025,6026,-5316,6027]],"id":"21051","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[6028,-4292,6029,6030,6031,-5503]],"id":"21055","properties":{"name":"Crittenden"}},{"type":"Polygon","arcs":[[6032,6033,-5854,-5082]],"id":"37007","properties":{"name":"Anson"}},{"type":"Polygon","arcs":[[6034,-437,6035,6036,6037,6038]],"id":"47049","properties":{"name":"Fentress"}},{"type":"MultiPolygon","arcs":[[[-5729,6039,6040,6041,6042]],[[6043,6044]]],"id":"21075","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[6045,6046,-5323,6047,6048]],"id":"21019","properties":{"name":"Boyd"}},{"type":"Polygon","arcs":[[-4549,6049,-4690,-5941,6050]],"id":"45001","properties":{"name":"Abbeville"}},{"type":"Polygon","arcs":[[6051,6052,6053,6054,6055,-2786,-5373,6056]],"id":"48149","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-5437,6057,6058,-2093,6059,-498]],"id":"41049","properties":{"name":"Morrow"}},{"type":"Polygon","arcs":[[6060,6061,6062,-5151,-3515]],"id":"42013","properties":{"name":"Blair"}},{"type":"Polygon","arcs":[[6063]],"id":"25019","properties":{"name":"Nantucket"}},{"type":"Polygon","arcs":[[-5181,-4276,6064,-5268,6065]],"id":"45089","properties":{"name":"Williamsburg"}},{"type":"Polygon","arcs":[[-3526,-3237,-3161,-5995,-4426]],"id":"27103","properties":{"name":"Nicollet"}},{"type":"Polygon","arcs":[[6066,6067,-1230,6068,-5577]],"id":"49055","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[6069,-1723,-4361,6070,-3112,-3268,6071]],"id":"48053","properties":{"name":"Burnet"}},{"type":"Polygon","arcs":[[6072,6073,-5598,6074,-1525,-1999]],"id":"30023","properties":{"name":"Deer Lodge"}},{"type":"Polygon","arcs":[[-5597,6075,-1526,-6075]],"id":"30093","properties":{"name":"Silver Bow"}},{"type":"Polygon","arcs":[[-1421,-110,-5075,6076,6077,-4990]],"id":"46135","properties":{"name":"Yankton"}},{"type":"Polygon","arcs":[[-4963,6078,6079,6080,-352,6081]],"id":"46071","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-5977,6082,-6039,6083,6084]],"id":"47133","properties":{"name":"Overton"}},{"type":"Polygon","arcs":[[-5683,6085,6086,-6068,6087]],"id":"49015","properties":{"name":"Emery"}},{"type":"Polygon","arcs":[[6088,-1672,6089,-4637,6090,-3783,6091,-3786,6092]],"id":"48391","properties":{"name":"Refugio"}},{"type":"Polygon","arcs":[[6093,6094,-1224,-3567,-632]],"id":"48357","properties":{"name":"Ochiltree"}},{"type":"Polygon","arcs":[[-4041,6095,-620,-5218,6096,-5226,6097]],"id":"35045","properties":{"name":"San Juan"}},{"type":"Polygon","arcs":[[-1279,6098,6099,6100,6101,-3547,6102]],"id":"05063","properties":{"name":"Independence"}},{"type":"Polygon","arcs":[[6103,-5111,-3559,-1586,6104,6105,-2275]],"id":"29029","properties":{"name":"Camden"}},{"type":"Polygon","arcs":[[6106,-5259,6107,-4328,-2740]],"id":"38067","properties":{"name":"Pembina"}},{"type":"Polygon","arcs":[[-6101,6108,6109,-3980,-611,-4806,6110]],"id":"05067","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-104,6111,6112,-4969,-5072,-108]],"id":"46083","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-6041,6113,6114,-1394,-5756,6115]],"id":"47131","properties":{"name":"Obion"}},{"type":"Polygon","arcs":[[6116,-4282,6117,6118,6119,6120,6121]],"id":"45003","properties":{"name":"Aiken"}},{"type":"Polygon","arcs":[[6122,-3524,6123,6124]],"id":"41003","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[6125,-6124,-3523,6126,6127,6128,6129]],"id":"41039","properties":{"name":"Lane"}},{"type":"Polygon","arcs":[[6130,6131,6132,6133,6134,-4603,-5714]],"id":"51097","properties":{"name":"King and Queen"}},{"type":"Polygon","arcs":[[6135,6136,-5731,6137,6138]],"id":"29201","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[-4634,6139,6140,6141,6142]],"id":"48321","properties":{"name":"Matagorda"}},{"type":"Polygon","arcs":[[-1097,6143,6144,-248,6145]],"id":"48447","properties":{"name":"Throckmorton"}},{"type":"Polygon","arcs":[[6146,-443,6147,6148]],"id":"55129","properties":{"name":"Washburn"}},{"type":"Polygon","arcs":[[6149,-5578,-6069,-1229,6150,6151]],"id":"49017","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[6152,-5433,-3643,6153,-2531]],"id":"31055","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[6154,6155]],"id":"51520","properties":{"name":"Bristol"}},{"type":"Polygon","arcs":[[6156,-32,6157,-35,-3406]],"id":"38097","properties":{"name":"Traill"}},{"type":"Polygon","arcs":[[-3354,-3360,6158,6159,-1951,6160]],"id":"05069","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[6161,6162,6163,-6109,-6100,6164]],"id":"05075","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-5168,6165]],"id":"51570","properties":{"name":"Colonial Heights"}},{"type":"Polygon","arcs":[[6166,6167,6168,6169,6170]],"id":"48001","properties":{"name":"Anderson"}},{"type":"Polygon","arcs":[[6171,-5513,-3479,6172,-5727]],"id":"21039","properties":{"name":"Carlisle"}},{"type":"Polygon","arcs":[[-4309,6173,-5601,6174,6175,6176]],"id":"47009","properties":{"name":"Blount"}},{"type":"Polygon","arcs":[[6177,6178,-1406,6179,-5188,-1467,-1396]],"id":"47017","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[-3483,6180,6181,-1400,-6179,6182]],"id":"47079","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[6183,6184,6185,6186,6187,-5334]],"id":"25013","properties":{"name":"Hampden"}},{"type":"Polygon","arcs":[[-3615,-1594,-5095,6188,-5454,-5039]],"id":"29033","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[6189,6190,-6057,-5372,6191,6192]],"id":"48055","properties":{"name":"Caldwell"}},{"type":"Polygon","arcs":[[6193,-5281,6194,6195]],"id":"50021","properties":{"name":"Rutland"}},{"type":"Polygon","arcs":[[-3538,6196,6197,6198,6199,-3521]],"id":"41031","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[6200,-2447,-4933,6201,6202,6203]],"id":"51185","properties":{"name":"Tazewell"}},{"type":"Polygon","arcs":[[6204,-3763,6205,6206,6207]],"id":"51043","properties":{"name":"Clarke"}},{"type":"Polygon","arcs":[[6208,6209,-4172]],"id":"72149","properties":{"name":"Villalba"}},{"type":"Polygon","arcs":[[6210,6211,6212,-1766,6213]],"id":"12067","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[-374,-1139,-1327,6214,-2894]],"id":"20205","properties":{"name":"Wilson"}},{"type":"Polygon","arcs":[[-1188,-5547,6215,-3227]],"id":"17047","properties":{"name":"Edwards"}},{"type":"Polygon","arcs":[[-1644,-2742,-4331,-402,6216]],"id":"38071","properties":{"name":"Ramsey"}},{"type":"Polygon","arcs":[[-6076,-5596,-5527,-5797,-1527]],"id":"30057","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-5271,6217,6218,6219,6220,-4854]],"id":"29005","properties":{"name":"Atchison"}},{"type":"Polygon","arcs":[[6221,6222,6223,6224,6225,-3590,6226]],"id":"51083","properties":{"name":"Halifax"}},{"type":"Polygon","arcs":[[6227,6228,6229,-3134,6230]],"id":"51013","properties":{"name":"Arlington"}},{"type":"MultiPolygon","arcs":[[[6231]],[[6232,-4159,-2483,6233,6234]],[[6235]]],"id":"53057","properties":{"name":"Skagit"}},{"type":"Polygon","arcs":[[6236,-3741,6237,-720,6238,6239,6240,-5114]],"id":"30025","properties":{"name":"Fallon"}},{"type":"Polygon","arcs":[[6241,6242,6243,-5997,6244,6245]],"id":"51181","properties":{"name":"Surry"}},{"type":"Polygon","arcs":[[6246,6247,6248,-4728]],"id":"53071","properties":{"name":"Walla Walla"}},{"type":"Polygon","arcs":[[6249,6250,6251,6252,6253,-771]],"id":"13057","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[6254,6255,6256,6257,6258]],"id":"27149","properties":{"name":"Stevens"}},{"type":"Polygon","arcs":[[-2896,6259,6260,6261,6262]],"id":"20019","properties":{"name":"Chautauqua"}},{"type":"Polygon","arcs":[[6263,6264,6265,-1702,-3881,6266]],"id":"29075","properties":{"name":"Gentry"}},{"type":"Polygon","arcs":[[6267,6268,-6207,6269,-2397,6270]],"id":"51187","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[-1863,-1242,-291,-4817,-5906]],"id":"19135","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[6271,6272,-1417,6273,-1914]],"id":"48325","properties":{"name":"Medina"}},{"type":"Polygon","arcs":[[-4621,6274,-3882,-2459,6275,6276]],"id":"29021","properties":{"name":"Buchanan"}},{"type":"Polygon","arcs":[[-5115,-6241,6277,-1424,-5775,-5118]],"id":"30011","properties":{"name":"Carter"}},{"type":"Polygon","arcs":[[6278,6279,-2642,-3409,6280,6281]],"id":"26055","properties":{"name":"Grand Traverse"}},{"type":"Polygon","arcs":[[6282,-4218,-4793,-4947,6283,6284,6285]],"id":"28141","properties":{"name":"Tishomingo"}},{"type":"Polygon","arcs":[[6286,-4926,-5921,-3898,-3753,-4801]],"id":"35003","properties":{"name":"Catron"}},{"type":"Polygon","arcs":[[6287,-3517,-5154,-329,-5398,6288]],"id":"42111","properties":{"name":"Somerset"}},{"type":"Polygon","arcs":[[-366,6289,6290,6291,6292,6293]],"id":"36109","properties":{"name":"Tompkins"}},{"type":"Polygon","arcs":[[-3709,6294,6295,6296]],"id":"36067","properties":{"name":"Onondaga"}},{"type":"Polygon","arcs":[[-5201,6297,6298,6299,-5265,6300]],"id":"45051","properties":{"name":"Horry"}},{"type":"Polygon","arcs":[[6301,6302,6303,-751]],"id":"30041","properties":{"name":"Hill"}},{"type":"Polygon","arcs":[[6304,6305,6306,-2876,-48]],"id":"36001","properties":{"name":"Albany"}},{"type":"Polygon","arcs":[[-517,6307,-6253,6308,6309,-3995,6310,6311,-643,6312]],"id":"13121","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[-5700,6313,6314,6315,6316,6317]],"id":"55091","properties":{"name":"Pepin"}},{"type":"Polygon","arcs":[[6318,-3383,6319,6320,6321]],"id":"01105","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-2809,6322,-2416]],"id":"02090","properties":{"name":"Fairbanks North Star"}},{"type":"Polygon","arcs":[[6323,6324,6325,6326]],"id":"13125","properties":{"name":"Glascock"}},{"type":"Polygon","arcs":[[-944,6327,-2326,6328,-2831]],"id":"48173","properties":{"name":"Glasscock"}},{"type":"Polygon","arcs":[[-1504,-1502,1501,1502,-1502,-1501,6329,-5351,-4584,-4079,6330,-5798,-5525]],"id":"56039","properties":{"name":"Teton"}},{"type":"MultiPolygon","arcs":[[[-4394,6331]],[[6332,6333,6334,6335,6336,6337,-4399,6338,6339]]],"id":"08059","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[6340,-2155,6341]],"id":"08029","properties":{"name":"Delta"}},{"type":"Polygon","arcs":[[-3994,6342,6343,6344,-6311]],"id":"13063","properties":{"name":"Clayton"}},{"type":"Polygon","arcs":[[-74,6345,-4463,6346,6347]],"id":"18117","properties":{"name":"Orange"}},{"type":"MultiPolygon","arcs":[[[6348]],[[6349]],[[6350]],[[-3733,6351]]],"id":"36103","properties":{"name":"Suffolk"}},{"type":"MultiPolygon","arcs":[[[6352]],[[-4517,6353,-3705,6354]],[[6355]]],"id":"36045","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-4074,6356,6357,6358,-1798]],"id":"20107","properties":{"name":"Linn"}},{"type":"Polygon","arcs":[[6359,6360,6361,-3910,6362,6363,-4707,6364]],"id":"37161","properties":{"name":"Rutherford"}},{"type":"Polygon","arcs":[[6365,6366,6367,-4562,-4985,-5733]],"id":"34041","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[6368,6369,-5579,-6150,6370,-4494]],"id":"49001","properties":{"name":"Beaver"}},{"type":"Polygon","arcs":[[6371,6372,-4737,6373,-6155,6374,-1632,6375]],"id":"51191","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-4945,-4642,6376,6377,-4162]],"id":"01015","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[6378,6379,6380,6381,6382,-1772]],"id":"13133","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[6383,6384,6385,6386]],"id":"54009","properties":{"name":"Brooke"}},{"type":"MultiPolygon","arcs":[[[6387]],[[6388]],[[-2072,6389,-4953]],[[6390]],[[6391,-4955]]],"id":"02070","properties":{"name":"Dillingham"}},{"type":"Polygon","arcs":[[-3087,6392,-3830,-5745,-4794,-5749]],"id":"04013","properties":{"name":"Maricopa"}},{"type":"Polygon","arcs":[[-4881,6393,6394,6395,6396]],"id":"18125","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-3855,-2850,6397,-4504,6398,6399,-77]],"id":"18137","properties":{"name":"Ripley"}},{"type":"Polygon","arcs":[[-2525,6400,-4784,-5421,6401,-736]],"id":"20095","properties":{"name":"Kingman"}},{"type":"Polygon","arcs":[[6402,-1550,6403,6404,6405]],"id":"20123","properties":{"name":"Mitchell"}},{"type":"Polygon","arcs":[[-1570,6406,-780,-1044,-3097,6407]],"id":"20083","properties":{"name":"Hodgeman"}},{"type":"Polygon","arcs":[[-3120,6408,-2553,-1125,-659,6409]],"id":"20127","properties":{"name":"Morris"}},{"type":"Polygon","arcs":[[-1789,6410,-668,6411,-1377,6412,6413]],"id":"27095","properties":{"name":"Mille Lacs"}},{"type":"Polygon","arcs":[[-5667,6414,6415,6416,-89,6417]],"id":"28081","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[6418,6419,-5669,6420,-455,6421,6422]],"id":"28071","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[6423,6424,6425,6426,-4243,-4520]],"id":"28029","properties":{"name":"Copiah"}},{"type":"Polygon","arcs":[[6427,6428,6429,6430,-450,6431]],"id":"28111","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-4330,6432,-33,-6157,-3405,-397]],"id":"38035","properties":{"name":"Grand Forks"}},{"type":"Polygon","arcs":[[6433,6434,6435,-5236,-5196]],"id":"42045","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[6436,6437,6438,6439,6440]],"id":"44003","properties":{"name":"Kent"}},{"type":"Polygon","arcs":[[6441,-5905,-2910,-3568,-1870]],"id":"19095","properties":{"name":"Iowa"}},{"type":"Polygon","arcs":[[-1063,6442,-5434,-6153,-2530,6443,-5519]],"id":"31053","properties":{"name":"Dodge"}},{"type":"Polygon","arcs":[[-334,6444,6445,-5399]],"id":"54057","properties":{"name":"Mineral"}},{"type":"Polygon","arcs":[[6446,-4808,-3842,6447,-3358]],"id":"05117","properties":{"name":"Prairie"}},{"type":"Polygon","arcs":[[-5747,6448,-4804,6449,-4796,-5744,-3828]],"id":"04009","properties":{"name":"Graham"}},{"type":"Polygon","arcs":[[-474,6450,6451,6452,6453,6454,6455,6456]],"id":"08049","properties":{"name":"Grand"}},{"type":"Polygon","arcs":[[6457,6458,6459,6460,6461,-3299,-1859,-4764,6462]],"id":"08109","properties":{"name":"Saguache"}},{"type":"Polygon","arcs":[[6463,6464,-3213,-1837,-623,6465]],"id":"12093","properties":{"name":"Okeechobee"}},{"type":"Polygon","arcs":[[-2140,6466,6467,6468,-4044]],"id":"13123","properties":{"name":"Gilmer"}},{"type":"Polygon","arcs":[[-3431,6469,6470,6471,-5212,6472,6473,-3201]],"id":"13299","properties":{"name":"Ware"}},{"type":"Polygon","arcs":[[6474,-5443,-5174,-4429,-5338,6475,6476]],"id":"29007","properties":{"name":"Audrain"}},{"type":"Polygon","arcs":[[-5216,6477,6478,6479,6480]],"id":"35028","properties":{"name":"Los Alamos"}},{"type":"Polygon","arcs":[[6481,6482,-4575,-2565,-3580,-1473,-1532,-5705]],"id":"30027","properties":{"name":"Fergus"}},{"type":"Polygon","arcs":[[6483,-5379,6484,-4652]],"id":"31149","properties":{"name":"Rock"}},{"type":"Polygon","arcs":[[6485,6486,-5288,6487,6488,-5466]],"id":"38061","properties":{"name":"Mountrail"}},{"type":"Polygon","arcs":[[6489,6490,6491,-1337,6492,-4290,-4054]],"id":"21101","properties":{"name":"Henderson"}},{"type":"Polygon","arcs":[[6493,-5789,-5544,6494,6495,-6437,6496]],"id":"44007","properties":{"name":"Providence"}},{"type":"Polygon","arcs":[[6497,-3943,6498,6499,-5959,-434]],"id":"47013","properties":{"name":"Campbell"}},{"type":"MultiPolygon","arcs":[[[6500,6501,6502,6503]],[[6504,6505,6506,6507,-131]]],"id":"48261","properties":{"name":"Kenedy"}},{"type":"Polygon","arcs":[[6508,-4121,6509,6510,-2923,6511]],"id":"36051","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[6512,-3967,6513,6514,6515,6516]],"id":"54011","properties":{"name":"Cabell"}},{"type":"Polygon","arcs":[[6517,6518,6519,-3987,6520,-2220]],"id":"06007","properties":{"name":"Butte"}},{"type":"Polygon","arcs":[[-6455,6521,6522,6523,6524]],"id":"08117","properties":{"name":"Summit"}},{"type":"Polygon","arcs":[[6525,6526,-4551,6527,-1918]],"id":"13147","properties":{"name":"Hart"}},{"type":"Polygon","arcs":[[-5386,-1818,-4115,-3217,6528]],"id":"17187","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[6529,6530,6531,-3449,6532]],"id":"18119","properties":{"name":"Owen"}},{"type":"Polygon","arcs":[[6533,6534,-6347,-4468,-4876,6535,6536,-6395]],"id":"18037","properties":{"name":"Dubois"}},{"type":"Polygon","arcs":[[-2189,6537,6538,6539,-1568]],"id":"20165","properties":{"name":"Rush"}},{"type":"Polygon","arcs":[[-225,-1036,-3566,-6442,6540]],"id":"19011","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[6541,-4683,-3864,-6028,-5315,-3939,6542]],"id":"21125","properties":{"name":"Laurel"}},{"type":"Polygon","arcs":[[6543,6544,6545,6546,-2523,-782]],"id":"20185","properties":{"name":"Stafford"}},{"type":"Polygon","arcs":[[-5736,6547,6548,6549,6550,6551]],"id":"22115","properties":{"name":"Vernon"}},{"type":"Polygon","arcs":[[6552,6553,6554,-1615,-2704,-5415]],"id":"26093","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[-3167,-3147,-3311,6555,-476,-2806,6556,-1362]],"id":"27099","properties":{"name":"Mower"}},{"type":"Polygon","arcs":[[-2629,6557,6558,6559,6560]],"id":"28073","properties":{"name":"Lamar"}},{"type":"Polygon","arcs":[[6561,6562,6563,6564,6565,6566]],"id":"28053","properties":{"name":"Humphreys"}},{"type":"Polygon","arcs":[[6567,6568,-1664,6569,-670]],"id":"31139","properties":{"name":"Pierce"}},{"type":"Polygon","arcs":[[6570,6571,-5571,6572,-1318,-5838]],"id":"21237","properties":{"name":"Wolfe"}},{"type":"Polygon","arcs":[[6573,-5127,6574,-5927,6575,-6031]],"id":"21033","properties":{"name":"Caldwell"}},{"type":"Polygon","arcs":[[-1427,-3768,6576,6577,-4961,-42]],"id":"46093","properties":{"name":"Meade"}},{"type":"Polygon","arcs":[[6578,6579,6580,6581,6582,6583,-4696,6584]],"id":"21021","properties":{"name":"Boyle"}},{"type":"Polygon","arcs":[[6585,-4713,6586,6587,6588]],"id":"37199","properties":{"name":"Yancey"}},{"type":"Polygon","arcs":[[-6320,-3382,6589,-2769,6590,6591]],"id":"01047","properties":{"name":"Dallas"}},{"type":"Polygon","arcs":[[6592,-2626,6593,-218]],"id":"13231","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-878,6594,6595,6596]],"id":"01035","properties":{"name":"Conecuh"}},{"type":"Polygon","arcs":[[-3466,6597,-3356,-2540,6598,6599]],"id":"05105","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-6468,6600,-6250,6601]],"id":"13227","properties":{"name":"Pickens"}},{"type":"Polygon","arcs":[[6602,-6382,6603,6604,-6327,6605,6606]],"id":"13141","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[6607,-200,6608,6609,6610]],"id":"13307","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[6611,-4231,6612,-3075,6613,6614]],"id":"18095","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-3451,-75,-6348,-6535,6615]],"id":"18101","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[-2254,-379,-1571,-6408,-3100,6616,6617]],"id":"20055","properties":{"name":"Finney"}},{"type":"Polygon","arcs":[[-2207,6618,6619,6620,6621]],"id":"20087","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-3469,6622,6623,-5922,-3005,6624]],"id":"18181","properties":{"name":"White"}},{"type":"Polygon","arcs":[[-4698,6625,-4684,-6542,6626,-4296,6627]],"id":"21199","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[-5479,-5276,-5312,-4530,6628]],"id":"17009","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[6629,6630,6631,6632,6633,6634,6635]],"id":"22021","properties":{"name":"Caldwell"}},{"type":"Polygon","arcs":[[-5888,-5456,-1990,6636,6637]],"id":"29101","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-4241,6638,6639,6640,6641]],"id":"29017","properties":{"name":"Bollinger"}},{"type":"Polygon","arcs":[[-2323,6642,6643,6644,6645,6646]],"id":"29035","properties":{"name":"Carter"}},{"type":"Polygon","arcs":[[-971,-2534,6647,-4856,6648,-2616]],"id":"31109","properties":{"name":"Lancaster"}},{"type":"Polygon","arcs":[[6649,6650,6651,6652,-4564]],"id":"34035","properties":{"name":"Somerset"}},{"type":"Polygon","arcs":[[6653,-6512,-2922,6654,6655]],"id":"36121","properties":{"name":"Wyoming"}},{"type":"Polygon","arcs":[[6656,-367,-6294,6657,6658]],"id":"36097","properties":{"name":"Schuyler"}},{"type":"Polygon","arcs":[[6659,6660,6661,6662,-1886]],"id":"39091","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[6663,-1811,-1934,6664,6665,6666,-6662]],"id":"39159","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-5050,-3173,6667,-3513,6668]],"id":"42063","properties":{"name":"Indiana"}},{"type":"Polygon","arcs":[[-4065,-5795,6669,-5740,6670,-2842,6671]],"id":"21099","properties":{"name":"Hart"}},{"type":"Polygon","arcs":[[-1339,6672,-4693,-4288,6673,6674,6675]],"id":"21183","properties":{"name":"Ohio"}},{"type":"Polygon","arcs":[[6676,6677,-2519,-2728,-6016,6678]],"id":"46129","properties":{"name":"Walworth"}},{"type":"Polygon","arcs":[[-5065,6679,-4977,-5599,6680]],"id":"47089","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[6681,6682,6683,6684,-5758,6685,-804]],"id":"21097","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[-5600,-5059,6686,6687,6688,-6175]],"id":"37173","properties":{"name":"Swain"}},{"type":"Polygon","arcs":[[6689,-2364,6690,-3110,6691,6692,6693,6694,6695,6696,-6697,6696,6697,6698,6699,6700,6701,6702,6703,-2368,6704]],"id":"48499","properties":{"name":"Wood"}},{"type":"Polygon","arcs":[[6705,6706,6707,6708,6709,6710]],"id":"37091","properties":{"name":"Hertford"}},{"type":"Polygon","arcs":[[-832,6711,-4212,-5430,-4149,6712,6713]],"id":"48291","properties":{"name":"Liberty"}},{"type":"Polygon","arcs":[[6714,6715,-80,-4413,6716,-72,6717]],"id":"18071","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-6540,6718,-6544,-781,-6407,-1569]],"id":"20145","properties":{"name":"Pawnee"}},{"type":"Polygon","arcs":[[-2556,-3320,-1258,-1800,-1137,-372]],"id":"20031","properties":{"name":"Coffey"}},{"type":"Polygon","arcs":[[-852,6719,6720,-4828,-3871]],"id":"22055","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[6721,-2133,-1389,-6255,6722]],"id":"27051","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[6723,-2963,6724,6725,6726]],"id":"28121","properties":{"name":"Rankin"}},{"type":"Polygon","arcs":[[6727,6728,-6727,-6425,6729,-3700]],"id":"28049","properties":{"name":"Hinds"}},{"type":"Polygon","arcs":[[6730,6731,6732,-4671,6733,6734]],"id":"37051","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[6735,6736,6737,6738,-1311,-2968,-1973,-4192]],"id":"37193","properties":{"name":"Wilkes"}},{"type":"Polygon","arcs":[[-1902,6739,6740,-6660,-1885,6741]],"id":"39011","properties":{"name":"Auglaize"}},{"type":"Polygon","arcs":[[6742,6743,6744,6745,6746,6747,-3922]],"id":"40125","properties":{"name":"Pottawatomie"}},{"type":"Polygon","arcs":[[6748,-4270,6749,6750,6751,6752]],"id":"40091","properties":{"name":"McIntosh"}},{"type":"Polygon","arcs":[[6753,6754,-3535,6755,6756]],"id":"41071","properties":{"name":"Yamhill"}},{"type":"Polygon","arcs":[[-5079,-5734,-4983,6757,6758,6759]],"id":"42077","properties":{"name":"Lehigh"}},{"type":"Polygon","arcs":[[-5793,6760,-4701,6761,6762]],"id":"21217","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[-4417,-2843,-6671,-5743,-3486,6763]],"id":"21009","properties":{"name":"Barren"}},{"type":"Polygon","arcs":[[-6071,-4365,6764,-6190,6765,-3113]],"id":"48453","properties":{"name":"Travis"}},{"type":"Polygon","arcs":[[-115,-833,-6714,6766,6767,6768]],"id":"48339","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[6769,-470,-2327,-6328,-943]],"id":"48227","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[6770,-5834,6771,6772,-1630,6773,-5551],[-3957]],"id":"51195","properties":{"name":"Wise"}},{"type":"Polygon","arcs":[[6774]],"id":"51840","properties":{"name":"Winchester"}},{"type":"Polygon","arcs":[[-4266,6775,-948,6776,-96]],"id":"39139","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[-6726,6777,6778,-2627,6779,-6426]],"id":"28127","properties":{"name":"Simpson"}},{"type":"Polygon","arcs":[[6780,-6476,-5341,6781,6782,-1542,6783]],"id":"29019","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[-752,-6304,6784,-6482,-5704,6785,-5965,6786]],"id":"30015","properties":{"name":"Chouteau"}},{"type":"Polygon","arcs":[[6787,-927,-3407,-387,-1970,-4650]],"id":"31081","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-6480,6788,-6478,-5215,6789,-4662,-2943,6790,6791]],"id":"35049","properties":{"name":"Santa Fe"}},{"type":"Polygon","arcs":[[6792,-5383,-4669,6793,6794,-4672,-6733]],"id":"37163","properties":{"name":"Sampson"}},{"type":"Polygon","arcs":[[6795,-2783,-4271,-6749,6796,6797,-6745]],"id":"40107","properties":{"name":"Okfuskee"}},{"type":"Polygon","arcs":[[6798,6799,6800,-1391,6801,-3061]],"id":"40047","properties":{"name":"Garfield"}},{"type":"Polygon","arcs":[[-5989,6802,6803,-6571,-5837,6804]],"id":"21165","properties":{"name":"Menifee"}},{"type":"Polygon","arcs":[[-5214,-5969,6805,6806,-4658,-6790]],"id":"35033","properties":{"name":"Mora"}},{"type":"Polygon","arcs":[[-6570,-1660,6807,-4617,-671]],"id":"31119","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-236,6808,-923,-6788,-4649,-792]],"id":"31121","properties":{"name":"Merrick"}},{"type":"Polygon","arcs":[[-3522,-6200,6809,-4356,-4125,6810,-6127]],"id":"41017","properties":{"name":"Deschutes"}},{"type":"Polygon","arcs":[[-4359,6811,6812,6813,6814,6815,6816]],"id":"32013","properties":{"name":"Humboldt"}},{"type":"Polygon","arcs":[[6817,6818,6819,6820,6821]],"id":"42117","properties":{"name":"Tioga"}},{"type":"Polygon","arcs":[[-6675,6822,-2845,-4421,6823,6824]],"id":"21031","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[-4466,6825,-4059,-4286,-4877]],"id":"21163","properties":{"name":"Meade"}},{"type":"Polygon","arcs":[[-6584,-6583,-6582,6826,-4685,-6626,-4697]],"id":"21137","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-5317,-6027,6827,-5553,6828,6829,-3941]],"id":"21013","properties":{"name":"Bell"}},{"type":"Polygon","arcs":[[-3124,6830,6831,-802,-2771,-4786]],"id":"21187","properties":{"name":"Owen"}},{"type":"Polygon","arcs":[[6832,6833,-3952]],"id":"37137","properties":{"name":"Pamlico"}},{"type":"Polygon","arcs":[[6834,6835,6836,6837,6838,6839]],"id":"37187","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[6840,6841,6842,6843,6844]],"id":"54015","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[6845,-5121,6846,-5859,6847]],"id":"56033","properties":{"name":"Sheridan"}},{"type":"Polygon","arcs":[[6848,-146,6849,6850,6851]],"id":"72137","properties":{"name":"Toa Baja"}},{"type":"Polygon","arcs":[[-5009,6852,-2118,-3330,6853,-4347]],"id":"72125","properties":{"name":"San Germán"}},{"type":"Polygon","arcs":[[6854,-4914,6855,6856,6857]],"id":"42103","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[6858,6859,-6831,-3123,6860]],"id":"21077","properties":{"name":"Gallatin"}},{"type":"Polygon","arcs":[[-1204,-5565,6861,6862,-6731,6863,-5851,6864]],"id":"37125","properties":{"name":"Moore"}},{"type":"Polygon","arcs":[[-5933,6865,-6734,-4675,6866,-5200,6867]],"id":"37155","properties":{"name":"Robeson"}},{"type":"Polygon","arcs":[[-4364,6868,-6052,-6191,-6765]],"id":"48021","properties":{"name":"Bastrop"}},{"type":"Polygon","arcs":[[6869,6870,6871,-830,-113]],"id":"48455","properties":{"name":"Trinity"}},{"type":"Polygon","arcs":[[6872,6873,6874,-3047,-4663,-1307,-6739,6875]],"id":"37171","properties":{"name":"Surry"}},{"type":"Polygon","arcs":[[6876,6877,-5464,6878]],"id":"38023","properties":{"name":"Divide"}},{"type":"Polygon","arcs":[[-4183,6879,6880,6881,6882,6883,-2470]],"id":"72119","properties":{"name":"Río Grande"}},{"type":"Polygon","arcs":[[-1408,6884,-5089,-4893,6885,-4975,-5516]],"id":"45029","properties":{"name":"Colleton"}},{"type":"Polygon","arcs":[[-3505,6886,6887,-5825,6888,6889]],"id":"47041","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[-4315,-964,-690,-1720,-1129,6890]],"id":"48309","properties":{"name":"McLennan"}},{"type":"Polygon","arcs":[[-3954,6891,-2450,-4305]],"id":"37031","properties":{"name":"Carteret"}},{"type":"Polygon","arcs":[[-5022,6892,-1714,6893,-2590,-2317]],"id":"48307","properties":{"name":"McCulloch"}},{"type":"Polygon","arcs":[[-3140,6894,6895,-1083,6896,6897]],"id":"39171","properties":{"name":"Williams"}},{"type":"Polygon","arcs":[[6898,6899,6900,6901,6902,6903,6904,-6142]],"id":"48039","properties":{"name":"Brazoria"}},{"type":"Polygon","arcs":[[-1924,-841,6905,6906,-4934,6907,6908]],"id":"39013","properties":{"name":"Belmont"}},{"type":"Polygon","arcs":[[6909,6910,6911,6912,6913,6914]],"id":"39071","properties":{"name":"Highland"}},{"type":"Polygon","arcs":[[-3719,6915,-3225,6916,-796,6917]],"id":"39173","properties":{"name":"Wood"}},{"type":"Polygon","arcs":[[6918,6919,-874,6920,6921,6922]],"id":"55015","properties":{"name":"Calumet"}},{"type":"Polygon","arcs":[[6923,6924,6925,-5873,6926]],"id":"42087","properties":{"name":"Mifflin"}},{"type":"Polygon","arcs":[[6927,-5915,6928,6929,-2619,-1221,6930]],"id":"40045","properties":{"name":"Ellis"}},{"type":"Polygon","arcs":[[6931,6932,-2243,6933,6934,6935,-6080]],"id":"46075","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[-5929,6936,6937,-4628,-1401,-6182,6938]],"id":"47161","properties":{"name":"Stewart"}},{"type":"Polygon","arcs":[[6939,6940,6941,-2870,-1022]],"id":"48017","properties":{"name":"Bailey"}},{"type":"MultiPolygon","arcs":[[[6942,6943,-957,-4175,6944,6945]]],"id":"72113","properties":{"name":"Ponce"}},{"type":"Polygon","arcs":[[6946,-1941,6947,6948,6949,6950]],"id":"40065","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-1069,6951,-3936,6952,-4686,-6050]],"id":"45059","properties":{"name":"Laurens"}},{"type":"Polygon","arcs":[[6953,6954,-3764,-1425,-6278,-6240]],"id":"46063","properties":{"name":"Harding"}},{"type":"Polygon","arcs":[[6955,6956,6957,6958,6959]],"id":"54105","properties":{"name":"Wirt"}},{"type":"Polygon","arcs":[[6960,6961,-6919,6962,-835]],"id":"55087","properties":{"name":"Outagamie"}},{"type":"Polygon","arcs":[[-4261,-5971,6963,-3305,6964]],"id":"38037","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[6965,-4355,6966,6967]],"id":"41007","properties":{"name":"Clatsop"}},{"type":"Polygon","arcs":[[6968,-5902,-5080,-6760,6969,-239,6970,-5635]],"id":"42107","properties":{"name":"Schuylkill"}},{"type":"Polygon","arcs":[[-6821,6971,6972,6973,6974,-5632,6975,6976,6977]],"id":"42081","properties":{"name":"Lycoming"}},{"type":"MultiPolygon","arcs":[[[6978,6979]],[[-6888,6980,6981,6982,-5826]]],"id":"47185","properties":{"name":"White"}},{"type":"Polygon","arcs":[[6983,6984,6985,6986,-6316]],"id":"55011","properties":{"name":"Buffalo"}},{"type":"Polygon","arcs":[[6987]],"id":"69110","properties":{"name":"Saipan"}},{"type":"Polygon","arcs":[[-6854,-3329,6988,6989,-4348]],"id":"72079","properties":{"name":"Lajas"}},{"type":"Polygon","arcs":[[6990,6991,6992,6993,6994,6995,6996]],"id":"72131","properties":{"name":"San Sebastián"}},{"type":"Polygon","arcs":[[6997,-4107,6998,6999,-6094,-631,-4024,7000]],"id":"40139","properties":{"name":"Texas"}},{"type":"Polygon","arcs":[[-6974,7001,-5903,-6969,-5634,7002]],"id":"42037","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[-5973,7003,7004,-6679,-6015,7005,-3766]],"id":"46031","properties":{"name":"Corson"}},{"type":"Polygon","arcs":[[-6169,7006,7007,-6870,-112,-2387,7008]],"id":"48225","properties":{"name":"Houston"}},{"type":"Polygon","arcs":[[-6894,-1713,7009,7010,-6072,-3267,-2591]],"id":"48411","properties":{"name":"San Saba"}},{"type":"Polygon","arcs":[[-4320,7011,7012,7013,-6243,7014,7015]],"id":"51036","properties":{"name":"Charles City"}},{"type":"Polygon","arcs":[[7016,-6271,-2401,7017,-2407,7018]],"id":"51139","properties":{"name":"Page"}},{"type":"Polygon","arcs":[[-2241,-630,7019,-3198,7020]],"id":"46123","properties":{"name":"Tripp"}},{"type":"Polygon","arcs":[[-3233,-5858,7021]],"id":"48377","properties":{"name":"Presidio"}},{"type":"Polygon","arcs":[[-6371,-6152,7022,7023,-4495]],"id":"49021","properties":{"name":"Iron"}},{"type":"Polygon","arcs":[[7024,7025,-1749,7026,7027]],"id":"48347","properties":{"name":"Nacogdoches"}},{"type":"Polygon","arcs":[[7028,7029,7030,7031,7032,7033,-6054]],"id":"48477","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-3374,-4051,-5357,7034,7035,7036]],"id":"49003","properties":{"name":"Box Elder"}},{"type":"Polygon","arcs":[[7037,7038,7039,-261,7040]],"id":"48097","properties":{"name":"Cooke"}},{"type":"Polygon","arcs":[[7041,-6950,7042,7043,-1095,-5007]],"id":"48487","properties":{"name":"Wilbarger"}},{"type":"Polygon","arcs":[[-962,7044,-6170,-7009,-2386,7045]],"id":"48289","properties":{"name":"Leon"}},{"type":"Polygon","arcs":[[-1930,-5375,7046,-1669,7047,7048,-1413]],"id":"48255","properties":{"name":"Karnes"}},{"type":"Polygon","arcs":[[-4932,7049,-3613,7050,7051,-6202]],"id":"51021","properties":{"name":"Bland"}},{"type":"Polygon","arcs":[[7052,7053,-6246,7054,7055]],"id":"51183","properties":{"name":"Sussex"}},{"type":"Polygon","arcs":[[7056,-5472,7057,7058,7059]],"id":"51111","properties":{"name":"Lunenburg"}},{"type":"Polygon","arcs":[[7060,-3058,7061,-6842,7062,-6957]],"id":"54013","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[7063,-2448,-6201,7064,7065,-5832]],"id":"51027","properties":{"name":"Buchanan"}},{"type":"Polygon","arcs":[[7066,-7060,7067,7068,-3824,7069,-6225]],"id":"51117","properties":{"name":"Mecklenburg"}},{"type":"Polygon","arcs":[[-6686,-5762,7070,7071,7072,-805]],"id":"21017","properties":{"name":"Bourbon"}},{"type":"Polygon","arcs":[[-22,-3648,-3370,-4478]],"id":"16067","properties":{"name":"Minidoka"}},{"type":"Polygon","arcs":[[7073,-6876,-6738,7074]],"id":"37005","properties":{"name":"Alleghany"}},{"type":"Polygon","arcs":[[-3395,7075,7076,7077,7078,-5470]],"id":"51007","properties":{"name":"Amelia"}},{"type":"Polygon","arcs":[[7079,-5106,7080,-2283,7081,-6133]],"id":"51073","properties":{"name":"Gloucester"}},{"type":"Polygon","arcs":[[7082,-6268,-7017,7083,7084]],"id":"51171","properties":{"name":"Shenandoah"}},{"type":"Polygon","arcs":[[-5833,-7066,7085,-6772]],"id":"51051","properties":{"name":"Dickenson"}},{"type":"Polygon","arcs":[[7086,7087,7088,-958,-6944,7089,7090]],"id":"72141","properties":{"name":"Utuado"}},{"type":"Polygon","arcs":[[7091,-6148,7092,-4336,7093,-5864]],"id":"55005","properties":{"name":"Barron"}},{"type":"Polygon","arcs":[[7094,7095,7096,7097,-2126]],"id":"72003","properties":{"name":"Aguada"}},{"type":"Polygon","arcs":[[7098,7099,7100,7101]],"id":"53049","properties":{"name":"Pacific"}},{"type":"Polygon","arcs":[[7102,7103,7104,7105]],"id":"54045","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[7106,7107,-2745,7108,-1157]],"id":"06039","properties":{"name":"Madera"}},{"type":"Polygon","arcs":[[7109,7110,7111,-871,7112]],"id":"55061","properties":{"name":"Kewaunee"}},{"type":"Polygon","arcs":[[7113,-2147,7114,-1366,-3492,7115,-3025]],"id":"17135","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-2156,-6341,7116,7117,7118,-6458,7119,7120]],"id":"08051","properties":{"name":"Gunnison"}},{"type":"Polygon","arcs":[[7121,-656,7122,-6715,7123]],"id":"18013","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[7124,7125,7126,7127,7128]],"id":"13101","properties":{"name":"Echols"}},{"type":"Polygon","arcs":[[7129,-5563,7130,-5384,-6793,-6732,-6863]],"id":"37085","properties":{"name":"Harnett"}},{"type":"Polygon","arcs":[[-6292,7131,7132,7133,7134,7135]],"id":"36107","properties":{"name":"Tioga"}},{"type":"Polygon","arcs":[[-6864,-6735,-6866,-5932]],"id":"37093","properties":{"name":"Hoke"}},{"type":"Polygon","arcs":[[7136,7137,7138,7139]],"id":"37143","properties":{"name":"Perquimans"}},{"type":"Polygon","arcs":[[-4631,-4997,7140,-5528,-1403]],"id":"47085","properties":{"name":"Humphreys"}},{"type":"Polygon","arcs":[[-688,-418,-1980,-2637,-188]],"id":"48381","properties":{"name":"Randall"}},{"type":"Polygon","arcs":[[-3301,7141,7142,7143,-5967,-164]],"id":"08023","properties":{"name":"Costilla"}},{"type":"MultiPolygon","arcs":[[[7144]],[[7145,-3914,7146,-1868,7147,7148,7149,7150]]],"id":"08123","properties":{"name":"Weld"}},{"type":"Polygon","arcs":[[7151,7152,-4046,7153,-4403]],"id":"13313","properties":{"name":"Whitfield"}},{"type":"Polygon","arcs":[[7154,7155,7156,7157,-6684,7158]],"id":"21023","properties":{"name":"Bracken"}},{"type":"Polygon","arcs":[[-4232,-6612,7159,-2569,7160]],"id":"18159","properties":{"name":"Tipton"}},{"type":"Polygon","arcs":[[7161,-4699,-6628,-4295,7162,-4824]],"id":"21207","properties":{"name":"Russell"}},{"type":"Polygon","arcs":[[-6032,-6576,-5926,7163,-5504]],"id":"21143","properties":{"name":"Lyon"}},{"type":"Polygon","arcs":[[-1046,-3303,7164,7165,7166,7167]],"id":"20025","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[-3591,-6226,-7070,-3826,-1082,7168,-5223]],"id":"37077","properties":{"name":"Granville"}},{"type":"MultiPolygon","arcs":[[[7169,7170]],[[-6839,7171,7172,7173,7174,7175]]],"id":"37095","properties":{"name":"Hyde"}},{"type":"Polygon","arcs":[[7176,-6566,7177,7178]],"id":"28125","properties":{"name":"Sharkey"}},{"type":"Polygon","arcs":[[-7090,-6943,7179,7180,7181,7182]],"id":"72001","properties":{"name":"Adjuntas"}},{"type":"Polygon","arcs":[[-6607,7183,7184,-883,7185]],"id":"13009","properties":{"name":"Baldwin"}},{"type":"Polygon","arcs":[[-4287,-4066,-6672,-2841,-6823,-6674]],"id":"21085","properties":{"name":"Grayson"}},{"type":"Polygon","arcs":[[-5668,-6418,-88,-456,-6421]],"id":"28115","properties":{"name":"Pontotoc"}},{"type":"Polygon","arcs":[[-628,7186,7187,-5376,7188]],"id":"31015","properties":{"name":"Boyd"}},{"type":"Polygon","arcs":[[7189]],"id":"51790","properties":{"name":"Staunton"}},{"type":"Polygon","arcs":[[-2533,7190,-3731,-5269,-4852,-6648]],"id":"31025","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-1451,7191,-3156,-122,-4748,-543]],"id":"46073","properties":{"name":"Jerauld"}},{"type":"Polygon","arcs":[[-4797,-6450,-4803,-4921,7192,-284]],"id":"04003","properties":{"name":"Cochise"}},{"type":"Polygon","arcs":[[7193,-4456,-3501,-4598,7194,7195]],"id":"05113","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[-3083,-5710,7196,7197,7198,-3934]],"id":"45039","properties":{"name":"Fairfield"}},{"type":"MultiPolygon","arcs":[[[7199]],[[-3018,7200,7201,7202]],[[7203]]],"id":"06111","properties":{"name":"Ventura"}},{"type":"Polygon","arcs":[[7204,-2007,7205,7206,7207]],"id":"06059","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[7208,-3852,-3036,7209]],"id":"12053","properties":{"name":"Hernando"}},{"type":"Polygon","arcs":[[7210,7211,7212,7213,-4473,-3071]],"id":"13029","properties":{"name":"Bryan"}},{"type":"Polygon","arcs":[[-2763,-5765,7214,-232,7215,7216,-2736]],"id":"19109","properties":{"name":"Kossuth"}},{"type":"Polygon","arcs":[[7217,-2902,-2652,-4104,7218,-3364]],"id":"20187","properties":{"name":"Stanton"}},{"type":"Polygon","arcs":[[7219,-3272,-2333,7220,-3368,-4142,7221,-7143]],"id":"08071","properties":{"name":"Las Animas"}},{"type":"Polygon","arcs":[[-3026,-7116,-3494,7222,-3242,-5149,7223,7224,-5176]],"id":"17119","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[7225,-767,-625,7226,7227,7228,7229]],"id":"12015","properties":{"name":"Charlotte"}},{"type":"Polygon","arcs":[[-5545,-4882,-6397,7230,7231,-4052,7232]],"id":"18051","properties":{"name":"Gibson"}},{"type":"Polygon","arcs":[[7233,7234,-3722,-295]],"id":"19163","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[7235,-6128,-6811,-4130,7236,-4035,7237]],"id":"41035","properties":{"name":"Klamath"}},{"type":"Polygon","arcs":[[-5374,-2790,7238,-1670,-7047]],"id":"48123","properties":{"name":"DeWitt"}},{"type":"Polygon","arcs":[[7239,-338,7240,7241,7242,7243,7244]],"id":"01023","properties":{"name":"Choctaw"}},{"type":"Polygon","arcs":[[7245,7246,7247,-4594,7248,-7241,-337]],"id":"01119","properties":{"name":"Sumter"}},{"type":"Polygon","arcs":[[7249,-1690,7250,7251,7252,7253,-4221]],"id":"05015","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[7254,7255,-5046,-2002,7256,-7201,-3017,7257]],"id":"06029","properties":{"name":"Kern"}},{"type":"MultiPolygon","arcs":[[[-7227,7258,7259,7260]],[[7261]],[[-7229,7262]]],"id":"12071","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[7263,-475,-6457,7264,-1793,7265,7266]],"id":"08107","properties":{"name":"Routt"}},{"type":"Polygon","arcs":[[7267,7268,7269,7270,7271,7272,7273]],"id":"17181","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-3302,-740,-5908,7274,-7165]],"id":"20033","properties":{"name":"Comanche"}},{"type":"Polygon","arcs":[[7275,7276,-4694,-6673,-1338,-6492]],"id":"21059","properties":{"name":"Daviess"}},{"type":"MultiPolygon","arcs":[[[7277]],[[7278]],[[7279,7280,7281]]],"id":"22087","properties":{"name":"St. Bernard"}},{"type":"Polygon","arcs":[[7282,7283,-4048,7284,7285]],"id":"16005","properties":{"name":"Bannock"}},{"type":"Polygon","arcs":[[7286,-1604,-4207,-2982,-898,-3324,-5244]],"id":"20153","properties":{"name":"Rawlins"}},{"type":"Polygon","arcs":[[7287,7288,7289,7290,7291,-2111]],"id":"13275","properties":{"name":"Thomas"}},{"type":"Polygon","arcs":[[7292,7293,-1854,7294,-3298,7295,7296]],"id":"13099","properties":{"name":"Early"}},{"type":"Polygon","arcs":[[-5799,-6331,-4078,7297]],"id":"16081","properties":{"name":"Teton"}},{"type":"Polygon","arcs":[[-3543,-5198,-5242,-5474,7298,7299]],"id":"24015","properties":{"name":"Cecil"}},{"type":"Polygon","arcs":[[-484,7300,7301,-83]],"id":"26147","properties":{"name":"St. Clair"}},{"type":"Polygon","arcs":[[-3840,7302,7303,7304,-3676,7305,7306]],"id":"05107","properties":{"name":"Phillips"}},{"type":"Polygon","arcs":[[7307,7308,-5510,7309,7310]],"id":"06013","properties":{"name":"Contra Costa"}},{"type":"Polygon","arcs":[[7311,-5304,7312,7313,7314]],"id":"09009","properties":{"name":"New Haven"}},{"type":"Polygon","arcs":[[-7231,-6396,-6537,7315,-7276,-6491,7316]],"id":"18173","properties":{"name":"Warrick"}},{"type":"Polygon","arcs":[[7317,-4415,7318,7319,7320,7321,-4470]],"id":"18019","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[7322,7323,7324,-2506,7325,-3850]],"id":"12069","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[7326,7327,7328,7329]],"id":"21037","properties":{"name":"Campbell"}},{"type":"Polygon","arcs":[[7330,-2513,7331,-4841,7332,7333]],"id":"22037","properties":{"name":"East Feliciana"}},{"type":"Polygon","arcs":[[7334,7335,7336,7337,-6212]],"id":"12121","properties":{"name":"Suwannee"}},{"type":"MultiPolygon","arcs":[[[7338,-7334,7339,-4092,7340]],[[7341,-4090,7342]]],"id":"22125","properties":{"name":"West Feliciana"}},{"type":"MultiPolygon","arcs":[[[-3339,7343]],[[7344]],[[7345]],[[-3655,7346,7347]]],"id":"23013","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[7348,7349,7350,7351,-1617]],"id":"26163","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-4560,7352,7353,7354,7355]],"id":"28033","properties":{"name":"DeSoto"}},{"type":"Polygon","arcs":[[7356,-5232,7357,7358,7359,-5482]],"id":"24027","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[7360,7361,7362,7363,-7268,7364,-6639,-4240]],"id":"29157","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-5173,7365,7366,7367,7368,7369,7370,7371,7372,-1302,-4431]],"id":"29113","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-2889,7373,7374,7375,7376]],"id":"27057","properties":{"name":"Hubbard"}},{"type":"Polygon","arcs":[[-2546,-4103,-1648,7377,7378,7379]],"id":"20021","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[7380,-6258,7381,-5342,-5693,7382]],"id":"27011","properties":{"name":"Big Stone"}},{"type":"Polygon","arcs":[[-5240,7383,7384,-999,7385,-5475]],"id":"10001","properties":{"name":"Kent"}},{"type":"Polygon","arcs":[[7386,-3053,7387,7388]],"id":"16075","properties":{"name":"Payette"}},{"type":"Polygon","arcs":[[-1198,-3141,-6898,7389,-2676]],"id":"18151","properties":{"name":"Steuben"}},{"type":"Polygon","arcs":[[-1768,7390,-5365,7391,7392,7393]],"id":"12075","properties":{"name":"Levy"}},{"type":"Polygon","arcs":[[-3202,-6474,7394,7395,-7126,7396]],"id":"13065","properties":{"name":"Clinch"}},{"type":"Polygon","arcs":[[7397,7398,-2800,-5306,7399]],"id":"26027","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-4559,7400,7401,-5664,-6420,7402,-7353]],"id":"28093","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-385,-4235,-1331,-1621,7403,-5841,-1357]],"id":"26081","properties":{"name":"Kent"}},{"type":"Polygon","arcs":[[7404,7405,-5625,-154,-2950,7406,7407]],"id":"31135","properties":{"name":"Perkins"}},{"type":"Polygon","arcs":[[7408,7409,7410,7411]],"id":"34029","properties":{"name":"Ocean"}},{"type":"Polygon","arcs":[[-3509,7412,-4411,7413,-5661,7414]],"id":"18167","properties":{"name":"Vigo"}},{"type":"Polygon","arcs":[[7415,-6658,-6293,-7136,7416,-6819]],"id":"36015","properties":{"name":"Chemung"}},{"type":"Polygon","arcs":[[-4507,7417,-6861,-3122,7418,-6399]],"id":"18155","properties":{"name":"Switzerland"}},{"type":"Polygon","arcs":[[7419,-7375,7420,-3531,-2131]],"id":"27159","properties":{"name":"Wadena"}},{"type":"Polygon","arcs":[[7421,-4554,-2561,7422,-5780,-5716,-1481]],"id":"56027","properties":{"name":"Niobrara"}},{"type":"Polygon","arcs":[[-4073,7423,7424,-307,7425,-6357]],"id":"29013","properties":{"name":"Bates"}},{"type":"Polygon","arcs":[[7426,-389,-2378,7427,7428,7429]],"id":"31129","properties":{"name":"Nuckolls"}},{"type":"Polygon","arcs":[[-78,-6400,-7419,-3127,7430,-7319,-4414]],"id":"18077","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[7431,7432,7433,-4509,7434,7435,7436]],"id":"34003","properties":{"name":"Bergen"}},{"type":"Polygon","arcs":[[7437,7438,7439,7440,-7433,7441]],"id":"36119","properties":{"name":"Westchester"}},{"type":"Polygon","arcs":[[-395,7442,7443,7444]],"id":"36063","properties":{"name":"Niagara"}},{"type":"Polygon","arcs":[[7445,-6736,-4191,7446,-4740]],"id":"37189","properties":{"name":"Watauga"}},{"type":"Polygon","arcs":[[7447,-868,-3530,7448,-5344]],"id":"27023","properties":{"name":"Chippewa"}},{"type":"Polygon","arcs":[[-5418,7449,7450,7451,7452]],"id":"40071","properties":{"name":"Kay"}},{"type":"Polygon","arcs":[[-581,7453,-5501,-5500,-5291,7454]],"id":"17151","properties":{"name":"Pope"}},{"type":"Polygon","arcs":[[-5901,7455,7456,-6857,7457,-6366,-5732,-5077]],"id":"42089","properties":{"name":"Monroe"}},{"type":"MultiPolygon","arcs":[[[-6789,-6479]],[[-5217,-6481,-6792,7458,-4923,-5227,-6097]]],"id":"35043","properties":{"name":"Sandoval"}},{"type":"Polygon","arcs":[[-3095,-1529,-5796,-2669,7459]],"id":"16033","properties":{"name":"Clark"}},{"type":"MultiPolygon","arcs":[[[7460,7461,-1597,-2640,7462]],[[7463]],[[7464]],[[7465]],[[7466]]],"id":"26029","properties":{"name":"Charlevoix"}},{"type":"Polygon","arcs":[[-2705,-1619,7467,-3715,7468,-3138]],"id":"26091","properties":{"name":"Lenawee"}},{"type":"Polygon","arcs":[[-6317,-6987,7469,-3308,7470]],"id":"27157","properties":{"name":"Wabasha"}},{"type":"Polygon","arcs":[[7471,-2457,-5042,-5887,7472]],"id":"29047","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[7473,7474,-2784,-6796,-6744,7475]],"id":"40081","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-5393,-1469,-1195,-5488,7476,-3421,7477,7478]],"id":"47069","properties":{"name":"Hardeman"}},{"type":"Polygon","arcs":[[7479,-2909,7480,-2886,7481]],"id":"27071","properties":{"name":"Koochiching"}},{"type":"Polygon","arcs":[[-31,-2247,7482,7483,-36,-6158]],"id":"27107","properties":{"name":"Norman"}},{"type":"Polygon","arcs":[[-3510,-7415,-5660,7484,-3252,-3414,7485]],"id":"17023","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[-7483,-2246,7486,-7376,-7420,-2130,7487]],"id":"27005","properties":{"name":"Becker"}},{"type":"Polygon","arcs":[[7488,-3315,-1156,-3639,-5432,7489]],"id":"19085","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[7490,-3441,7491,7492,-3677,-7305]],"id":"28027","properties":{"name":"Coahoma"}},{"type":"Polygon","arcs":[[-4660,7493,-4146,7494,7495,-192,7496,7497,-4249,7498]],"id":"35037","properties":{"name":"Quay"}},{"type":"Polygon","arcs":[[-6652,7499,7500,7501,7502,7503]],"id":"34023","properties":{"name":"Middlesex"}},{"type":"Polygon","arcs":[[-3815,7504,7505,7506,7507,-4599,-2122]],"id":"54071","properties":{"name":"Pendleton"}},{"type":"Polygon","arcs":[[-2428,7508,7509,7510,-5622]],"id":"05003","properties":{"name":"Ashley"}},{"type":"Polygon","arcs":[[-3678,-7493,7511,7512,-6562,7513]],"id":"28133","properties":{"name":"Sunflower"}},{"type":"Polygon","arcs":[[7514,-7355,7515,7516,-3438,-7491,-7304,7517]],"id":"28143","properties":{"name":"Tunica"}},{"type":"Polygon","arcs":[[-711,-4819,7518,-3455,-2439,7519]],"id":"29171","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[-4818,-3214,-1708,-3456,-7519]],"id":"29197","properties":{"name":"Schuyler"}},{"type":"Polygon","arcs":[[7520,7521,7522,-3812,-3054,-7061,-6956]],"id":"54085","properties":{"name":"Ritchie"}},{"type":"Polygon","arcs":[[7523,-3294,-3809,-7523,7524,7525]],"id":"54095","properties":{"name":"Tyler"}},{"type":"Polygon","arcs":[[-4724,7526,7527,7528,7529,-3610]],"id":"51063","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[-4543,-4014,7530,7531,-302,7532]],"id":"30055","properties":{"name":"McCone"}},{"type":"Polygon","arcs":[[-2208,-6622,7533,-3318,7534,-5650]],"id":"20177","properties":{"name":"Shawnee"}},{"type":"Polygon","arcs":[[-7390,-6897,-1088,-2198,-893]],"id":"18033","properties":{"name":"DeKalb"}},{"type":"Polygon","arcs":[[7535,-1518,-101,-268]],"id":"46101","properties":{"name":"Moody"}},{"type":"Polygon","arcs":[[-7332,-2512,-19,7536,-4842]],"id":"22091","properties":{"name":"St. Helena"}},{"type":"Polygon","arcs":[[7537,-3690,3688,-3688,7538,-4179,7539]],"id":"55051","properties":{"name":"Iron"}},{"type":"Polygon","arcs":[[7540,-3795,7541,-5026,7542,7543]],"id":"48475","properties":{"name":"Ward"}},{"type":"Polygon","arcs":[[7544,-3728,-4758,7545,-7044]],"id":"48485","properties":{"name":"Wichita"}},{"type":"MultiPolygon","arcs":[[[-6503,7546,7547,7548]],[[-6507,7549,7550,7551]]],"id":"48489","properties":{"name":"Willacy"}},{"type":"Polygon","arcs":[[7552,7553,-3870,7554,7555,-6632,7556]],"id":"22083","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[-1705,-2171,7557,7558,7559,7560]],"id":"29045","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[7561,7562,7563,-3291]],"id":"54049","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[7564,7565,7566,-7521,-6960,7567,-3960]],"id":"54107","properties":{"name":"Wood"}},{"type":"Polygon","arcs":[[-3292,-7564,7568,-5330,7569,7570,-3810]],"id":"54033","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[7571,7572,-4544,-7533,-301,-4574]],"id":"30105","properties":{"name":"Valley"}},{"type":"Polygon","arcs":[[7573,7574,7575,-3661,7576]],"id":"25009","properties":{"name":"Essex"}},{"type":"Polygon","arcs":[[7577,-4742,7578,-4710,7579,-1486]],"id":"47019","properties":{"name":"Carter"}},{"type":"Polygon","arcs":[[-322,7580,7581,-5849,7582,7583,7584]],"id":"47147","properties":{"name":"Robertson"}},{"type":"Polygon","arcs":[[-2427,7585,-3680,7586,7587,-3867,7588,7589,-7509]],"id":"05017","properties":{"name":"Chicot"}},{"type":"Polygon","arcs":[[-7160,-6615,7590,7591,-2216,-2570]],"id":"18057","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[7592,-2225,-4233,-7161,-2568,7593]],"id":"18067","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[-2217,-7592,7594,-1581,-653,7595,-1561]],"id":"18097","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-5924,-2571,-2218,-1564,7596,-4408,-5816]],"id":"18107","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[7597,7598,-2938,-2964,-6724,-6729]],"id":"28089","properties":{"name":"Madison"}},{"type":"MultiPolygon","arcs":[[[7599,7600,-2271]]],"id":"26033","properties":{"name":"Chippewa"}},{"type":"MultiPolygon","arcs":[[[7601]],[[-2272,-7601,7602,7603]]],"id":"26097","properties":{"name":"Mackinac"}},{"type":"Polygon","arcs":[[7604,7605,7606,7607,-5210]],"id":"12089","properties":{"name":"Nassau"}},{"type":"Polygon","arcs":[[-7563,7608,-5404,-5327,-7569]],"id":"54091","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[-4746,7609,-5647,-4042,-7153,7610]],"id":"47011","properties":{"name":"Bradley"}},{"type":"Polygon","arcs":[[7611,7612,7613,-7335,-6211,7614,7615]],"id":"12079","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[7616,-3209,7617,7618,-6564]],"id":"28051","properties":{"name":"Holmes"}},{"type":"Polygon","arcs":[[7619,-3484,-6183,-6178,-1395,-6115]],"id":"47183","properties":{"name":"Weakley"}},{"type":"Polygon","arcs":[[7620,-5701,-6318,-7471,-3307,-3145,-1945]],"id":"27049","properties":{"name":"Goodhue"}},{"type":"Polygon","arcs":[[7621,7622,-917,-1535,7623,7624]],"id":"29077","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[7625,7626,-3585,7627,-4026,7628,-3629]],"id":"01111","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[-3897,-4874,7629,7630,-1626]],"id":"35013","properties":{"name":"Doña Ana"}},{"type":"Polygon","arcs":[[7631,7632,-6976,-5631,-5630,7633,-6925]],"id":"42119","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-2730,-277,-3937,7634,-6017]],"id":"46119","properties":{"name":"Sully"}},{"type":"Polygon","arcs":[[-1640,-5986,-997,7635,-5618,7636]],"id":"33003","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[-2929,7637]],"id":"51770","properties":{"name":"Roanoke"}},{"type":"Polygon","arcs":[[-5904,-3724,-5388,-4536,-2212,-2912]],"id":"19115","properties":{"name":"Louisa"}},{"type":"Polygon","arcs":[[-2816,7638,7639,-6218,-5270]],"id":"19145","properties":{"name":"Page"}},{"type":"Polygon","arcs":[[-5709,-5085,-5193,-5778,-5949,7640,-7197]],"id":"45055","properties":{"name":"Kershaw"}},{"type":"Polygon","arcs":[[7641,-7285,-4047,-3372,-3647]],"id":"16077","properties":{"name":"Power"}},{"type":"Polygon","arcs":[[7642,-3275,7643]],"id":"41011","properties":{"name":"Coos"}},{"type":"Polygon","arcs":[[-6129,-7236,7644,-2611,-3276,-7643,7645]],"id":"41019","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[-4614,-2838,7646,7647,7648]],"id":"55023","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[7649,7650,-1741,7651,7652,-3971],[7653]],"id":"51005","properties":{"name":"Alleghany"}},{"type":"Polygon","arcs":[[-4931,-5680,7654,7655,-4721,-3607,-7050]],"id":"51071","properties":{"name":"Giles"}},{"type":"Polygon","arcs":[[-7337,7656,-7127,-7396,7657,7658,-5360,7659]],"id":"12023","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[7660,-2467,7661,-135,7662,-3473]],"id":"72007","properties":{"name":"Aguas Buenas"}},{"type":"Polygon","arcs":[[-955,7663,-151,-2477,-3288,7664,-6209,-4171]],"id":"72107","properties":{"name":"Orocovis"}},{"type":"Polygon","arcs":[[-5719,7665,7666,7667]],"id":"27123","properties":{"name":"Ramsey"}},{"type":"Polygon","arcs":[[7668,-4368,7669,7670,-1791,7671,7672]],"id":"49047","properties":{"name":"Uintah"}},{"type":"Polygon","arcs":[[7673,7674,7675,-4567,7676,-7528]],"id":"51067","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[7677,-3557]],"id":"15005","properties":{"name":"Kalawao"}},{"type":"Polygon","arcs":[[-5155,-4622,-6277,7678,7679,-6619,-2206]],"id":"20005","properties":{"name":"Atchison"}},{"type":"Polygon","arcs":[[7680,-6497,-6441,7681,7682]],"id":"09015","properties":{"name":"Windham"}},{"type":"Polygon","arcs":[[7683,7684,-7682,-6440,7685,7686,-5302]],"id":"09011","properties":{"name":"New London"}},{"type":"Polygon","arcs":[[7687,7688,7689,7690,-3536,-6755]],"id":"41005","properties":{"name":"Clackamas"}},{"type":"Polygon","arcs":[[-1103,-5222,-5739,7691,-1745,-7026,7692]],"id":"48419","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[7693,-5893,-1014,7694,7695,-4325,7696]],"id":"39029","properties":{"name":"Columbiana"}},{"type":"Polygon","arcs":[[-1161,7697,-7255,7698,-1299]],"id":"06031","properties":{"name":"Kings"}},{"type":"Polygon","arcs":[[7699,-3021,-2222,7700,7701,7702,7703]],"id":"06045","properties":{"name":"Mendocino"}},{"type":"Polygon","arcs":[[-4398,-1881,7704,-2339,-6339]],"id":"08035","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[-549,-3116,-3769,7705,7706,-2918]],"id":"48259","properties":{"name":"Kendall"}},{"type":"Polygon","arcs":[[7707,7708,-3832,7709,-7252]],"id":"05009","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[-6801,7710,7711,-7474,7712,-1392]],"id":"40083","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[7713,-4141,7714,7715,-3707]],"id":"36065","properties":{"name":"Oneida"}},{"type":"Polygon","arcs":[[7716,-6688,7717,7718,7719,7720]],"id":"37113","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[7721,7722,7723,7724,7725,7726,7727]],"id":"36031","properties":{"name":"Essex"}},{"type":"Polygon","arcs":[[-2124,-4601,7728,7729,-7650,-3970]],"id":"51017","properties":{"name":"Bath"}},{"type":"Polygon","arcs":[[7730,7731,7732,7733,-7104]],"id":"54005","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[7734,7735,-3974,-5678,7736]],"id":"54019","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[7737,7738,-6845,-7735,7739,-7732,7740,7741]],"id":"54039","properties":{"name":"Kanawha"}},{"type":"Polygon","arcs":[[7742,7743,7744,7745,-6882]],"id":"72037","properties":{"name":"Ceiba"}},{"type":"Polygon","arcs":[[7746,-160,7747,-152,-7664,-954,-7089]],"id":"72039","properties":{"name":"Ciales"}},{"type":"Polygon","arcs":[[7748,-7266,-1792,-7671]],"id":"08103","properties":{"name":"Rio Blanco"}},{"type":"Polygon","arcs":[[-1562,-7596,-657,-7122,7749,-6531,7750]],"id":"18109","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[7751,-6635,7752,7753,7754,-4848]],"id":"22059","properties":{"name":"LaSalle"}},{"type":"Polygon","arcs":[[-1543,-6783,7755,-5107,7756]],"id":"29135","properties":{"name":"Moniteau"}},{"type":"Polygon","arcs":[[-4887,7757,-1680,-5895,7758,7759]],"id":"42039","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[-5956,-5425,7760,7761,7762,-6803,-5988]],"id":"21205","properties":{"name":"Rowan"}},{"type":"Polygon","arcs":[[-4995,7763,7764,7765,7766,-5555,7767]],"id":"47187","properties":{"name":"Williamson"}},{"type":"Polygon","arcs":[[-1675,-1012,-754,7768,-344]],"id":"38081","properties":{"name":"Sargent"}},{"type":"Polygon","arcs":[[-6989,-3328,7769,7770]],"id":"72055","properties":{"name":"Guánica"}},{"type":"Polygon","arcs":[[7771,-3259,7772]],"id":"16061","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[7773,7774,7775,-7773,-3258,7776,7777]],"id":"16069","properties":{"name":"Nez Perce"}},{"type":"Polygon","arcs":[[7778,-7430,7779,-1551,-6403,7780,-4864]],"id":"20089","properties":{"name":"Jewell"}},{"type":"Polygon","arcs":[[7781,-3401,7782,-5648,7783,-3066]],"id":"20117","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-3400,-4204,-5156,-2204,-5649,-7783]],"id":"20131","properties":{"name":"Nemaha"}},{"type":"Polygon","arcs":[[7784,-4223,-3351,7785,7786,-2234]],"id":"40001","properties":{"name":"Adair"}},{"type":"Polygon","arcs":[[-7720,7787,7788,7789,7790]],"id":"37043","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[7791,-3948,-5947,-4547,-5946,-4545,-6527,7792,7793,7794,7795]],"id":"45073","properties":{"name":"Oconee"}},{"type":"Polygon","arcs":[[-3350,7796,7797,7798,7799,-7786]],"id":"05033","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[-3143,-2255,-6618,-2649,-2901]],"id":"20093","properties":{"name":"Kearny"}},{"type":"Polygon","arcs":[[7800]],"id":"72049","properties":{"name":"Culebra"}},{"type":"Polygon","arcs":[[-2630,-6561,7801,7802,7803,7804]],"id":"28091","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[7805,-6422,-459,-2431,7806]],"id":"28161","properties":{"name":"Yalobusha"}},{"type":"Polygon","arcs":[[7807,-2373,-1058,-2733,-176,-2980,-4206]],"id":"31065","properties":{"name":"Furnas"}},{"type":"Polygon","arcs":[[7808,7809,-5588,-4351,7810]],"id":"53015","properties":{"name":"Cowlitz"}},{"type":"Polygon","arcs":[[-1092,7811,7812,-2402,7813,-4215]],"id":"01083","properties":{"name":"Limestone"}},{"type":"Polygon","arcs":[[7814,7815,7816,-2462]],"id":"12013","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[7817,-3853,-7209,7818,-7393]],"id":"12017","properties":{"name":"Citrus"}},{"type":"Polygon","arcs":[[-7588,7819,-7179,7820,-3698,-3868]],"id":"28055","properties":{"name":"Issaquena"}},{"type":"Polygon","arcs":[[7821,-4472,7822,-4060,-6826,-4465]],"id":"18061","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[-7219,-4108,-6998,7823,-3365]],"id":"20129","properties":{"name":"Morton"}},{"type":"Polygon","arcs":[[-4708,-6364,7824,-3931,-6952,-1068]],"id":"45083","properties":{"name":"Spartanburg"}},{"type":"Polygon","arcs":[[-1549,-3257,7825,-3434,7826,-6404]],"id":"20143","properties":{"name":"Ottawa"}},{"type":"Polygon","arcs":[[7827,7828,-4645]],"id":"30103","properties":{"name":"Treasure"}},{"type":"Polygon","arcs":[[7829,-5073,-4972,7830,7831,-1662]],"id":"31051","properties":{"name":"Dixon"}},{"type":"Polygon","arcs":[[7832,7833,-6149,-7092,-5863,-5752]],"id":"55013","properties":{"name":"Burnett"}},{"type":"Polygon","arcs":[[7834,-6011,-5690,7835,-3162,7836,7837]],"id":"55025","properties":{"name":"Dane"}},{"type":"Polygon","arcs":[[7838,7839,7840,7841,7842,-4342,7843,-4831]],"id":"22007","properties":{"name":"Assumption"}},{"type":"Polygon","arcs":[[7844,7845,7846,7847,-6858,-7457,7848]],"id":"42127","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[7849,-7715,-4140,7850,-51,7851,7852]],"id":"36077","properties":{"name":"Otsego"}},{"type":"Polygon","arcs":[[7853,7854,-3925,-2391,7855,-2357]],"id":"40049","properties":{"name":"Garvin"}},{"type":"Polygon","arcs":[[-4515,7856,-7728,7857,7858,7859,-4137]],"id":"36041","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-4222,-7254,7860,7861,7862,-7797,-3349]],"id":"05087","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[7863,-7845,7864,-5883,7865,-7134]],"id":"42115","properties":{"name":"Susquehanna"}},{"type":"MultiPolygon","arcs":[[[7866]],[[7867,7868,7869,7870]]],"id":"12037","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-848,-2113,7871,7872,7873,7874,7875]],"id":"12039","properties":{"name":"Gadsden"}},{"type":"Polygon","arcs":[[-2463,-7817,7876,-7871,7877]],"id":"12045","properties":{"name":"Gulf"}},{"type":"Polygon","arcs":[[7878,-7291,7879,-7616,7880,7881,7882]],"id":"12065","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[7883,-3040,7884,7885,-3042]],"id":"12103","properties":{"name":"Pinellas"}},{"type":"Polygon","arcs":[[7886,7887,-533,7888,-6948,-1940,-537]],"id":"40075","properties":{"name":"Kiowa"}},{"type":"Polygon","arcs":[[-7798,-7863,7889,-5036,7890]],"id":"05047","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[7891,7892,-2780,7893,7894]],"id":"40117","properties":{"name":"Pawnee"}},{"type":"Polygon","arcs":[[-3927,7895,7896,7897,7898,7899,-2393]],"id":"40069","properties":{"name":"Johnston"}},{"type":"Polygon","arcs":[[-1149,-5320,7900,7901,-1698,-6266,7902]],"id":"29081","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[-6779,7903,7904,7905,-6558,-2628]],"id":"28031","properties":{"name":"Covington"}},{"type":"Polygon","arcs":[[7906,-7811,-4350,-6966,7907,-7101]],"id":"53069","properties":{"name":"Wahkiakum"}},{"type":"Polygon","arcs":[[7908,7909,7910,7911,7912]],"id":"12019","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-2273,-7604,7913,7914,-5129]],"id":"26153","properties":{"name":"Schoolcraft"}},{"type":"Polygon","arcs":[[-1762,-2907,7915,-4609,-6147,-7834,7916]],"id":"55031","properties":{"name":"Douglas"}},{"type":"MultiPolygon","arcs":[[[7917,7918,7919]],[[7920,7921,7922,7923,-1957,-195,7924]]],"id":"13193","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[7925,7926,-5617,-5613,-1261,-5491]],"id":"22027","properties":{"name":"Claiborne"}},{"type":"Polygon","arcs":[[-7703,7927,7928,7929,7930,7931,7932]],"id":"06097","properties":{"name":"Sonoma"}},{"type":"Polygon","arcs":[[-3923,-6748,7933,-7854,-2356,7934]],"id":"40087","properties":{"name":"McClain"}},{"type":"Polygon","arcs":[[7935,-2617,-6649,-3891,-3402,-7782,-3065]],"id":"31067","properties":{"name":"Gage"}},{"type":"Polygon","arcs":[[7936,-5773,-5983,7937,-3106,7938,7939]],"id":"48343","properties":{"name":"Morris"}},{"type":"Polygon","arcs":[[-7713,-7476,-6743,-3921,7940]],"id":"40109","properties":{"name":"Oklahoma"}},{"type":"Polygon","arcs":[[7941,-2365,-6690,7942,-2382]],"id":"48223","properties":{"name":"Hopkins"}},{"type":"Polygon","arcs":[[-4139,7943,7944,7945,-46,-7851]],"id":"36057","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[7946,-6262,7947,7948,-7892,7949,-7451]],"id":"40113","properties":{"name":"Osage"}},{"type":"Polygon","arcs":[[7950,-318,7951,7952]],"id":"12113","properties":{"name":"Santa Rosa"}},{"type":"Polygon","arcs":[[-7325,7953,-2503]],"id":"12117","properties":{"name":"Seminole"}},{"type":"Polygon","arcs":[[-1853,7954,7955,-845,-3296,-7295]],"id":"13007","properties":{"name":"Baker"}},{"type":"Polygon","arcs":[[7956,7957,-4400,-4448,7958]],"id":"13083","properties":{"name":"Dade"}},{"type":"Polygon","arcs":[[7959,7960,7961,7962,-7955,-1852]],"id":"13095","properties":{"name":"Dougherty"}},{"type":"Polygon","arcs":[[-7963,7963,7964,-7288,-2110,-846,-7956]],"id":"13205","properties":{"name":"Mitchell"}},{"type":"Polygon","arcs":[[-7296,-3297,-843,7965,7966]],"id":"13253","properties":{"name":"Seminole"}},{"type":"Polygon","arcs":[[7967,-7894,-2785,-7475,-7712]],"id":"40119","properties":{"name":"Payne"}},{"type":"Polygon","arcs":[[-5976,7968,-4298,-438,-6035,-6083]],"id":"47137","properties":{"name":"Pickett"}},{"type":"Polygon","arcs":[[-5794,-6763,7969,-5741,-6670]],"id":"21087","properties":{"name":"Green"}},{"type":"Polygon","arcs":[[-5017,-2385,-5003,7970]],"id":"48397","properties":{"name":"Rockwall"}},{"type":"MultiPolygon","arcs":[[[7971]],[[7972,-3975]]],"id":"78020","properties":{"name":"St. John"}},{"type":"Polygon","arcs":[[-4872,7973,-3234,7974,7975]],"id":"48229","properties":{"name":"Hudspeth"}},{"type":"Polygon","arcs":[[-6958,-7063,-6841,-7739,7976]],"id":"54087","properties":{"name":"Roane"}},{"type":"Polygon","arcs":[[-6627,-6543,-3944,-6498,-433,-4297]],"id":"21147","properties":{"name":"McCreary"}},{"type":"Polygon","arcs":[[7977,7978,-7245,7979,7980,-6429,7981]],"id":"28153","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-7647,-2837,7982,7983,-4109,-4821,7984]],"id":"55043","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[7985,7986,7987,-7341,-4091,-7342,7988,7989]],"id":"22029","properties":{"name":"Concordia"}},{"type":"Polygon","arcs":[[-6704,6702,-6702,6700,-6700,6698,-6698,-6697,6696,-6697,-6696,6694,-6694,-6693,-6692,-3109,-2597,7990,7991,7992,-2369]],"id":"48423","properties":{"name":"Smith"}},{"type":"Polygon","arcs":[[7993,-7722,-7857,-4514,7994]],"id":"36033","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[7995,7996,-3704,7997,-3702,7998,-4523,7999,-7986,8000]],"id":"22107","properties":{"name":"Tensas"}},{"type":"Polygon","arcs":[[8001,8002,-2514,-7331,-7339,-7988]],"id":"28157","properties":{"name":"Wilkinson"}},{"type":"Polygon","arcs":[[-3701,-6730,-6424,-4519,-7999]],"id":"28021","properties":{"name":"Claiborne"}},{"type":"Polygon","arcs":[[-339,-7240,-7979,8003]],"id":"28023","properties":{"name":"Clarke"}},{"type":"Polygon","arcs":[[-2517,8004,-4968,-1448,-272,-2729]],"id":"46049","properties":{"name":"Faulk"}},{"type":"Polygon","arcs":[[-1458,-5557,-1094,-4214,8005]],"id":"47099","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-7906,8006,-6432,-449,8007,-6559]],"id":"28035","properties":{"name":"Forrest"}},{"type":"Polygon","arcs":[[8008,8009,-638,8010,8011,-7809,-7907,-7100]],"id":"53041","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[-7676,8012,8013,-6222,8014,-1284,8015,-814,-4568]],"id":"51143","properties":{"name":"Pittsylvania"}},{"type":"Polygon","arcs":[[-333,8016,8017,8018,-6445]],"id":"54027","properties":{"name":"Hampshire"}},{"type":"Polygon","arcs":[[-6519,8019,-986,-2606,8020,8021]],"id":"06115","properties":{"name":"Yuba"}},{"type":"Polygon","arcs":[[-6565,-7619,-7598,-6728,-3699,-7821,-7178]],"id":"28163","properties":{"name":"Yazoo"}},{"type":"Polygon","arcs":[[-2925,8022,-6822,-6978,8023,-5068,8024]],"id":"42105","properties":{"name":"Potter"}},{"type":"Polygon","arcs":[[-132,-6508,-7552,8025,8026,8027]],"id":"48215","properties":{"name":"Hidalgo"}},{"type":"Polygon","arcs":[[8028,8029]],"id":"51131","properties":{"name":"Northampton"}},{"type":"Polygon","arcs":[[-4516,-4135,-7714,-3706,-6354]],"id":"36049","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[8030,-7925,-194,8031]],"id":"13249","properties":{"name":"Schley"}},{"type":"Polygon","arcs":[[8032,-7648,-7985,-4820,-965,-3859]],"id":"19043","properties":{"name":"Clayton"}},{"type":"Polygon","arcs":[[-6709,8033,-7140,8034]],"id":"37041","properties":{"name":"Chowan"}},{"type":"Polygon","arcs":[[8035,8036,-4452,-4944,8037,8038,-2404]],"id":"01095","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[8039,8040,8041,-7846,-7864,-7133]],"id":"36007","properties":{"name":"Broome"}},{"type":"Polygon","arcs":[[-7946,8042,-6305,-47]],"id":"36093","properties":{"name":"Schenectady"}},{"type":"Polygon","arcs":[[8043,-2389,8044,-7031,8045]],"id":"48041","properties":{"name":"Brazos"}},{"type":"Polygon","arcs":[[8046,8047,8048,8049,8050,-2399]],"id":"51047","properties":{"name":"Culpeper"}},{"type":"Polygon","arcs":[[8051,8052,-8046,-7030,8053]],"id":"48051","properties":{"name":"Burleson"}},{"type":"MultiPolygon","arcs":[[[8054]],[[8055]],[[-453,8056,8057,8058]]],"id":"28047","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[8059,8060,8061,-2360,-7942,-2381]],"id":"48119","properties":{"name":"Delta"}},{"type":"Polygon","arcs":[[-7024,8062,-2,-4496]],"id":"49053","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-6975,-7003,-5633]],"id":"42093","properties":{"name":"Montour"}},{"type":"Polygon","arcs":[[-5024,-2726,8063,-424,-1963,-1739,8064,8065,8066]],"id":"48105","properties":{"name":"Crockett"}},{"type":"Polygon","arcs":[[8067,-2498,8068,8069,-7954,-7324,8070]],"id":"12127","properties":{"name":"Volusia"}},{"type":"Polygon","arcs":[[-6511,8071,8072,-6659,-7416,-6818,-8023,-2924]],"id":"36101","properties":{"name":"Steuben"}},{"type":"Polygon","arcs":[[-1513,8073,8074,-4166,8075]],"id":"55101","properties":{"name":"Racine"}},{"type":"Polygon","arcs":[[8076,-2538,8077,8078,8079,-3498]],"id":"05059","properties":{"name":"Hot Spring"}},{"type":"Polygon","arcs":[[-7216,-2589,-1037,-3176]],"id":"19091","properties":{"name":"Humboldt"}},{"type":"Polygon","arcs":[[-3887,-2997,-3601,-2310,-5034,8080]],"id":"29055","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[-5345,-7449,-3529,-3712,-3388,-3674,8081]],"id":"27173","properties":{"name":"Yellow Medicine"}},{"type":"Polygon","arcs":[[-3993,-5809,-3848,-2580,8082,-6343]],"id":"13151","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[8083,8084,8085,8086,-4940]],"id":"01011","properties":{"name":"Bullock"}},{"type":"Polygon","arcs":[[-3984,8087,-7107,-1163,-211,8088]],"id":"06047","properties":{"name":"Merced"}},{"type":"Polygon","arcs":[[8089,-6134,-7082,-2290,8090,-2288,8091,8092,-7013]],"id":"51095","properties":{"name":"James City"}},{"type":"Polygon","arcs":[[-5612,8093,-6630,8094,-1263]],"id":"22049","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[8095,8096,8097,8098,-7137,-8034,-6708]],"id":"37073","properties":{"name":"Gates"}},{"type":"Polygon","arcs":[[8099,8100,8101,-4610,-5585,8102]],"id":"55063","properties":{"name":"La Crosse"}},{"type":"MultiPolygon","arcs":[[[-7919,8103,-7922]],[[8104,8105,8106,-7920,-7921,-8031,8107]]],"id":"13269","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[8108,8109,-7138,-8099]],"id":"37139","properties":{"name":"Pasquotank"}},{"type":"Polygon","arcs":[[-6206,-3762,8110,8111,-8047,-2398,-6270]],"id":"51061","properties":{"name":"Fauquier"}},{"type":"Polygon","arcs":[[-2409,8112,-8050,8113,-2859,-5450]],"id":"51137","properties":{"name":"Orange"}},{"type":"Polygon","arcs":[[8114,-7853,8115,-8041,8116]],"id":"36017","properties":{"name":"Chenango"}},{"type":"Polygon","arcs":[[-4762,8117,8118]],"id":"51680","properties":{"name":"Lynchburg"}},{"type":"Polygon","arcs":[[8119,8120,8121,8122,-7897]],"id":"40029","properties":{"name":"Coal"}},{"type":"Polygon","arcs":[[-6797,-6753,8123,-8121,8124,8125]],"id":"40063","properties":{"name":"Hughes"}},{"type":"Polygon","arcs":[[-4363,8126,-8054,-7029,-6053,-6869]],"id":"48287","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[8127,-8118,-4761,-3801,8128,-6223,-8014]],"id":"51031","properties":{"name":"Campbell"}},{"type":"Polygon","arcs":[[-7934,-6747,8129,-8125,-8120,-7896,-3926,-7855]],"id":"40123","properties":{"name":"Pontotoc"}},{"type":"Polygon","arcs":[[-2604,-980,8130,8131,-4128,-4127,-4360,-6817,8132,8133,8134,8135,8136,8137]],"id":"32031","properties":{"name":"Washoe"}},{"type":"Polygon","arcs":[[8138,8139,-4915,-6855,-7848]],"id":"36105","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[8140,8141,8142,8143,8144]],"id":"42041","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[-3811,-7571,8145,-3416,8146,-3056]],"id":"54041","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[8147,-3880,-854,-3875,-4068,-5559,8148]],"id":"22053","properties":{"name":"Jefferson Davis"}},{"type":"Polygon","arcs":[[-462,-3093,-600,8149,8150]],"id":"31113","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[8151,8152,-3579,8153,8154,-8085,8155]],"id":"01113","properties":{"name":"Russell"}},{"type":"Polygon","arcs":[[-4445,8156,8157,-6165,-6099,-1278]],"id":"05135","properties":{"name":"Sharp"}},{"type":"Polygon","arcs":[[-5047,-7256,-7698,-1160]],"id":"06107","properties":{"name":"Tulare"}},{"type":"Polygon","arcs":[[-4418,-6764,-3491,8158,-5845,8159]],"id":"21003","properties":{"name":"Allen"}},{"type":"Polygon","arcs":[[8160,8161,8162,8163,8164,8165,-4788]],"id":"22051","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-4910,8166,8167,-7438,8168]],"id":"36079","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[-4911,-8169,-7442,-7432,8169]],"id":"36087","properties":{"name":"Rockland"}},{"type":"Polygon","arcs":[[-8168,8170,8171,-7314,8172,-7439]],"id":"09001","properties":{"name":"Fairfield"}},{"type":"Polygon","arcs":[[8173,-2293,-4238,-2325,8174,-4443]],"id":"29091","properties":{"name":"Howell"}},{"type":"MultiPolygon","arcs":[[[8175]]],"id":"66010","properties":{"name":"Guam"}},{"type":"Polygon","arcs":[[-692,-963,-7046,-8044,-8053,8176]],"id":"48395","properties":{"name":"Robertson"}},{"type":"Polygon","arcs":[[8177,8178,8179,-1275,-1272,-5507,-7309,8180]],"id":"06067","properties":{"name":"Sacramento"}},{"type":"Polygon","arcs":[[-6751,8181,8182,8183,8184,8185]],"id":"40061","properties":{"name":"Haskell"}},{"type":"Polygon","arcs":[[-8185,8186,-2718,8187]],"id":"40077","properties":{"name":"Latimer"}},{"type":"Polygon","arcs":[[-7695,-1019,8188,-6384,8189]],"id":"54029","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[8190,-5164,8191,-5489,8192,8193]],"id":"05073","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[8194,8195,-7410,8196,8197,-4500,8198]],"id":"34001","properties":{"name":"Atlantic"}},{"type":"Polygon","arcs":[[-5534,-4008,-4479,-3376,8199,8200]],"id":"16083","properties":{"name":"Twin Falls"}},{"type":"Polygon","arcs":[[-1712,-5020,-708,8201,-7010]],"id":"48333","properties":{"name":"Mills"}},{"type":"Polygon","arcs":[[-4825,-7163,-4299,-7969,-5975]],"id":"21053","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[8202,-1894,-2109,8203,-7697,-4324,8204,-3461]],"id":"39151","properties":{"name":"Stark"}},{"type":"Polygon","arcs":[[-3620,-4164,8205,8206,-3378,8207]],"id":"01117","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[8208,-6756,-3539,-3519,-6123,8209]],"id":"41053","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[8210,8211,-3447,8212,-6538,-2188]],"id":"20167","properties":{"name":"Russell"}},{"type":"Polygon","arcs":[[-6621,8213,8214,-1255,-3319,-7534]],"id":"20045","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[-7429,8215,-3069,-1546,-7780]],"id":"20157","properties":{"name":"Republic"}},{"type":"Polygon","arcs":[[8216,8217,-8181,-7308,8218,-7930]],"id":"06095","properties":{"name":"Solano"}},{"type":"Polygon","arcs":[[8219,-4446,-1281,8220,-3834,8221]],"id":"05005","properties":{"name":"Baxter"}},{"type":"Polygon","arcs":[[8222,8223,8224,8225]],"id":"51710","properties":{"name":"Norfolk"}},{"type":"Polygon","arcs":[[8226,8227,-1020,-510,-1719,-3153,-3793,8228,-5028]],"id":"35025","properties":{"name":"Lea"}},{"type":"MultiPolygon","arcs":[[[-7998,-3703]],[[-7555,-3869,-3696,-7997,8229]]],"id":"22065","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-5029,-8229,-3796,-7541,8230]],"id":"48301","properties":{"name":"Loving"}},{"type":"MultiPolygon","arcs":[[[8231,8232]],[[8233,8234,8235,-7149,8236,-6336],[8237],[-7145]]],"id":"08014","properties":{"name":"Broomfield"}},{"type":"Polygon","arcs":[[-2720,8238,-7196,8239,-3347,-5770,8240,-4525]],"id":"40089","properties":{"name":"McCurtain"}},{"type":"Polygon","arcs":[[8241,-6386,8242,-4935,-6907]],"id":"54069","properties":{"name":"Ohio"}},{"type":"Polygon","arcs":[[-6176,-6689,-7717,8243,8244]],"id":"37075","properties":{"name":"Graham"}},{"type":"Polygon","arcs":[[8245,-8244,-7721,-7791,8246,-2136,-5646]],"id":"37039","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[-4971,-3637,8247,-7831]],"id":"31043","properties":{"name":"Dakota"}},{"type":"Polygon","arcs":[[8248,8249,8250,-5790,-6494,-7681,8251,-6185,8252,-3667]],"id":"25027","properties":{"name":"Worcester"}},{"type":"Polygon","arcs":[[8253,8254,8255,-1910,8256,-2848]],"id":"39017","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[8257,-8193,-5492,-1267,-4423,8258]],"id":"22015","properties":{"name":"Bossier"}},{"type":"Polygon","arcs":[[-4011,-1145,-1828,-4226,8259]],"id":"17103","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[-4353,-5590,8260,8261,-7689,8262]],"id":"41051","properties":{"name":"Multnomah"}},{"type":"Polygon","arcs":[[8263,-5495,8264,-6299,8265]],"id":"37019","properties":{"name":"Brunswick"}},{"type":"Polygon","arcs":[[8266,-6084,-6038,8267,-6981,-6887,-3504]],"id":"47141","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[8268,8269,8270,8271,-4018,8272]],"id":"37083","properties":{"name":"Halifax"}},{"type":"Polygon","arcs":[[-3096,-7460,-2674,8273,-3645,-1844]],"id":"16023","properties":{"name":"Butte"}},{"type":"Polygon","arcs":[[8274,-4395,-6332,-4393,-6338],[-4392]],"id":"08031","properties":{"name":"Denver"}},{"type":"Polygon","arcs":[[-7510,-7590,8275,-7553,8276,-5615]],"id":"22067","properties":{"name":"Morehouse"}},{"type":"Polygon","arcs":[[8277,-4570,-2285]],"id":"51735","properties":{"name":"Poquoson"}},{"type":"Polygon","arcs":[[8278,-8226,8279,8280]],"id":"51740","properties":{"name":"Portsmouth"}},{"type":"MultiPolygon","arcs":[[[-8238]],[[8281,-7150,-8236,-8235,-8234,-6335,8282,-6452],[-8232,-8233]]],"id":"08013","properties":{"name":"Boulder"}},{"type":"Polygon","arcs":[[8283,8284,-7282,8285,-8163]],"id":"22071","properties":{"name":"Orleans"}},{"type":"Polygon","arcs":[[-5058,-3949,-7792,-7718,-6687]],"id":"37099","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[8286,8287,8288,-2697,8289,-7243]],"id":"01025","properties":{"name":"Clarke"}},{"type":"Polygon","arcs":[[-7249,-4593,8290,-6321,-6592,8291,-8287,-7242]],"id":"01091","properties":{"name":"Marengo"}},{"type":"Polygon","arcs":[[8292,8293,-6322,-8291,-4592]],"id":"01065","properties":{"name":"Hale"}},{"type":"Polygon","arcs":[[8294,8295,-2978,8296,8297]],"id":"01075","properties":{"name":"Lamar"}},{"type":"Polygon","arcs":[[8298,-8297,-2977,8299,-4590,-7248,8300]],"id":"01107","properties":{"name":"Pickens"}},{"type":"Polygon","arcs":[[-4855,-6221,8301,-4200,-3398,-3890]],"id":"31127","properties":{"name":"Nemaha"}},{"type":"Polygon","arcs":[[8302,-4323,-4725,-4321,-7016,8303,-2931,8304,-5169,-6166,-5167,8305,-7077]],"id":"51041","properties":{"name":"Chesterfield"}},{"type":"Polygon","arcs":[[-7692,-5738,8306,-5261,-1746]],"id":"48403","properties":{"name":"Sabine"}},{"type":"Polygon","arcs":[[8307,-6282,-583,8308]],"id":"26019","properties":{"name":"Benzie"}},{"type":"Polygon","arcs":[[8309,-5889,-6638,8310,-7424,-4072]],"id":"29037","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-8207,8311,-3631,8312,-5251,-3379]],"id":"01037","properties":{"name":"Coosa"}},{"type":"Polygon","arcs":[[-5446,8313,-7151,-8282,-6451,-473]],"id":"08069","properties":{"name":"Larimer"}},{"type":"Polygon","arcs":[[-7583,-5848,8314,8315,-7765,8316]],"id":"47037","properties":{"name":"Davidson"}},{"type":"Polygon","arcs":[[8317,-7632,-6924,8318,-6062,8319]],"id":"42027","properties":{"name":"Centre"}},{"type":"Polygon","arcs":[[8320,8321,8322,8323,-6055,-7034]],"id":"48015","properties":{"name":"Austin"}},{"type":"Polygon","arcs":[[8324,-5099,8325,8326]],"id":"50013","properties":{"name":"Grand Isle"}},{"type":"Polygon","arcs":[[-5999,8327,-8281,8328,8329,-8097,8330]],"id":"51800","properties":{"name":"Suffolk"}},{"type":"Polygon","arcs":[[8331,8332,-2330,-3271]],"id":"08025","properties":{"name":"Crowley"}},{"type":"Polygon","arcs":[[8333,-3274,8334,-6461]],"id":"08027","properties":{"name":"Custer"}},{"type":"Polygon","arcs":[[-5611,-5616,-8277,-7557,-6631,-8094]],"id":"22073","properties":{"name":"Ouachita"}},{"type":"Polygon","arcs":[[-6329,-2329,-259,-425,-8064,-2725]],"id":"48383","properties":{"name":"Reagan"}},{"type":"Polygon","arcs":[[-2358,-7856,-2390,-4732,-3725,-530]],"id":"40137","properties":{"name":"Stephens"}},{"type":"Polygon","arcs":[[-3605,8335,-6643,-2322,-2312]],"id":"29179","properties":{"name":"Reynolds"}},{"type":"Polygon","arcs":[[-5030,-8231,-7544,8336,-3230,8337]],"id":"48389","properties":{"name":"Reeves"}},{"type":"Polygon","arcs":[[-7705,-1880,8338,-3270,8339,-2340]],"id":"08041","properties":{"name":"El Paso"}},{"type":"Polygon","arcs":[[8340,8341,8342,-7526,8343,-7566,8344]],"id":"39167","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-7652,-1740,8345,-4722,-7656,8346]],"id":"51045","properties":{"name":"Craig"}},{"type":"Polygon","arcs":[[-2991,8347,8348,-3617,8349,-2975,8350]],"id":"01127","properties":{"name":"Walker"}},{"type":"Polygon","arcs":[[-8018,8351,8352,-6208,-6269,-7083,8353],[-6775]],"id":"51069","properties":{"name":"Frederick"}},{"type":"Polygon","arcs":[[-1476,-4648,8354,8355,8356]],"id":"30095","properties":{"name":"Stillwater"}},{"type":"Polygon","arcs":[[-2161,8357,-7803,8358,8359,-15]],"id":"22117","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-5847,-1228,-3506,-6890,8360,8361,-8315]],"id":"47189","properties":{"name":"Wilson"}},{"type":"Polygon","arcs":[[8362,-4187,-6006,8363,-3260,-7772,-7776]],"id":"16035","properties":{"name":"Clearwater"}},{"type":"MultiPolygon","arcs":[[[8364]],[[8365,8366]],[[8367,8368,-4789,-8166,8369,8370,-7842]]],"id":"22057","properties":{"name":"Lafourche"}},{"type":"Polygon","arcs":[[8371,-7461,8372]],"id":"26047","properties":{"name":"Emmet"}},{"type":"Polygon","arcs":[[-7069,8373,8374,-8269,-1079,-3825]],"id":"37185","properties":{"name":"Warren"}},{"type":"MultiPolygon","arcs":[[[8375]]],"id":"69120","properties":{"name":"Tinian"}},{"type":"Polygon","arcs":[[8376,8377,-161,-7747,-7088,8378]],"id":"72013","properties":{"name":"Arecibo"}},{"type":"Polygon","arcs":[[-1618,-7352,8379,-3716,-7468]],"id":"26115","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-2302,8380,-2344]],"id":"30047","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-2345,-8381,-2301,8381,8382,-1997,-3261,-8364,-6005]],"id":"30063","properties":{"name":"Missoula"}},{"type":"Polygon","arcs":[[-8283,-6334,8383,-6453]],"id":"08047","properties":{"name":"Gilpin"}},{"type":"Polygon","arcs":[[-6462,-8335,-3273,-7220,-7142,-3300]],"id":"08055","properties":{"name":"Huerfano"}},{"type":"Polygon","arcs":[[8384,8385,-7106,8386,-2444,-7064,-5831,-5581]],"id":"54059","properties":{"name":"Mingo"}},{"type":"Polygon","arcs":[[-174,8387,-8352,-8017,-332]],"id":"54065","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[-7244,-8290,-2696,8388,8389,-7980]],"id":"01129","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-2146,8390,8391,8392,-3412,-1373,-1367,-7115]],"id":"17173","properties":{"name":"Shelby"}},{"type":"Polygon","arcs":[[8393,-5817,-4412,-7413,-3508,8394]],"id":"18165","properties":{"name":"Vermillion"}},{"type":"Polygon","arcs":[[-4987,8395,8396,-7411,-8196,8397,8398]],"id":"34005","properties":{"name":"Burlington"}},{"type":"Polygon","arcs":[[-3310,8399,-5587,-5389,-477,-6556]],"id":"27045","properties":{"name":"Fillmore"}},{"type":"Polygon","arcs":[[-263,8400,8401,-4750,8402,8403]],"id":"48439","properties":{"name":"Tarrant"}},{"type":"Polygon","arcs":[[-4859,8404,8405,-5875,8406,8407,-4866]],"id":"17031","properties":{"name":"Cook"}},{"type":"MultiPolygon","arcs":[[[8408]],[[8409]],[[8410]],[[8411]],[[8412]]],"id":"69085","properties":{"name":"Northern Islands"}},{"type":"Polygon","arcs":[[-8280,-8225,8413,-4715,8414,-8329]],"id":"51550","properties":{"name":"Chesapeake"}},{"type":"Polygon","arcs":[[-3032,8415,-6553,-5414,-1133,-1314]],"id":"26155","properties":{"name":"Shiawassee"}},{"type":"Polygon","arcs":[[8416,8417,-481,-87,8418,-3030,-3671]],"id":"26157","properties":{"name":"Tuscola"}},{"type":"Polygon","arcs":[[-719,8419,-6954,-6239]],"id":"38011","properties":{"name":"Bowman"}},{"type":"Polygon","arcs":[[8420,-1783,-714,-6238,-3740]],"id":"38033","properties":{"name":"Golden Valley"}},{"type":"Polygon","arcs":[[-4338,-2250,8421,8422,-6984,-6315,8423]],"id":"55035","properties":{"name":"Eau Claire"}},{"type":"Polygon","arcs":[[8424,8425,8426,-4031,-1273,8427]],"id":"32005","properties":{"name":"Douglas"}},{"type":"Polygon","arcs":[[8428,-485,8429,-4229]],"id":"18009","properties":{"name":"Blackford"}},{"type":"Polygon","arcs":[[-3599,-2201,8430,-486,-8429,-4228]],"id":"18179","properties":{"name":"Wells"}},{"type":"Polygon","arcs":[[8431,-1955,-5624,8432,8433]],"id":"05013","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[-2521,8434,-5880,8435,8436,-182,8437]],"id":"17091","properties":{"name":"Kankakee"}},{"type":"Polygon","arcs":[[-7232,-7317,-6490,-4053]],"id":"18163","properties":{"name":"Vanderburgh"}},{"type":"Polygon","arcs":[[8438,-3262,-2853,-3049,8439,-2985]],"id":"16003","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-6186,-8252,-7683,-7685,8440]],"id":"09013","properties":{"name":"Tolland"}},{"type":"Polygon","arcs":[[-4471,-7322,8441,-4303,8442,8443,-4061,-7823]],"id":"21111","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-8359,-7802,-6560,-8008,-454,8444,8445]],"id":"28109","properties":{"name":"Pearl River"}},{"type":"Polygon","arcs":[[8446,8447,-8368,-7841]],"id":"22093","properties":{"name":"St. James"}},{"type":"Polygon","arcs":[[-361,-4369,-7669,8448,-5673,8449]],"id":"49013","properties":{"name":"Duchesne"}},{"type":"Polygon","arcs":[[-6766,-6193,8450,-3770,-3114]],"id":"48209","properties":{"name":"Hays"}},{"type":"Polygon","arcs":[[8451,-5676,-5686,8452,8453]],"id":"49023","properties":{"name":"Juab"}},{"type":"Polygon","arcs":[[8454,8455,8456,-6706,8457,-8270,-8375]],"id":"37131","properties":{"name":"Northampton"}},{"type":"Polygon","arcs":[[-2767,-4942,8458,-1829,8459,-876]],"id":"01041","properties":{"name":"Crenshaw"}},{"type":"Polygon","arcs":[[-4589,8460,8461,8462]],"id":"16007","properties":{"name":"Bear Lake"}},{"type":"Polygon","arcs":[[-2883,8463,8464,-1697,-1906,-8256,8465]],"id":"39113","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[8466,8467,8468,8469,8470,-1831]],"id":"01045","properties":{"name":"Dale"}},{"type":"MultiPolygon","arcs":[[[8471,8472]],[[8473,8474]]],"id":"06075","properties":{"name":"San Francisco"}},{"type":"Polygon","arcs":[[-7121,8475,8476,8477,-2157]],"id":"08091","properties":{"name":"Ouray"}},{"type":"Polygon","arcs":[[-7272,8478,-5294,-5511,8479,8480]],"id":"17153","properties":{"name":"Pulaski"}},{"type":"Polygon","arcs":[[8481,8482,8483,-6162,-8158,8484]],"id":"05121","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[-3548,-6102,-6111,-4805,-6447,-3357,8485]],"id":"05145","properties":{"name":"White"}},{"type":"Polygon","arcs":[[8486,-679,8487,-3464,-949,-6776,-4265]],"id":"39005","properties":{"name":"Ashland"}},{"type":"Polygon","arcs":[[-3918,-2236,8488,-8182,-6750,-4269]],"id":"40101","properties":{"name":"Muskogee"}},{"type":"MultiPolygon","arcs":[[[8489]],[[8490]],[[-4343,-7843,-8371,8491,-8366,8492]]],"id":"22109","properties":{"name":"Terrebonne"}},{"type":"Polygon","arcs":[[8493,-8210,-6125,-6126,8494]],"id":"41041","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-482,-8418,8495]],"id":"26063","properties":{"name":"Huron"}},{"type":"Polygon","arcs":[[8496,-1150,-7903,-6265,8497]],"id":"29227","properties":{"name":"Worth"}},{"type":"Polygon","arcs":[[8498,8499,-6477,-6781,8500,-5092]],"id":"29175","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[8501]],"id":"15003","properties":{"name":"Honolulu"}},{"type":"Polygon","arcs":[[8502,-8453,-5685,8503,-6369,-4493]],"id":"49027","properties":{"name":"Millard"}},{"type":"Polygon","arcs":[[-8504,-5684,-6088,-6067,-5576,-6370]],"id":"49041","properties":{"name":"Sevier"}},{"type":"Polygon","arcs":[[8504,-7036,-5574,8505,-5677,-8452,8506]],"id":"49045","properties":{"name":"Tooele"}},{"type":"MultiPolygon","arcs":[[[8507,8508,8509,8510]],[[8511]],[[8512]],[[8513]],[[8514,8515,8516]],[[8517]],[[8518]],[[8519]],[[8520]]],"id":"12087","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[8521,8522,-6121,8523,-6022,8524,8525,-4767]],"id":"13033","properties":{"name":"Burke"}},{"type":"Polygon","arcs":[[-4029,8526,8527,-8152,8528,8529]],"id":"01081","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[8530,-6093,-3785,8531,8532,8533,8534]],"id":"48409","properties":{"name":"San Patricio"}},{"type":"Polygon","arcs":[[-7108,-8088,-2746]],"id":"06043","properties":{"name":"Mariposa"}},{"type":"Polygon","arcs":[[-7640,8535,-8498,-6264,8536,8537,-6219]],"id":"29147","properties":{"name":"Nodaway"}},{"type":"Polygon","arcs":[[-1369,-1376,-3254,-1190,-3226,-2822]],"id":"17025","properties":{"name":"Clay"}},{"type":"MultiPolygon","arcs":[[[8538]],[[8539]],[[8540]],[[8541]],[[-57,8542,-3183,8543]]],"id":"02130","properties":{"name":"Ketchikan Gateway"}},{"type":"Polygon","arcs":[[8544,-1444,8545,-2087]],"id":"02282","properties":{"name":"Yakutat"}},{"type":"Polygon","arcs":[[-2200,-1904,8546,-487,-8431]],"id":"18001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[8547,-1211,-5309,8548,8549]],"id":"08017","properties":{"name":"Cheyenne"}},{"type":"Polygon","arcs":[[-6500,8550,-5061,8551,-5960]],"id":"47173","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-184,8552,-3001,8553,-8395,-3507,8554]],"id":"17183","properties":{"name":"Vermilion"}},{"type":"Polygon","arcs":[[8555,8556]],"id":"53009","properties":{"name":"Clallam"}},{"type":"Polygon","arcs":[[8557,8558,8559,-8009,-7099,8560]],"id":"53027","properties":{"name":"Grays Harbor"}},{"type":"Polygon","arcs":[[8561,8562,-2496,8563,-7910]],"id":"12109","properties":{"name":"St. Johns"}},{"type":"Polygon","arcs":[[-8556,8564,8565,-8558,8566]],"id":"53031","properties":{"name":"Jefferson"}},{"type":"MultiPolygon","arcs":[[[-7932,8567]]],"id":"06041","properties":{"name":"Marin"}},{"type":"Polygon","arcs":[[-7078,-8306,-5171,8568,-7053,8569,8570,8571]],"id":"51053","properties":{"name":"Dinwiddie"}},{"type":"Polygon","arcs":[[-4774,-1253,8572,-5273]],"id":"17129","properties":{"name":"Menard"}},{"type":"Polygon","arcs":[[-4367,-6003,8573,-7267,-7749,-7670]],"id":"08081","properties":{"name":"Moffat"}},{"type":"Polygon","arcs":[[-7284,8574,-8462,-5354,-4049]],"id":"16041","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-6520,-8022,8575,-8179,8576,-3988]],"id":"06101","properties":{"name":"Sutter"}},{"type":"Polygon","arcs":[[-7696,-8190,-6387,-8242,-6906,-840,-4326]],"id":"39081","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-7497,-191,8577,-6941,8578]],"id":"35009","properties":{"name":"Curry"}},{"type":"Polygon","arcs":[[-2877,8579,-5337,8580,8581]],"id":"36021","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[-7513,8582,-2435,-3210,-7617,-6563]],"id":"28083","properties":{"name":"Leflore"}},{"type":"Polygon","arcs":[[-8247,-7790,8583,-3996,8584,-2137]],"id":"13291","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[8585,-6914,8586,8587,-5428,8588]],"id":"39001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-4501,-8198,8589]],"id":"34009","properties":{"name":"Cape May"}},{"type":"Polygon","arcs":[[-4497,-12,-2004,-5045,8590]],"id":"32003","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[-7680,8591,8592,8593,-8214,-6620]],"id":"20103","properties":{"name":"Leavenworth"}},{"type":"Polygon","arcs":[[-3394,-5349,-8303,-7076]],"id":"51145","properties":{"name":"Powhatan"}},{"type":"Polygon","arcs":[[-4157,8594,8595,8596,8597,-1105,-3805]],"id":"53043","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[8598,8599,-640,8600,8601,-8559,-8566]],"id":"53045","properties":{"name":"Mason"}},{"type":"MultiPolygon","arcs":[[[8602]],[[8603]],[[8604]],[[8605]]],"id":"53055","properties":{"name":"San Juan"}},{"type":"Polygon","arcs":[[8606,-3246,8607,8608,8609]],"id":"17133","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-1795,8610,8611,8612,-7118,8613]],"id":"08097","properties":{"name":"Pitkin"}},{"type":"Polygon","arcs":[[8614,-8131,-979,8615,-567]],"id":"06035","properties":{"name":"Lassen"}},{"type":"Polygon","arcs":[[-3569,-2913,-2210,-2168,-289]],"id":"19101","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[8616,-5310,-2903,-7218,-3363,8617]],"id":"08099","properties":{"name":"Prowers"}},{"type":"Polygon","arcs":[[-732,-4188,-8363,-7775,8618]],"id":"16057","properties":{"name":"Latah"}},{"type":"Polygon","arcs":[[-2505,8619,8620,-6464,8621]],"id":"12097","properties":{"name":"Osceola"}},{"type":"Polygon","arcs":[[8622,8623,8624,-855,8625,-348]],"id":"27171","properties":{"name":"Wright"}},{"type":"Polygon","arcs":[[-6594,-2625,8626,8627,-8106,8628,-219]],"id":"13293","properties":{"name":"Upson"}},{"type":"Polygon","arcs":[[8629,8630,-7408,8631,8632]],"id":"31049","properties":{"name":"Deuel"}},{"type":"Polygon","arcs":[[8633,-939,-689,-187,-7496]],"id":"48359","properties":{"name":"Oldham"}},{"type":"Polygon","arcs":[[8634,-1821,8635,-1770,-3846,-5808]],"id":"13297","properties":{"name":"Walton"}},{"type":"Polygon","arcs":[[-6606,-6326,8636,8637,8638,-7184]],"id":"13303","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[8639,-7436,8640,8641,8642]],"id":"34013","properties":{"name":"Essex"}},{"type":"Polygon","arcs":[[8643,8644,8645,-4812,8646,8647,-5248]],"id":"13305","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[8648,-7224,-5150,-3247,-8607,8649,-3885]],"id":"29189","properties":{"name":"St. Louis"}},{"type":"Polygon","arcs":[[-7537,-18,8650,8651,-4843]],"id":"22063","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[-3381,-5254,-4943,-2765,-6590]],"id":"01001","properties":{"name":"Autauga"}},{"type":"Polygon","arcs":[[-8086,-8155,8652,8653,8654,8655,-8468,8656]],"id":"01005","properties":{"name":"Barbour"}},{"type":"MultiPolygon","arcs":[[[8657]],[[-8389,-2695,8658,8659,8660,8661]]],"id":"01097","properties":{"name":"Mobile"}},{"type":"Polygon","arcs":[[8662,-1728,8663,-8596,8664]],"id":"53065","properties":{"name":"Stevens"}},{"type":"MultiPolygon","arcs":[[[8665]],[[-4160,-6233,8666]],[[8667]]],"id":"53073","properties":{"name":"Whatcom"}},{"type":"Polygon","arcs":[[-1731,8668,-3432,-3204,8669,8670,8671]],"id":"13019","properties":{"name":"Berrien"}},{"type":"Polygon","arcs":[[8672,-4587,-6004,-358]],"id":"56041","properties":{"name":"Uinta"}},{"type":"Polygon","arcs":[[8673,-8570,-7056,8674,-8456],[-1219]],"id":"51081","properties":{"name":"Greensville"}},{"type":"Polygon","arcs":[[-8337,-7543,-5025,-8067,8675,-5855,-3231]],"id":"48371","properties":{"name":"Pecos"}},{"type":"Polygon","arcs":[[-3723,-7235,8676,8677,-2933,-5385]],"id":"17161","properties":{"name":"Rock Island"}},{"type":"Polygon","arcs":[[-1215,-2884,-8466,-8255,8678]],"id":"39135","properties":{"name":"Preble"}},{"type":"Polygon","arcs":[[8679,-1085,8680,-801,8681,-1900]],"id":"39137","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[8682,-8477,8683,8684,-5256]],"id":"08111","properties":{"name":"San Juan"}},{"type":"Polygon","arcs":[[-2920,8685,-1912,8686]],"id":"48385","properties":{"name":"Real"}},{"type":"Polygon","arcs":[[-2300,-1988,-5595,-6074,8687,-8382]],"id":"30077","properties":{"name":"Powell"}},{"type":"Polygon","arcs":[[8688,8689,8690,8691,-4578,8692]],"id":"13309","properties":{"name":"Wheeler"}},{"type":"Polygon","arcs":[[-3085,-5810,8693,-7206,-2006]],"id":"06065","properties":{"name":"Riverside"}},{"type":"Polygon","arcs":[[-7378,-1652,-506,8694,8695]],"id":"40115","properties":{"name":"Ottawa"}},{"type":"Polygon","arcs":[[-6883,-7746,8696,-2755,8697]],"id":"72103","properties":{"name":"Naguabo"}},{"type":"Polygon","arcs":[[-3683,8698,8699,-1049]],"id":"26001","properties":{"name":"Alcona"}},{"type":"Polygon","arcs":[[8700,-5861,-825,8701,8702,-1498]],"id":"56043","properties":{"name":"Washakie"}},{"type":"Polygon","arcs":[[8703,-5018,-7971,-5005,-4751,-8402]],"id":"48113","properties":{"name":"Dallas"}},{"type":"Polygon","arcs":[[8704,-7181,8705,8706]],"id":"72059","properties":{"name":"Guayanilla"}},{"type":"Polygon","arcs":[[-895,-2203,-3598,-2150,-5970]],"id":"18183","properties":{"name":"Whitley"}},{"type":"Polygon","arcs":[[-5412,-5394,-7479,8707,-7401,-4558]],"id":"47047","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-4865,-7781,-6406,8708,-8211,-2187,-3411]],"id":"20141","properties":{"name":"Osborne"}},{"type":"Polygon","arcs":[[-7098,8709,-6997,8710,8711,8712,-2127]],"id":"72011","properties":{"name":"Añasco"}},{"type":"MultiPolygon","arcs":[[[-8712,8713,-2119,-6853,-5008,-4345,8714]],[[8715]]],"id":"72097","properties":{"name":"Mayagüez"}},{"type":"Polygon","arcs":[[-2196,8716]],"id":"60010","properties":{"name":"Eastern"}},{"type":"Polygon","arcs":[[8717,-6195,-5280,-4919,-3664,-5332,8718]],"id":"50003","properties":{"name":"Bennington"}},{"type":"Polygon","arcs":[[-4158,-3803,-2500,-2485]],"id":"53017","properties":{"name":"Douglas"}},{"type":"MultiPolygon","arcs":[[[-3779,8719,8720,8721]],[[-8533,8722,8723,8724]]],"id":"48355","properties":{"name":"Nueces"}},{"type":"Polygon","arcs":[[8725,8726,8727,-2575,-5097]],"id":"50019","properties":{"name":"Orleans"}},{"type":"Polygon","arcs":[[-5400,-6446,8728,-7505,-3814,-562,-5403]],"id":"54023","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[8729,-5943,8730,8731,-2010]],"id":"13073","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[-2861,8732,-5715,-4605,8733,-4318,-5348]],"id":"51085","properties":{"name":"Hanover"}},{"type":"Polygon","arcs":[[-4526,-8241,-5774,-7937,8734,-2361,-8062,8735]],"id":"48387","properties":{"name":"Red River"}},{"type":"Polygon","arcs":[[8736,-2105,-3574,8737,8738,8739,-6912]],"id":"39141","properties":{"name":"Ross"}},{"type":"Polygon","arcs":[[-67,8740,-8689,8741,8742,-2508]],"id":"13091","properties":{"name":"Dodge"}},{"type":"Polygon","arcs":[[-6310,8743,8744,-1822,-8635,-5807,-3991]],"id":"13135","properties":{"name":"Gwinnett"}},{"type":"Polygon","arcs":[[-6467,-2139,8745,8746,8747,-6251,-6601]],"id":"13085","properties":{"name":"Dawson"}},{"type":"Polygon","arcs":[[8748,-3626,8749,-7777,-3263,-8439,-2984,8750,8751]],"id":"41063","properties":{"name":"Wallowa"}},{"type":"Polygon","arcs":[[-8638,8752,-4773,8753,8754]],"id":"13167","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-6325,8755,-2012,8756,-8522,-4766,-8753,-8637]],"id":"13163","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[8757,8758,8759,-1692,-8465]],"id":"39023","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[8760,8761,8762,8763,8764,-3747,-4434,8765]],"id":"29069","properties":{"name":"Dunklin"}},{"type":"Polygon","arcs":[[8766,-8327,8767,-7723,-7994]],"id":"36019","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-7651,-7730,8768,8769,-4759,8770,-1742],[-3136],[-1282]],"id":"51163","properties":{"name":"Rockbridge"}},{"type":"Polygon","arcs":[[-5870,8771,-8141,8772]],"id":"42099","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[8773,8774,-8762,8775,-8483]],"id":"05021","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-172,-3757,-6205,8776]],"id":"54037","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[8777,8778,8779,-2297]],"id":"30035","properties":{"name":"Glacier"}},{"type":"Polygon","arcs":[[-8326,-5098,-2578,8780,8781,-7724,-8768]],"id":"50007","properties":{"name":"Chittenden"}},{"type":"Polygon","arcs":[[8782,-2960,-4777,-4970,-6113]],"id":"19167","properties":{"name":"Sioux"}},{"type":"Polygon","arcs":[[-722,-411,-2351,-1715,-6893,-5021]],"id":"48083","properties":{"name":"Coleman"}},{"type":"Polygon","arcs":[[-2596,8783,-1104,-7693,-7025,8784,-7991]],"id":"48401","properties":{"name":"Rusk"}},{"type":"Polygon","arcs":[[8785,8786,8787,8788,-5422,-8588]],"id":"39145","properties":{"name":"Scioto"}},{"type":"MultiPolygon","arcs":[[[8789,-1436]],[[8790]],[[8791,-1429,8792,-1433,8793,-2018]]],"id":"02110","properties":{"name":"Juneau"}},{"type":"Polygon","arcs":[[8794,8795,-7518,-7303,-3839]],"id":"05077","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[-4807,-614,8796,-8795,-3838]],"id":"05123","properties":{"name":"St. Francis"}},{"type":"Polygon","arcs":[[-5593,8797,-8074,-1512]],"id":"55079","properties":{"name":"Milwaukee"}},{"type":"Polygon","arcs":[[-8422,-2249,-2588,8798,8799,-8101,8800]],"id":"55053","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-4565,-6653,-7504,8801,-8396,-4986]],"id":"34021","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[8802,-7075,-6737,-7446,-4739]],"id":"37009","properties":{"name":"Ashe"}},{"type":"Polygon","arcs":[[8803,-2134,-6722,8804,-1009]],"id":"27167","properties":{"name":"Wilkin"}},{"type":"Polygon","arcs":[[-2230,-3442,-341,8805,8806,8807]],"id":"38051","properties":{"name":"McIntosh"}},{"type":"Polygon","arcs":[[-8781,-2577,8808,8809,8810]],"id":"50023","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-7832,-8248,-3636,8811,8812,-1061,-1663]],"id":"31173","properties":{"name":"Thurston"}},{"type":"Polygon","arcs":[[-6816,8813,8814,-8133]],"id":"32027","properties":{"name":"Pershing"}},{"type":"Polygon","arcs":[[8815,-8810,8816,8817,-5277]],"id":"50017","properties":{"name":"Orange"}},{"type":"MultiPolygon","arcs":[[[8818]],[[8819]],[[-7111,8820]]],"id":"55029","properties":{"name":"Door"}},{"type":"Polygon","arcs":[[-568,-8616,-978,-8020,-6518,-2219]],"id":"06063","properties":{"name":"Plumas"}},{"type":"Polygon","arcs":[[-6917,-3224,-4267,-94,8821,-797]],"id":"39147","properties":{"name":"Seneca"}},{"type":"Polygon","arcs":[[-5517,-4907,8822,-7212,8823,8824]],"id":"13103","properties":{"name":"Effingham"}},{"type":"Polygon","arcs":[[8825,-5806,8826,8827,8828,-5536,-2608]],"id":"31161","properties":{"name":"Sheridan"}},{"type":"Polygon","arcs":[[-602,-269,-106,-107,-1420,8829]],"id":"46087","properties":{"name":"McCook"}},{"type":"Polygon","arcs":[[8830,-207,8831,8832,8833,-2758,-4334]],"id":"55083","properties":{"name":"Oconto"}},{"type":"Polygon","arcs":[[-2417,-6323,-2812,8834]],"id":"02068","properties":{"name":"Denali"}},{"type":"Polygon","arcs":[[-7435,-4508,8835,8836,8837,-8641]],"id":"34017","properties":{"name":"Hudson"}},{"type":"Polygon","arcs":[[-1500,8838,-8702,-829,8839,-6001,-5352,-6330]],"id":"56013","properties":{"name":"Fremont"}},{"type":"Polygon","arcs":[[-2778,-3752,-5442,-6475,-8500]],"id":"29137","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[8840,-2635,8841,-3570,-2103]],"id":"39045","properties":{"name":"Fairfield"}},{"type":"Polygon","arcs":[[-8192,-5163,8842,8843,-7926,-5490]],"id":"05027","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[8844,8845,-4460,-4110,-7984]],"id":"55065","properties":{"name":"Lafayette"}},{"type":"Polygon","arcs":[[-4512,8846,8847]],"id":"36047","properties":{"name":"Kings"}},{"type":"Polygon","arcs":[[-1993,-1544,-7757,-5112,-6104,-2274]],"id":"29141","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[-6257,8848,-869,-7448,-5343,-7382]],"id":"27151","properties":{"name":"Swift"}},{"type":"Polygon","arcs":[[8849,-6138,-5730,-6043,8850,-6045,8851,-3743,-8765]],"id":"29143","properties":{"name":"New Madrid"}},{"type":"Polygon","arcs":[[-7837,-3166,-987,-4461,-8846,8852]],"id":"55045","properties":{"name":"Green"}},{"type":"Polygon","arcs":[[-8814,-6815,8853,-5609,8854,8855]],"id":"32015","properties":{"name":"Lander"}},{"type":"Polygon","arcs":[[8856,-8136]],"id":"32029","properties":{"name":"Storey"}},{"type":"Polygon","arcs":[[-7459,-6791,-2942,-4655,-4924]],"id":"35001","properties":{"name":"Bernalillo"}},{"type":"Polygon","arcs":[[-3203,-7397,-7125,8857,-8670]],"id":"13173","properties":{"name":"Lanier"}},{"type":"Polygon","arcs":[[-5776,-44,-4960,-4555,-7422,-1480,8858]],"id":"56045","properties":{"name":"Weston"}},{"type":"Polygon","arcs":[[8859,-6655,-2927,8860,8861,8862]],"id":"36009","properties":{"name":"Cattaraugus"}},{"type":"Polygon","arcs":[[8863,8864,-136,-7662,-2466,-143,8865]],"id":"72127","properties":{"name":"San Juan"}},{"type":"Polygon","arcs":[[8866,8867,-137,-8865]],"id":"72139","properties":{"name":"Trujillo Alto"}},{"type":"Polygon","arcs":[[-2693,-1112,-1884,-1890,8868]],"id":"19049","properties":{"name":"Dallas"}},{"type":"Polygon","arcs":[[-8066,8869,8870,-5856,-8676]],"id":"48443","properties":{"name":"Terrell"}},{"type":"Polygon","arcs":[[8871,-7793,-6526,-1917,8872]],"id":"13119","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-5935,-582,8873,-7270,8874]],"id":"17199","properties":{"name":"Williamson"}},{"type":"Polygon","arcs":[[-1937,8875,-7759,-5898,8876,-2107]],"id":"39155","properties":{"name":"Trumbull"}},{"type":"Polygon","arcs":[[-1171,-1825,8877,8878,-1874,8879]],"id":"17203","properties":{"name":"Woodford"}},{"type":"Polygon","arcs":[[-8685,8880,-621,-6096,-4040]],"id":"08067","properties":{"name":"La Plata"}},{"type":"Polygon","arcs":[[-3462,-8205,-4327,-838,-1923,8881]],"id":"39157","properties":{"name":"Tuscarawas"}},{"type":"Polygon","arcs":[[-5258,-2260,-2891,-2142,-25,-6433,-4329,-6108]],"id":"27089","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-1787,-1763,-7917,-7833,-5751,8882]],"id":"27115","properties":{"name":"Pine"}},{"type":"Polygon","arcs":[[-5162,8883,8884,-8434,8885,-8843]],"id":"05103","properties":{"name":"Ouachita"}},{"type":"Polygon","arcs":[[8886,8887,-675,-8487,-4264,8888]],"id":"39093","properties":{"name":"Lorain"}},{"type":"Polygon","arcs":[[8889,-6588,8890,-6360,8891,-5057]],"id":"37021","properties":{"name":"Buncombe"}},{"type":"Polygon","arcs":[[-6164,8892,-8766,-4441,-3977,-6110]],"id":"05031","properties":{"name":"Craighead"}},{"type":"Polygon","arcs":[[-5917,-4251,8893,-8227,-5027,-4869]],"id":"35005","properties":{"name":"Chaves"}},{"type":"Polygon","arcs":[[-2560,-2610,-5539,8894,-5781,-7423]],"id":"31165","properties":{"name":"Sioux"}},{"type":"Polygon","arcs":[[-8079,8895,-1956,-8432,-8885,8896]],"id":"05039","properties":{"name":"Dallas"}},{"type":"Polygon","arcs":[[8897,-4194,8898,-5055,-3905,-6362,8899]],"id":"37023","properties":{"name":"Burke"}},{"type":"Polygon","arcs":[[-6587,-4712,8900,-8900,-6361,-8891]],"id":"37111","properties":{"name":"McDowell"}},{"type":"Polygon","arcs":[[-7634,5629,-5630,-5629,-5869,-6926]],"id":"42109","properties":{"name":"Snyder"}},{"type":"Polygon","arcs":[[-8742,-8693,-4577,-3428,-3551,8901]],"id":"13271","properties":{"name":"Telfair"}},{"type":"Polygon","arcs":[[8902,-768,-7226,8903]],"id":"12115","properties":{"name":"Sarasota"}},{"type":"Polygon","arcs":[[-6528,-4550,-6051,-5945,8904,8905,8906,-1919]],"id":"13105","properties":{"name":"Elbert"}},{"type":"Polygon","arcs":[[8907,-8671,-8858,-7129,8908,-7613,8909]],"id":"13185","properties":{"name":"Lowndes"}},{"type":"Polygon","arcs":[[-220,-8629,-8105,8910,-3576,8911,8912]],"id":"13263","properties":{"name":"Talbot"}},{"type":"Polygon","arcs":[[-6867,-4674,8913,-8266,-6298]],"id":"37047","properties":{"name":"Columbus"}},{"type":"Polygon","arcs":[[-7454,-580,-5939,-4293,-6029,-5502,-5501,5500]],"id":"17069","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[-8747,8914,-3999,8915,8916,8917,-8745,8918]],"id":"13139","properties":{"name":"Hall"}},{"type":"Polygon","arcs":[[8919,-5480,-6629,-4529,-3749,8920]],"id":"17001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[8921,8922,-2178,8923,-69,-2507,-1958,-7924]],"id":"13153","properties":{"name":"Houston"}},{"type":"Polygon","arcs":[[8924,-5263,-4209,8925]],"id":"48457","properties":{"name":"Tyler"}},{"type":"Polygon","arcs":[[-6213,-7338,-7660,-5366,-7391,-1767]],"id":"12041","properties":{"name":"Gilchrist"}},{"type":"Polygon","arcs":[[-857,8926,8927,-1943,-3158,-3236]],"id":"27139","properties":{"name":"Scott"}},{"type":"Polygon","arcs":[[-3208,-3103,8928,-3282,-2939,-7599,-7618]],"id":"28007","properties":{"name":"Attala"}},{"type":"Polygon","arcs":[[-8740,8929,-8786,-8587,-6913]],"id":"39131","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-6936,6934,-6934,-2242,-7021,-3197,-6081]],"id":"46095","properties":{"name":"Mellette"}},{"type":"Polygon","arcs":[[8930,8931,-8863,8932,-4885]],"id":"36013","properties":{"name":"Chautauqua"}},{"type":"Polygon","arcs":[[-8114,-8049,8933,8934,8935,-5711,-8733,-2860]],"id":"51177","properties":{"name":"Spotsylvania"}},{"type":"Polygon","arcs":[[-2324,-6647,8936,-8485,-8157,-4444,-8175]],"id":"29149","properties":{"name":"Oregon"}},{"type":"Polygon","arcs":[[-7503,8937,-7412,-8397,-8802]],"id":"34025","properties":{"name":"Monmouth"}},{"type":"Polygon","arcs":[[-8788,8938,-3968,-6513,8939,-6046,8940]],"id":"39087","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-4489,8941,-5131,8942,-1666,-4099,-5496]],"id":"26103","properties":{"name":"Marquette"}},{"type":"Polygon","arcs":[[8943,-5249,-8648,8944,-6471]],"id":"13229","properties":{"name":"Pierce"}},{"type":"MultiPolygon","arcs":[[[8945]],[[8946]]],"id":"15007","properties":{"name":"Kauai"}},{"type":"Polygon","arcs":[[-3172,-5102,-5070,8947,-8320,-6061,-3514,-6668]],"id":"42033","properties":{"name":"Clearfield"}},{"type":"Polygon","arcs":[[-2890,-7377,-7487,-2245,-29,-2144]],"id":"27029","properties":{"name":"Clearwater"}},{"type":"Polygon","arcs":[[8948,-3552,-3426,-8669,-1730]],"id":"13155","properties":{"name":"Irwin"}},{"type":"Polygon","arcs":[[8949,-1790,-6414,8950]],"id":"27035","properties":{"name":"Crow Wing"}},{"type":"Polygon","arcs":[[-305,-5117,-5123,8951,-7828,-4644,-3581,-2563]],"id":"30087","properties":{"name":"Rosebud"}},{"type":"Polygon","arcs":[[-678,-1895,-8203,-3460,-8488]],"id":"39169","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-624,-4811,8952,8953,-7259]],"id":"12051","properties":{"name":"Hendry"}},{"type":"Polygon","arcs":[[-8905,-5944,-8730,-2009,8954]],"id":"13181","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-4476,8955,-8645,8956]],"id":"13183","properties":{"name":"Long"}},{"type":"Polygon","arcs":[[-7239,-2789,8957,-4638,-6090,-1671]],"id":"48469","properties":{"name":"Victoria"}},{"type":"Polygon","arcs":[[-1908,8958,8959,-7155,8960,-7327,8961]],"id":"39025","properties":{"name":"Clermont"}},{"type":"Polygon","arcs":[[-1011,8962,-7383,-5692,8963,-755]],"id":"46109","properties":{"name":"Roberts"}},{"type":"Polygon","arcs":[[-4964,-6082,-355,-8826,-2607,-2558,-4553]],"id":"46102","properties":{"name":"Oglala Lakota"}},{"type":"Polygon","arcs":[[-6844,8964,-3420,-3969,-7736]],"id":"54067","properties":{"name":"Nicholas"}},{"type":"Polygon","arcs":[[8965,-6992,8966,8967,8968]],"id":"72071","properties":{"name":"Isabela"}},{"type":"Polygon","arcs":[[-6996,8969,-2114,-8714,-8711]],"id":"72083","properties":{"name":"Las Marías"}},{"type":"Polygon","arcs":[[8970,8971,-6993,-8966]],"id":"72115","properties":{"name":"Quebradillas"}},{"type":"Polygon","arcs":[[-6995,8972,8973,-7091,-7183,8974,-2115,-8970]],"id":"72081","properties":{"name":"Lares"}},{"type":"Polygon","arcs":[[8975,8976,-7743,-6881]],"id":"72089","properties":{"name":"Luquillo"}},{"type":"Polygon","arcs":[[-7180,-6946,8977,-8706]],"id":"72111","properties":{"name":"Peñuelas"}},{"type":"Polygon","arcs":[[-5619,-7636,-996,8978,8979]],"id":"33017","properties":{"name":"Strafford"}},{"type":"Polygon","arcs":[[-3465,-2281,-3549,-8486,-3361,-3352,-6598]],"id":"05045","properties":{"name":"Faulkner"}},{"type":"Polygon","arcs":[[8980,-8609,8981,-7362,8982]],"id":"29186","properties":{"name":"Ste. Genevieve"}},{"type":"Polygon","arcs":[[-6154,-3642,-3732,-7191,-2532]],"id":"31153","properties":{"name":"Sarpy"}},{"type":"Polygon","arcs":[[-8112,8983,8984,-1523,-5712,-8936,8985,-8934,-8048]],"id":"51179","properties":{"name":"Stafford"}},{"type":"Polygon","arcs":[[8986,-5919,-4262,-6965,-3304,-716,-1782]],"id":"38089","properties":{"name":"Stark"}},{"type":"Polygon","arcs":[[-5823,8987,8988,8989,8990,8991,8992]],"id":"47051","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-496,-2167,-5283,-6487,8993]],"id":"38101","properties":{"name":"Ward"}},{"type":"Polygon","arcs":[[8994,-684,8995,-7957,8996,-8989]],"id":"47115","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[8997,-7666,-5724,-5702,-7621,-1944,-8928]],"id":"27037","properties":{"name":"Dakota"}},{"type":"Polygon","arcs":[[-4230,-8430,-491,8998,-3076,-6613]],"id":"18035","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[-7481,-2908,-1785,8999,-2887]],"id":"27061","properties":{"name":"Itasca"}},{"type":"Polygon","arcs":[[-8700,9000,-3248,-787]],"id":"26069","properties":{"name":"Iosco"}},{"type":"Polygon","arcs":[[-3445,9001,9002,-6546,9003]],"id":"20159","properties":{"name":"Rice"}},{"type":"Polygon","arcs":[[9004,-7473,-5886,9005,-8593]],"id":"20209","properties":{"name":"Wyandotte"}},{"type":"Polygon","arcs":[[9006,-5567,-559,-936,-2751,-3773,9007]],"id":"48479","properties":{"name":"Webb"}},{"type":"Polygon","arcs":[[-8323,9008,-6899,-6141,9009,9010]],"id":"48481","properties":{"name":"Wharton"}},{"type":"Polygon","arcs":[[-2624,-2583,9011,-887,-2176,9012,-8627]],"id":"13207","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-1820,-652,9013,-6379,-1771,-8636]],"id":"13219","properties":{"name":"Oconee"}},{"type":"Polygon","arcs":[[-7918,9014,-8922,-7923,-8104]],"id":"13225","properties":{"name":"Peach"}},{"type":"Polygon","arcs":[[9015,9016,9017,-8654]],"id":"13239","properties":{"name":"Quitman"}},{"type":"Polygon","arcs":[[-3463,-8882,-1922,9018,-2632,-951]],"id":"39031","properties":{"name":"Coshocton"}},{"type":"Polygon","arcs":[[-9017,9019,-6610,9020,-1850,9021]],"id":"13243","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[-3313,-2471,-6884,-8698,-2754,9022,-1752]],"id":"72085","properties":{"name":"Las Piedras"}},{"type":"Polygon","arcs":[[9023,-7742,9024,-6515,9025]],"id":"54079","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[-7105,-7734,9026,-4928,-2445,-8387]],"id":"54109","properties":{"name":"Wyoming"}},{"type":"Polygon","arcs":[[-6856,-4913,9027,9028,-6367,-7458]],"id":"34037","properties":{"name":"Sussex"}},{"type":"Polygon","arcs":[[9029,-3621,-8208,-3377,-6319,-8294]],"id":"01007","properties":{"name":"Bibb"}},{"type":"Polygon","arcs":[[9030,-6284,-4950,9031,9032,-6416]],"id":"28057","properties":{"name":"Itawamba"}},{"type":"Polygon","arcs":[[-7560,9033,-8921,-3748,-2776,9034]],"id":"29111","properties":{"name":"Lewis"}},{"type":"Polygon","arcs":[[-5279,9035,9036,9037,9038,-4917]],"id":"33019","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[-2193,-3265,-1646,9039,9040,9041,-2164]],"id":"38069","properties":{"name":"Pierce"}},{"type":"Polygon","arcs":[[9042,9043,-3735,9044,-8847,-4511]],"id":"36081","properties":{"name":"Queens"}},{"type":"Polygon","arcs":[[-8016,-1283,-8015,-6227,-3593,-2664,9045,-815]],"id":"37033","properties":{"name":"Caswell"}},{"type":"Polygon","arcs":[[9046,-5410,-5499,-3685]],"id":"26131","properties":{"name":"Ontonagon"}},{"type":"Polygon","arcs":[[-4844,-8652,9047,-8447,-7840,9048]],"id":"22005","properties":{"name":"Ascension"}},{"type":"Polygon","arcs":[[9049,-6466,-622,-766,-1897]],"id":"12055","properties":{"name":"Highlands"}},{"type":"Polygon","arcs":[[-6365,-4709,-1066,-3946,-8892]],"id":"37089","properties":{"name":"Henderson"}},{"type":"Polygon","arcs":[[-1154,-3332,-1297,-1180,-2815,-3640]],"id":"19029","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-8760,9050,-6666,9051,-2101,9052,-1693]],"id":"39097","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[9053,9054,-3211,-6465,-8621]],"id":"12061","properties":{"name":"Indian River"}},{"type":"Polygon","arcs":[[9055,-7799,-7891,-5035,-4453,9056]],"id":"05131","properties":{"name":"Sebastian"}},{"type":"Polygon","arcs":[[-8437,9057,-3002,-8553,-183]],"id":"17075","properties":{"name":"Iroquois"}},{"type":"Polygon","arcs":[[-8154,-3578,9058,-6611,-9020,-9016,-8653]],"id":"13259","properties":{"name":"Stewart"}},{"type":"Polygon","arcs":[[9059,9060,-1939,-1892,-676,-8888]],"id":"39035","properties":{"name":"Cuyahoga"}},{"type":"Polygon","arcs":[[-3847,-1774,9061,-881,-9012,-2582]],"id":"13159","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[-6252,-8748,-8919,-8744,-6309]],"id":"13117","properties":{"name":"Forsyth"}},{"type":"Polygon","arcs":[[9062,9063,-5535,-8201,9064,-6813,9065]],"id":"16073","properties":{"name":"Owyhee"}},{"type":"Polygon","arcs":[[9066,9067,-3985,-8089,-210,9068,9069]],"id":"06085","properties":{"name":"Santa Clara"}},{"type":"Polygon","arcs":[[9070,-4849,-7755,9071,-3877,9072,-6549]],"id":"22079","properties":{"name":"Rapides"}},{"type":"Polygon","arcs":[[-90,-6417,-9033,9073,-8295,9074,9075]],"id":"28095","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[9076,-4988,-8399,9077,9078,-6435]],"id":"42101","properties":{"name":"Philadelphia"}},{"type":"Polygon","arcs":[[9079,-8979,-995,9080,-7575,9081]],"id":"33015","properties":{"name":"Rockingham"}},{"type":"Polygon","arcs":[[9082,9083,-8719,-5331,-8580,-6307]],"id":"36083","properties":{"name":"Rensselaer"}},{"type":"Polygon","arcs":[[-5054,9084,-4894,-3907]],"id":"37071","properties":{"name":"Gaston"}},{"type":"Polygon","arcs":[[9085,-6641,9086,-6139,-8850,-8764,9087]],"id":"29207","properties":{"name":"Stoddard"}},{"type":"Polygon","arcs":[[-8828,9088,-922,9089,-8630,9090,9091]],"id":"31069","properties":{"name":"Garden"}},{"type":"Polygon","arcs":[[-4941,-8087,-8657,-8467,-1830,-8459]],"id":"01109","properties":{"name":"Pike"}},{"type":"Polygon","arcs":[[-4886,-8933,-8862,9092,-5100,-5207,-1681,-7758]],"id":"42123","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[-1325,-2547,-7380,9093,-4999,9094]],"id":"20099","properties":{"name":"Labette"}},{"type":"Polygon","arcs":[[-1891,-526,-5907,-5318,-1166]],"id":"19039","properties":{"name":"Clarke"}},{"type":"Polygon","arcs":[[9095,-8695,-505,-4224,-7785,-2233,9096]],"id":"40041","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[9097,-7400,-5308,-3130,-1577,9098]],"id":"18141","properties":{"name":"St. Joseph"}},{"type":"Polygon","arcs":[[9099,-7172,-6838]],"id":"37177","properties":{"name":"Tyrrell"}},{"type":"Polygon","arcs":[[-7120,-6463,-4765,-616,-8881,-8684,-8476]],"id":"08053","properties":{"name":"Hinsdale"}},{"type":"MultiPolygon","arcs":[[[-8721,9100,-6501,9101]],[[-8724,9102,-6505,-130,9103]]],"id":"48273","properties":{"name":"Kleberg"}},{"type":"Polygon","arcs":[[-3611,-7530,9104,-6874,9105,-1285,9106,9107]],"id":"51035","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[-2987,9108,-7389,9109,-9066,-6812,-4358,-2097]],"id":"41045","properties":{"name":"Malheur"}},{"type":"Polygon","arcs":[[9110,9111,-4838,9112,9113]],"id":"24009","properties":{"name":"Calvert"}},{"type":"Polygon","arcs":[[-5134,-5583,-5830,-5141,-5569]],"id":"21071","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[-6767,-6713,-4154,9114,9115,9116,9117,-6901,9118,9119]],"id":"48201","properties":{"name":"Harris"}},{"type":"Polygon","arcs":[[-8092,-2287,-4572,9120]],"id":"51700","properties":{"name":"Newport News"}},{"type":"Polygon","arcs":[[-8835,-2811,-2084,9121,9122,9123,-4951,-2418]],"id":"02170","properties":{"name":"Matanuska-Susitna"}},{"type":"Polygon","arcs":[[-4596,-5166,-5157,-8191,9124,-3343]],"id":"05057","properties":{"name":"Hempstead"}},{"type":"Polygon","arcs":[[-7354,-7403,-6419,9125,-7516]],"id":"28137","properties":{"name":"Tate"}},{"type":"Polygon","arcs":[[9126,-8837,9127,-7501]],"id":"36085","properties":{"name":"Richmond"}},{"type":"Polygon","arcs":[[-2165,-9042,9128,9129,9130,-5284]],"id":"38083","properties":{"name":"Sheridan"}},{"type":"Polygon","arcs":[[9131,-2878,-8582,9132,-4908,-8140]],"id":"36111","properties":{"name":"Ulster"}},{"type":"Polygon","arcs":[[-2969,-1309,-4665,-5993,9133]],"id":"37059","properties":{"name":"Davie"}},{"type":"Polygon","arcs":[[-513,9134,-6951,-7042,-5006,-280]],"id":"48197","properties":{"name":"Hardeman"}},{"type":"Polygon","arcs":[[-6018,-7635,-3938,-2244,-6933,9135]],"id":"46117","properties":{"name":"Stanley"}},{"type":"Polygon","arcs":[[9136,-2442,9137,-1591,-1699,-7902]],"id":"29079","properties":{"name":"Grundy"}},{"type":"Polygon","arcs":[[-6665,-1933,-2636,-8841,-2102,-9052]],"id":"39049","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-8021,-2605,-8138,9138,-8428,-1276,-8180,-8576]],"id":"06061","properties":{"name":"Placer"}},{"type":"Polygon","arcs":[[-8594,-9006,-5890,-8310,-4071,-8215]],"id":"20091","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-5335,-6188,9139,-7315,-8172,9140]],"id":"09005","properties":{"name":"Litchfield"}},{"type":"Polygon","arcs":[[-1832,-8471,9141,9142,9143,-2872,9144]],"id":"01061","properties":{"name":"Geneva"}},{"type":"Polygon","arcs":[[9145,-7297,-7967,9146,-9142,-8470]],"id":"01069","properties":{"name":"Houston"}},{"type":"Polygon","arcs":[[-6373,9147,9148,-9107,-1286,-9106,-6873,-7074,-8803,-4738]],"id":"51077","properties":{"name":"Grayson"}},{"type":"Polygon","arcs":[[-1031,-2956,-5245,-3326,-1212,-8548,9149]],"id":"08063","properties":{"name":"Kit Carson"}},{"type":"Polygon","arcs":[[-3635,-3316,-7489,9150,-8812]],"id":"19133","properties":{"name":"Monona"}},{"type":"Polygon","arcs":[[-8307,-5737,-6552,9151,-5560,-3788,-5262]],"id":"48351","properties":{"name":"Newton"}},{"type":"Polygon","arcs":[[9152,9153,9154,-6604,-6381]],"id":"13265","properties":{"name":"Taliaferro"}},{"type":"Polygon","arcs":[[-539,-1942,-6947,-9135,-512,9155]],"id":"40057","properties":{"name":"Harmon"}},{"type":"Polygon","arcs":[[-4754,9156,9157,-960,-4314]],"id":"48349","properties":{"name":"Navarro"}},{"type":"Polygon","arcs":[[9158,-4771,9159,-5246,-4580]],"id":"13279","properties":{"name":"Toombs"}},{"type":"Polygon","arcs":[[-2995,9160,-8983,-7361,-4239,-3602]],"id":"29187","properties":{"name":"St. Francois"}},{"type":"Polygon","arcs":[[9161,-4147,-7494,-4659,-6807]],"id":"35021","properties":{"name":"Harding"}},{"type":"Polygon","arcs":[[-4678,-1533,-1477,-8357,9162]],"id":"30097","properties":{"name":"Sweet Grass"}},{"type":"Polygon","arcs":[[9163,9164,-6585,-4695,-6761,-5792]],"id":"21155","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-8316,-8362,9165,-5819,9166,9167,-7766]],"id":"47149","properties":{"name":"Rutherford"}},{"type":"MultiPolygon","arcs":[[[9168,-6234,-2495,-2478,9169,9170]]],"id":"53061","properties":{"name":"Snohomish"}},{"type":"Polygon","arcs":[[-6276,-2458,-7472,-9005,-8592,-7679]],"id":"29165","properties":{"name":"Platte"}},{"type":"Polygon","arcs":[[-8257,-1909,-8962,-7330,9171,9172,9173]],"id":"39061","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-7141,-4996,-7768,-5554,-1456,-5529]],"id":"47081","properties":{"name":"Hickman"}},{"type":"Polygon","arcs":[[-4756,-4734,9174,-7041,-260,-1116]],"id":"48337","properties":{"name":"Montague"}},{"type":"Polygon","arcs":[[-5674,-8449,-7673,-6086,-5682]],"id":"49007","properties":{"name":"Carbon"}},{"type":"Polygon","arcs":[[-7826,-3256,-3121,-6410,-658,-3435]],"id":"20041","properties":{"name":"Dickinson"}},{"type":"Polygon","arcs":[[-2522,-8438,-181,9175,-8878,-1824]],"id":"17105","properties":{"name":"Livingston"}},{"type":"Polygon","arcs":[[-5038,-2266,-3467,-6600,9176,-3496,-4455]],"id":"05149","properties":{"name":"Yell"}},{"type":"Polygon","arcs":[[-5800,-7298,-4077,-2671]],"id":"16065","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-3584,-646,-222,9177,-4027,-7628]],"id":"13285","properties":{"name":"Troup"}},{"type":"Polygon","arcs":[[9178,-1898,-764,-8903,9179]],"id":"12081","properties":{"name":"Manatee"}},{"type":"MultiPolygon","arcs":[[[9180,9181,9182,-8029,9183]],[[9184]],[[9185,9186]]],"id":"51001","properties":{"name":"Accomack"}},{"type":"Polygon","arcs":[[-885,9187,-65,-8924,-2177]],"id":"13289","properties":{"name":"Twiggs"}},{"type":"Polygon","arcs":[[-5476,-7386,-998,-5638,9188]],"id":"24035","properties":{"name":"Queen Anne's"}},{"type":"Polygon","arcs":[[-3668,-8253,-6184,-5333]],"id":"25015","properties":{"name":"Hampshire"}},{"type":"Polygon","arcs":[[-4538,-5387,-6529,-3216,9189,9190]],"id":"17071","properties":{"name":"Henderson"}},{"type":"Polygon","arcs":[[9191,-9097,-2232,-3917,9192]],"id":"40097","properties":{"name":"Mayes"}},{"type":"Polygon","arcs":[[-5170,-8305,-2932,-8304,-7015,-6242,-7054,-8569]],"id":"51149","properties":{"name":"Prince George"}},{"type":"Polygon","arcs":[[-7434,-7441,9193,-9043,-4510]],"id":"36005","properties":{"name":"Bronx"}},{"type":"Polygon","arcs":[[-3499,-8080,-8897,-8884,-5161,5159,-5159,-5165]],"id":"05019","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[-799,9194,-1812,-6664,-6661,-6741,9195]],"id":"39065","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[-6274,-1416,-556,-5566,-975]],"id":"48163","properties":{"name":"Frio"}},{"type":"Polygon","arcs":[[-9177,-6599,-2539,-8077,-3497]],"id":"05051","properties":{"name":"Garland"}},{"type":"Polygon","arcs":[[-156,-5628,-1600,-7287,-5243,-2954]],"id":"31057","properties":{"name":"Dundy"}},{"type":"Polygon","arcs":[[9196,-5520,-6444,-2535,-970,-925]],"id":"31023","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[-7672,-1797,9197,-1231,-6087]],"id":"49019","properties":{"name":"Grand"}},{"type":"Polygon","arcs":[[-8734,-4604,-6135,-8090,-7012,-4319]],"id":"51127","properties":{"name":"New Kent"}},{"type":"Polygon","arcs":[[-9032,-4949,-2992,-8351,-2974,-8296,-9074]],"id":"01093","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-8780,9198,-753,-6787,-5964,-2298]],"id":"30073","properties":{"name":"Pondera"}},{"type":"Polygon","arcs":[[-8137,9199,-8425,-9139]],"id":"32510","properties":{"name":"Carson City"}},{"type":"Polygon","arcs":[[9200,9201,-5361,-7659]],"id":"12125","properties":{"name":"Union"}},{"type":"MultiPolygon","arcs":[[[-9122,-2090,9202,9203]],[[9204]]],"id":"02020","properties":{"name":"Anchorage"}},{"type":"Polygon","arcs":[[-7539,-3687,-5498,9205,9206,-4180]],"id":"55125","properties":{"name":"Vilas"}},{"type":"Polygon","arcs":[[9207,-2603,-3279,-8929,-3102]],"id":"28019","properties":{"name":"Choctaw"}},{"type":"Polygon","arcs":[[-2377,9208,-8216,-7428]],"id":"31169","properties":{"name":"Thayer"}},{"type":"Polygon","arcs":[[-773,9209,-515,9210,-62,-5801]],"id":"13223","properties":{"name":"Paulding"}},{"type":"Polygon","arcs":[[9211,-8507,-8454,-8503,-4492,9212,-5607]],"id":"32033","properties":{"name":"White Pine"}},{"type":"Polygon","arcs":[[9213,9214,-1100,-8784,-2595,-3108]],"id":"48203","properties":{"name":"Harrison"}},{"type":"Polygon","arcs":[[-6312,-6345,9215,-644]],"id":"13113","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-7591,-6614,-3080,9216,-1582,-7595]],"id":"18059","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[-7753,-6634,9217,-8001,-7990,9218]],"id":"22025","properties":{"name":"Catahoula"}},{"type":"Polygon","arcs":[[9219,-7328,-8961,-7159,-6683,9220]],"id":"21191","properties":{"name":"Pendleton"}},{"type":"Polygon","arcs":[[-3612,-9108,-9149,9221,-7051]],"id":"51197","properties":{"name":"Wythe"}},{"type":"Polygon","arcs":[[9222,9223,-6848,-5862,-8701,-1497]],"id":"56003","properties":{"name":"Big Horn"}},{"type":"Polygon","arcs":[[-3767,-7006,-6019,9224,-6577]],"id":"46137","properties":{"name":"Ziebach"}},{"type":"MultiPolygon","arcs":[[[9225]],[[9226,9227]]],"id":"25007","properties":{"name":"Dukes"}},{"type":"Polygon","arcs":[[-8918,9228,-1921,-649,-1819]],"id":"13157","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-5879,9229,-3003,-9058,-8436]],"id":"18111","properties":{"name":"Newton"}},{"type":"Polygon","arcs":[[9230,-4527,-8736,-8061,9231]],"id":"48277","properties":{"name":"Lamar"}},{"type":"Polygon","arcs":[[-7374,-2888,-9000,-1784,-8950,9232,-3532,-7421]],"id":"27021","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-1981,-1613,-1996,-3478,-821]],"id":"48153","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[-3079,9233,-2852,-3854,-1583,-9217]],"id":"18139","properties":{"name":"Rush"}},{"type":"Polygon","arcs":[[-1300,-7699,-7258,-3016,-3015,-3014,3012,-3012,9234]],"id":"06079","properties":{"name":"San Luis Obispo"}},{"type":"Polygon","arcs":[[-9003,9235,-5148,-4780,-6401,-2524,-6547]],"id":"20155","properties":{"name":"Reno"}},{"type":"Polygon","arcs":[[-3177,-1042,-2692,-2683,-3589]],"id":"19025","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[-1788,-8883,-664,-6411]],"id":"27065","properties":{"name":"Kanabec"}},{"type":"Polygon","arcs":[[-5069,-8024,-6977,-7633,-8318,-8948]],"id":"42035","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-3325,-902,9236,-2252,-3142,-1208]],"id":"20109","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[-1907,-1695,9237,-6910,9238,-8959]],"id":"39027","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-8682,-800,-9196,-6740,-1901]],"id":"39003","properties":{"name":"Allen"}},{"type":"Polygon","arcs":[[-4335,-2759,-8834,9239,-6961,-834,-2022]],"id":"55115","properties":{"name":"Shawano"}},{"type":"Polygon","arcs":[[-2235,-7787,-7800,-9056,9240,-8183,-8489]],"id":"40135","properties":{"name":"Sequoyah"}},{"type":"Polygon","arcs":[[-6982,-8268,-6037,9241,9242,9243,-810,9244,-6979,9245]],"id":"47035","properties":{"name":"Cumberland"}},{"type":"Polygon","arcs":[[9246,-6377,-4641,-5802,-64,9247,-7626,-3628]],"id":"01029","properties":{"name":"Cleburne"}},{"type":"Polygon","arcs":[[-84,-7302,9248,-7350,9249]],"id":"26099","properties":{"name":"Macomb"}},{"type":"Polygon","arcs":[[-8419,-86,9250,-6554,-8416,-3031]],"id":"26049","properties":{"name":"Genesee"}},{"type":"Polygon","arcs":[[-3165,9251,-4861,-1140,-989]],"id":"17007","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[-4016,-5467,-6489,9252,-1780,-8421,-3739]],"id":"38053","properties":{"name":"McKenzie"}},{"type":"Polygon","arcs":[[-7529,-7677,-4569,-3044,-6875,-9105]],"id":"51141","properties":{"name":"Patrick"}},{"type":"Polygon","arcs":[[-7273,-8481,9253,-5725,-6137,9254]],"id":"17003","properties":{"name":"Alexander"}},{"type":"Polygon","arcs":[[-7195,-4597,-3342,-8240]],"id":"05133","properties":{"name":"Sevier"}},{"type":"Polygon","arcs":[[-6431,9255,-8661,9256,-451]],"id":"28039","properties":{"name":"George"}},{"type":"Polygon","arcs":[[-6651,9257,-8642,-8838,-9127,-7500]],"id":"34039","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-4112,-4462,-4013,9258,9259,9260]],"id":"17015","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[-3385,9261,-3553,-8949,-1729,9262]],"id":"13287","properties":{"name":"Turner"}},{"type":"Polygon","arcs":[[-8474,9263,-9070,9264,9265]],"id":"06081","properties":{"name":"San Mateo"}},{"type":"Polygon","arcs":[[9266,9267,-8824,-7211,-3070,9268,-4769]],"id":"13031","properties":{"name":"Bulloch"}},{"type":"Polygon","arcs":[[-4822,-4113,-9261,9269,-2679]],"id":"19097","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-2158,-8478,-8683,-5255,-1233]],"id":"08113","properties":{"name":"San Miguel"}},{"type":"Polygon","arcs":[[-3774,-2752,-133,-8028,9270]],"id":"48427","properties":{"name":"Starr"}},{"type":"Polygon","arcs":[[-2138,-8585,-4000,-8915,-8746]],"id":"13187","properties":{"name":"Lumpkin"}},{"type":"Polygon","arcs":[[-9029,9271,-8643,-9258,-6650,-4563,-6368]],"id":"34027","properties":{"name":"Morris"}},{"type":"Polygon","arcs":[[9272,-2797,-2374,-7808,-4205,-1602,-5627]],"id":"31063","properties":{"name":"Frontier"}},{"type":"Polygon","arcs":[[-7094,-4339,-8424,-6314,-5699,-5866]],"id":"55033","properties":{"name":"Dunn"}},{"type":"Polygon","arcs":[[-6145,9273,-2868,-2915,-249]],"id":"48429","properties":{"name":"Stephens"}},{"type":"Polygon","arcs":[[-9216,-6344,-8083,-2585,-2623,-6593,-217,-645]],"id":"13255","properties":{"name":"Spalding"}},{"type":"Polygon","arcs":[[-3139,-7469,-3714,9274,-6895]],"id":"39051","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[-479,-5392,-3857,-2818,9275]],"id":"19037","properties":{"name":"Chickasaw"}},{"type":"Polygon","arcs":[[-8578,-190,-2639,-2869,-6942]],"id":"48369","properties":{"name":"Parmer"}},{"type":"Polygon","arcs":[[-2181,-1754,9276,-3597,9277,-2998,-5603]],"id":"72109","properties":{"name":"Patillas"}},{"type":"Polygon","arcs":[[-5896,-1684,-5204,-5048,-3928,-1016,-5892]],"id":"42019","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[9278,-1637,9279,9280,-8727]],"id":"50009","properties":{"name":"Essex"}},{"type":"Polygon","arcs":[[-2685,-2694,-8869,-1295,-3331]],"id":"19077","properties":{"name":"Guthrie"}},{"type":"Polygon","arcs":[[-9065,-8200,-3375,-7037,-8505,-9212,-5606,-8854,-6814]],"id":"32007","properties":{"name":"Elko"}},{"type":"Polygon","arcs":[[9281,-8991,9282,-8036,-2403,-7813]],"id":"01089","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-4032,-8427,9283,-4627,-2662,-5043,-1158,-7109,-2744]],"id":"06051","properties":{"name":"Mono"}},{"type":"Polygon","arcs":[[-7207,-8694,-5812,9284]],"id":"06073","properties":{"name":"San Diego"}},{"type":"Polygon","arcs":[[-4653,-6485,-5378,-592,-594,-3092]],"id":"31115","properties":{"name":"Loup"}},{"type":"Polygon","arcs":[[-8895,-5538,9285,9286,-5782]],"id":"31157","properties":{"name":"Scotts Bluff"}},{"type":"Polygon","arcs":[[-718,-3306,-6964,-5974,-3765,-6955,-8420]],"id":"38001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-1193,-5190,9287,9288,-4219,-6283,9289,-5486]],"id":"47071","properties":{"name":"Hardin"}},{"type":"Polygon","arcs":[[-7938,-5982,9290,-9214,-3107]],"id":"48315","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-7789,9291,9292,-3997,-8584]],"id":"13281","properties":{"name":"Towns"}},{"type":"Polygon","arcs":[[-9173,9293,9294,-6859,-7418,-4506,9295]],"id":"21015","properties":{"name":"Boone"}},{"type":"Polygon","arcs":[[9296,-1336,-7399,9297,9298]],"id":"26159","properties":{"name":"Van Buren"}},{"type":"Polygon","arcs":[[-8065,-1738,9299,-4370,9300,-8870]],"id":"48465","properties":{"name":"Val Verde"}},{"type":"Polygon","arcs":[[-7185,-8639,-8755,9301,-9188,-884]],"id":"13319","properties":{"name":"Wilkinson"}},{"type":"Polygon","arcs":[[-3387,9302,-7961,9303,-198]],"id":"13177","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[9304,-3073,-4477,-8957,-8644,-5247,-9160]],"id":"13267","properties":{"name":"Tattnall"}},{"type":"Polygon","arcs":[[9305,-3694,-3657,9306,-5010,-5657]],"id":"23011","properties":{"name":"Kennebec"}},{"type":"Polygon","arcs":[[-5764,-1364,9307,-229,-7215]],"id":"19189","properties":{"name":"Winnebago"}},{"type":"Polygon","arcs":[[-5670,-2738,-5641,-3818]],"id":"19059","properties":{"name":"Dickinson"}},{"type":"Polygon","arcs":[[-5220,-4424,-1265,9308,-4850,-9071,-6548,-5735]],"id":"22069","properties":{"name":"Natchitoches"}},{"type":"Polygon","arcs":[[9309,9310,-158,-8378]],"id":"72017","properties":{"name":"Barceloneta"}},{"type":"Polygon","arcs":[[-8827,-5805,9311,-918,-9089]],"id":"31075","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-7556,-8230,-7996,-9218,-6633]],"id":"22041","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-8911,-8108,-8032,-193,-6608,-9059,-3577]],"id":"13197","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-7055,-6245,-5996,-4391,-6000,-8331,-8096,-6707,-8457,-8675]],"id":"51175","properties":{"name":"Southampton"}},{"type":"Polygon","arcs":[[-8423,-8801,-8100,9312,-6985]],"id":"55121","properties":{"name":"Trempealeau"}},{"type":"Polygon","arcs":[[9313,9314,-8217,-7929]],"id":"06055","properties":{"name":"Napa"}},{"type":"Polygon","arcs":[[-3835,-8221,-1280,-6103,-3546,-2279]],"id":"05137","properties":{"name":"Stone"}},{"type":"Polygon","arcs":[[-1378,-6412,-667,9315,9316,-8624,9317]],"id":"27141","properties":{"name":"Sherburne"}},{"type":"Polygon","arcs":[[-4873,-7976,9318,-7630]],"id":"48141","properties":{"name":"El Paso"}},{"type":"Polygon","arcs":[[-173,-8777,-8353,-8388]],"id":"54003","properties":{"name":"Berkeley"}},{"type":"Polygon","arcs":[[9319,-6824,-4420,9320,-7581,-321]],"id":"21141","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[-468,-2320,-724,-254,-2328]],"id":"48081","properties":{"name":"Coke"}},{"type":"Polygon","arcs":[[-8739,9321,-3964,-8939,-8787,-8930]],"id":"39079","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-4815,9322,-7605,-5209,9323]],"id":"13039","properties":{"name":"Camden"}},{"type":"Polygon","arcs":[[-4741,-7447,-4195,-8898,-8901,-4711,-7579]],"id":"37011","properties":{"name":"Avery"}},{"type":"MultiPolygon","arcs":[[[9324]],[[9325]],[[9326]],[[9327]],[[9328]],[[9329]],[[9330]],[[9331]],[[9332]],[[9333]],[[9334]],[[9335]],[[9336]],[[9337]],[[9338]],[[9339]],[[9340]],[[9341]],[[9342]],[[9343]],[[9344]],[[9345]],[[9346]],[[9347]],[[9348]],[[9349]],[[9350]],[[9351]],[[9352]],[[9353]],[[9354]],[[9355]],[[9356]],[[9357]],[[9358]],[[9359]],[[9360]],[[9361]],[[9362]],[[9363]],[[9364]],[[9365]],[[9366]]],"id":"02016","properties":{"name":"Aleutians West"}},{"type":"MultiPolygon","arcs":[[[9367]],[[9368]],[[9369]],[[9370]],[[-9203,-2089,9371]],[[9372]],[[9373]],[[9374]],[[-4952,-9124,9375,-2061,-2074]]],"id":"02122","properties":{"name":"Kenai Peninsula"}},{"type":"Polygon","arcs":[[-7607,9376,-8562,-7909,9377]],"id":"12031","properties":{"name":"Duval"}},{"type":"MultiPolygon","arcs":[[[9378]],[[-7686,-6439,9379]]],"id":"44009","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-6454,-8384,-6333,9380,-6522]],"id":"08019","properties":{"name":"Clear Creek"}},{"type":"Polygon","arcs":[[9381,-2294,-8174,-4442,-8220,9382]],"id":"29153","properties":{"name":"Ozark"}},{"type":"Polygon","arcs":[[9383,-8549,-5311,-8617,9384,-2331,-8333]],"id":"08061","properties":{"name":"Kiowa"}},{"type":"MultiPolygon","arcs":[[[9385,-7548]],[[-7551,9386,-8026]]],"id":"48061","properties":{"name":"Cameron"}},{"type":"Polygon","arcs":[[-1537,-2295,-9382,9387,-7708,-7251,-1689]],"id":"29213","properties":{"name":"Taney"}},{"type":"Polygon","arcs":[[-1393,-7941,-3924,-7935,-2355,9388,-405]],"id":"40017","properties":{"name":"Canadian"}},{"type":"Polygon","arcs":[[-7862,9389,-2268,-5037,-7890]],"id":"05071","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-8852,-6044,-8851,-6042,-6116,-5755,-3744]],"id":"47095","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-3800,-5473,-7057,-7067,-6224,-8129]],"id":"51037","properties":{"name":"Charlotte"}},{"type":"Polygon","arcs":[[-8484,-8776,-8761,-8893,-6163]],"id":"05055","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[9390,-7883,9391,-7869,9392]],"id":"12129","properties":{"name":"Wakulla"}},{"type":"Polygon","arcs":[[9393,-3681,-1004,9394]],"id":"26141","properties":{"name":"Presque Isle"}},{"type":"Polygon","arcs":[[9395,-8407,-5874,-8435,-2520,-1573]],"id":"17197","properties":{"name":"Will"}},{"type":"Polygon","arcs":[[9396]],"id":"72147","properties":{"name":"Vieques"}},{"type":"Polygon","arcs":[[-7740,-7737,-5681,-4929,-9027,-7733]],"id":"54081","properties":{"name":"Raleigh"}},{"type":"Polygon","arcs":[[-63,-9211,-518,-6313,-648,-3583,-7627,-9248]],"id":"13045","properties":{"name":"Carroll"}},{"type":"Polygon","arcs":[[9397,-8855,-5608,-9213,-4498,-8591,-5044,-2660,-4626]],"id":"32023","properties":{"name":"Nye"}},{"type":"Polygon","arcs":[[9398,-6922,9399,9400,-5687,-2793]],"id":"55039","properties":{"name":"Fond du Lac"}},{"type":"Polygon","arcs":[[-2214,-4539,-9191,9401,-7558,-2170]],"id":"19111","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[9402,9403,-9083,-6306,-8043,-7945,9404,-7859]],"id":"36091","properties":{"name":"Saratoga"}},{"type":"Polygon","arcs":[[9405,-4096,9406,-6720,-851,-3879]],"id":"22097","properties":{"name":"St. Landry"}},{"type":"Polygon","arcs":[[-8123,9407,-2722,-4524,9408,-7898]],"id":"40005","properties":{"name":"Atoka"}},{"type":"Polygon","arcs":[[-7860,-9405,-7944,-4138]],"id":"36035","properties":{"name":"Fulton"}},{"type":"Polygon","arcs":[[-8124,-6752,-8186,-8188,-2717,-9408,-8122]],"id":"40121","properties":{"name":"Pittsburg"}},{"type":"Polygon","arcs":[[-3572,9409,9410,-8345,-7565,-3959,9411]],"id":"39009","properties":{"name":"Athens"}},{"type":"Polygon","arcs":[[-8292,-6591,-2768,-880,9412,-8288]],"id":"01131","properties":{"name":"Wilcox"}},{"type":"Polygon","arcs":[[9413,9414,-6289,-5397,-5402,9415,-2421]],"id":"42051","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[9416,9417,9418,-8038,-4946,-4165,-3618,-8349]],"id":"01009","properties":{"name":"Blount"}},{"type":"Polygon","arcs":[[-4404,-7154,-4045,-6469,-6602,-770,-4003]],"id":"13129","properties":{"name":"Gordon"}},{"type":"Polygon","arcs":[[-9048,-8651,-17,9419,-8161,-4790,-8369,-8448]],"id":"22095","properties":{"name":"St. John the Baptist"}},{"type":"Polygon","arcs":[[-5884,-7865,-7849,-7456,-5900]],"id":"42069","properties":{"name":"Lackawanna"}},{"type":"Polygon","arcs":[[-9243,9420,-5962,9421,-4307,9422,-4744,9423]],"id":"47145","properties":{"name":"Roane"}},{"type":"Polygon","arcs":[[-8868,9424,-3312,-1750,-138]],"id":"72063","properties":{"name":"Gurabo"}},{"type":"Polygon","arcs":[[9425,-8807,9426,-6677,-7005]],"id":"46021","properties":{"name":"Campbell"}},{"type":"Polygon","arcs":[[-2116,-8975,-7182,-8705,9427,-7770,-3327]],"id":"72153","properties":{"name":"Yauco"}},{"type":"Polygon","arcs":[[-7340,-7333,-4846,9428,-4093]],"id":"22121","properties":{"name":"West Baton Rouge"}},{"type":"Polygon","arcs":[[-4409,-7597,-1563,-7751,-6530,9429]],"id":"18133","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[-1182,-1151,-8497,-8536,-7639]],"id":"19173","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[-3646,-8274,-2673,-4082,9430,-7286,-7642]],"id":"16011","properties":{"name":"Bingham"}},{"type":"MultiPolygon","arcs":[[[9431]],[[9432]],[[9433]],[[9434]],[[9435]],[[9436]],[[9437]],[[9438,-7540,-4178,-440,-4608]]],"id":"55003","properties":{"name":"Ashland"}},{"type":"Polygon","arcs":[[-6986,-9313,-8103,-5584,-8400,-3309,-7470]],"id":"27169","properties":{"name":"Winona"}},{"type":"Polygon","arcs":[[9439,-7084,-7019,-2411,-5449,9440,-7507],[-1287]],"id":"51165","properties":{"name":"Rockingham"}},{"type":"Polygon","arcs":[[9441,9442,-4540,-7573]],"id":"30019","properties":{"name":"Daniels"}},{"type":"Polygon","arcs":[[-7570,-5329,-3816,-3417,-8146]],"id":"54097","properties":{"name":"Upshur"}},{"type":"Polygon","arcs":[[-8968,9443,-7096,9444]],"id":"72005","properties":{"name":"Aguadilla"}},{"type":"Polygon","arcs":[[9445,-4184,-2473,-9425,-8867,-8864]],"id":"72031","properties":{"name":"Carolina"}},{"type":"Polygon","arcs":[[9446,-8379,-7087,-8974,9447]],"id":"72065","properties":{"name":"Hatillo"}},{"type":"Polygon","arcs":[[9448,-6768,-9120,9449,-8321,-7033]],"id":"48473","properties":{"name":"Waller"}},{"type":"Polygon","arcs":[[-1753,-9023,-2757,9450,-3595,-9277]],"id":"72151","properties":{"name":"Yabucoa"}},{"type":"Polygon","arcs":[[-6536,-4875,-4691,-7277,-7316]],"id":"18147","properties":{"name":"Spencer"}},{"type":"Polygon","arcs":[[-8372,9451,-9395,-1003,-1598,-7462]],"id":"26031","properties":{"name":"Cheboygan"}},{"type":"Polygon","arcs":[[-9133,-8581,-5336,-9141,-8171,-8167,-4909]],"id":"36027","properties":{"name":"Dutchess"}},{"type":"Polygon","arcs":[[-5524,-4679,-9163,-8356,9452,-1495]],"id":"30067","properties":{"name":"Park"}},{"type":"Polygon","arcs":[[-6550,-9073,-3876,-8148,9453]],"id":"22003","properties":{"name":"Allen"}},{"type":"Polygon","arcs":[[-2940,-1052,-340,9454,-2961]],"id":"28101","properties":{"name":"Newton"}},{"type":"Polygon","arcs":[[-4094,-9429,-4845,-9049,-7839,-4830,9455]],"id":"22047","properties":{"name":"Iberville"}},{"type":"Polygon","arcs":[[-3604,-4242,-6642,-9086,9456,-6644,-8336]],"id":"29223","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-7889,-532,-3729,-7545,-7043,-6949]],"id":"40141","properties":{"name":"Tillman"}},{"type":"Polygon","arcs":[[-759,9457,-3710,-6297,9458,-6290,-365]],"id":"36011","properties":{"name":"Cayuga"}},{"type":"Polygon","arcs":[[-7788,-7719,-7796,9459,-9292]],"id":"13241","properties":{"name":"Rabun"}},{"type":"Polygon","arcs":[[-3979,-4440,-5413,-4561,-7356,-7515,-8796,-8797,-613]],"id":"05035","properties":{"name":"Crittenden"}},{"type":"Polygon","arcs":[[-9143,-9147,-7966,-849,-7876,-7815,-2461,-3844,9460]],"id":"12063","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[9461,-6850,-145,-2468,-7661,-3472,-4731]],"id":"72021","properties":{"name":"Bayamón"}},{"type":"Polygon","arcs":[[-3474,-7663,-141,-2180,-1121,-3286]],"id":"72041","properties":{"name":"Cidra"}},{"type":"Polygon","arcs":[[-4791,-4216,-7814,-2406,9462,-2989,-4948]],"id":"01079","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-8443,-4302,9463,9464,9465]],"id":"21215","properties":{"name":"Spencer"}},{"type":"Polygon","arcs":[[-8602,9466,-639,-8010,-8560]],"id":"53067","properties":{"name":"Thurston"}},{"type":"Polygon","arcs":[[9467,9468,-3672,-7536,-267,-1453]],"id":"46011","properties":{"name":"Brookings"}},{"type":"Polygon","arcs":[[-5822,-5828,-685,-8995,-8988]],"id":"47061","properties":{"name":"Grundy"}},{"type":"Polygon","arcs":[[-7048,-1673,-6089,-8531,9469]],"id":"48025","properties":{"name":"Bee"}},{"type":"Polygon","arcs":[[9470,9471,-9113,-4840,9472]],"id":"24017","properties":{"name":"Charles"}},{"type":"Polygon","arcs":[[-5881,-5899,-7002,-6973,9473]],"id":"42113","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[-2289,-8091]],"id":"51830","properties":{"name":"Williamsburg"}},{"type":"Polygon","arcs":[[-8735,-7940,9474,-2362]],"id":"48449","properties":{"name":"Titus"}},{"type":"Polygon","arcs":[[-2363,-9475,-7939,-3105,-6691]],"id":"48063","properties":{"name":"Camp"}},{"type":"Polygon","arcs":[[9475,-5824,-8993,9476]],"id":"47127","properties":{"name":"Moore"}},{"type":"Polygon","arcs":[[9477,-7899,-9409,-4528,-9231,9478,9479]],"id":"40013","properties":{"name":"Bryan"}},{"type":"Polygon","arcs":[[-2388,-116,-6769,-9449,-7032,-8045]],"id":"48185","properties":{"name":"Grimes"}},{"type":"Polygon","arcs":[[-7874,7872,-7872,-2112,-7292,-7879,-9391,9480]],"id":"12073","properties":{"name":"Leon"}},{"type":"Polygon","arcs":[[-91,-9076,9481,-2599,9482]],"id":"28025","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-6220,-8538,9483,-4619,-4201,-8302]],"id":"29087","properties":{"name":"Holt"}},{"type":"Polygon","arcs":[[-7444,9484,-6656,-8860,-8932,9485]],"id":"36029","properties":{"name":"Erie"}},{"type":"Polygon","arcs":[[-8440,-3048,-7387,-9109,-2986]],"id":"16087","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-6578,-9225,-9136,-6932,-6079,-4962]],"id":"46055","properties":{"name":"Haakon"}},{"type":"Polygon","arcs":[[-8184,-9241,-9057,-4457,-7194,-8239,-2719,-8187]],"id":"40079","properties":{"name":"Le Flore"}},{"type":"Polygon","arcs":[[-6047,-8940,-6517,9486,-8385,-5580,-5324]],"id":"54099","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-7532,9487,-3742,-6237,-5113,-303]],"id":"30079","properties":{"name":"Prairie"}},{"type":"Polygon","arcs":[[9488,-7953,9489,-2700]],"id":"12033","properties":{"name":"Escambia"}},{"type":"Polygon","arcs":[[-9302,-8754,9490,-8690,-8741,-66]],"id":"13175","properties":{"name":"Laurens"}},{"type":"Polygon","arcs":[[9491,-2820,-228,-3321,-889]],"id":"19023","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[9492,-5439,9493,-500,9494,-6197,-3537,-7691]],"id":"41065","properties":{"name":"Wasco"}},{"type":"Polygon","arcs":[[-6077,-5074,-7830,-1661,-6569,9495]],"id":"31027","properties":{"name":"Cedar"}},{"type":"Polygon","arcs":[[-9038,9496,-9082,-7574,9497,-8250,9498]],"id":"33011","properties":{"name":"Hillsborough"}},{"type":"Polygon","arcs":[[-8525,-6021,-5518,-8825,-9268,9499]],"id":"13251","properties":{"name":"Screven"}},{"type":"Polygon","arcs":[[-8813,-9151,-7490,-5431,-6443,-1062]],"id":"31021","properties":{"name":"Burt"}},{"type":"MultiPolygon","arcs":[[[-4486,4483,-4485,-4484,-4483,9500,-9181,9501]],[[-9187,9502]],[[-5295,9503]]],"id":"24039","properties":{"name":"Somerset"}},{"type":"Polygon","arcs":[[-4482,9504,9505,-9182,-9501]],"id":"24047","properties":{"name":"Worcester"}},{"type":"Polygon","arcs":[[9506,-492,-8994,-6486,-5465,-6878]],"id":"38013","properties":{"name":"Burke"}},{"type":"Polygon","arcs":[[9507,9508,9509,-5877]],"id":"18127","properties":{"name":"Porter"}},{"type":"Polygon","arcs":[[-8311,-6637,-1995,-2277,-308,-7425]],"id":"29083","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[-6296,9510,-8117,-8040,-7132,-6291,-9459]],"id":"36023","properties":{"name":"Cortland"}},{"type":"Polygon","arcs":[[-3051,-4076,-5532,-9064,9511]],"id":"16001","properties":{"name":"Ada"}},{"type":"Polygon","arcs":[[-2936,-4227,-1173,9512,-1815]],"id":"17175","properties":{"name":"Stark"}},{"type":"Polygon","arcs":[[-9130,9513,-2691,-2227,9514,9515]],"id":"38043","properties":{"name":"Kidder"}},{"type":"Polygon","arcs":[[-6203,-7052,-9222,-9148,-6372,9516]],"id":"51173","properties":{"name":"Smyth"}},{"type":"Polygon","arcs":[[9517,-2013,-8756,-6324,-6605,-9155]],"id":"13301","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[-7158,9518,-5958,-5759,-6685]],"id":"21201","properties":{"name":"Robertson"}},{"type":"MultiPolygon","arcs":[[[9519]],[[-1778,-2412,-519,9520]],[[9521]]],"id":"02180","properties":{"name":"Nome"}},{"type":"Polygon","arcs":[[-2337,-3606,-1077,-466,9522]],"id":"48415","properties":{"name":"Scurry"}},{"type":"Polygon","arcs":[[9523,-8534,-8725,-9104,-129,-934]],"id":"48249","properties":{"name":"Jim Wells"}},{"type":"Polygon","arcs":[[-9209,-2618,-7936,-3064]],"id":"31095","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-8361,-6889,-5829,-5820,-9166]],"id":"47015","properties":{"name":"Cannon"}},{"type":"Polygon","arcs":[[-3468,-1293,-2226,-7593,9524,-6623]],"id":"18017","properties":{"name":"Cass"}},{"type":"Polygon","arcs":[[-9444,-8967,-6991,-8710,-7097]],"id":"72099","properties":{"name":"Moca"}},{"type":"Polygon","arcs":[[-9487,-6516,-9025,-7741,-7731,-7103,-8386]],"id":"54043","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[9525,-8150,-599,-2798,-9273,-5626,-7406,9526]],"id":"31111","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-8608,-3245,9527,9528,9529,-7363,-8982]],"id":"17157","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[-9401,9530,-5594,-1511,-5688]],"id":"55131","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-5484,9531,9532,-6228]],"id":"11001","properties":{"name":"District of Columbia"}},{"type":"Polygon","arcs":[[9533,9534,-5104,-7080,-6132]],"id":"51119","properties":{"name":"Middlesex"}},{"type":"Polygon","arcs":[[-3283,9535,-4862,-2645,-2732]],"id":"31061","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-7310,-5509,-3981,-9068,9536,-8472,9537]],"id":"06001","properties":{"name":"Alameda"}},{"type":"Polygon","arcs":[[-6229,-9533,9538,9539]],"id":"51510","properties":{"name":"Alexandria"}},{"type":"Polygon","arcs":[[-6160,9540,9541,-2425,-1952]],"id":"05079","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-6795,9542,-2452,9543,-5493,-8264,-8914,-4673]],"id":"37141","properties":{"name":"Pender"}},{"type":"Polygon","arcs":[[-6187,-8441,-7684,-5305,-7312,-9140]],"id":"09003","properties":{"name":"Hartford"}},{"type":"Polygon","arcs":[[-4168,9544,-8405,-4858]],"id":"17097","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-6808,-1659,-5521,-9197,-924,-6809,-235,-4618]],"id":"31141","properties":{"name":"Platte"}},{"type":"Polygon","arcs":[[-6617,-3099,9545,9546,-4105,-2650]],"id":"20081","properties":{"name":"Haskell"}},{"type":"Polygon","arcs":[[-3151,-2832,-2723,-5023,-7542,-3794]],"id":"48135","properties":{"name":"Ector"}},{"type":"Polygon","arcs":[[-310,-2276,-6106,9547,9548]],"id":"29085","properties":{"name":"Hickory"}},{"type":"Polygon","arcs":[[-7068,-7059,9549,-8571,-8674,-8455,-8374]],"id":"51025","properties":{"name":"Brunswick"}},{"type":"Polygon","arcs":[[-2807,-9276,-9492,-2529]],"id":"19067","properties":{"name":"Floyd"}},{"type":"Polygon","arcs":[[9550]],"id":"51600","properties":{"name":"Fairfax"}},{"type":"Polygon","arcs":[[-5537,-8829,-9092,9551,9552,-9286]],"id":"31123","properties":{"name":"Morrill"}},{"type":"Polygon","arcs":[[9553,-1514,-8076,-4170,-4857,-9252,-3164]],"id":"55127","properties":{"name":"Walworth"}},{"type":"Polygon","arcs":[[-9269,-3074,-9305,-4770]],"id":"13043","properties":{"name":"Candler"}},{"type":"Polygon","arcs":[[-1251,-3150,-1179,9554,-8391,-2145,9555]],"id":"17115","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[-901,-3266,-2714,-2750,-1565,-377,-2253,-9237]],"id":"20063","properties":{"name":"Gove"}},{"type":"Polygon","arcs":[[-7981,-8390,-8662,-9256,-6430]],"id":"28041","properties":{"name":"Greene"}},{"type":"Polygon","arcs":[[9556,-2824,-2801,9557,-9528,-3244]],"id":"17189","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[9558,-325,-746,-3337,-3653,-3693]],"id":"23019","properties":{"name":"Penobscot"}},{"type":"Polygon","arcs":[[-2586,-2541,-431,-4177,-6010,9559]],"id":"55001","properties":{"name":"Adams"}},{"type":"MultiPolygon","arcs":[[[9560]],[[9561]],[[-9257,-8660,9562,-8057,-452]]],"id":"28059","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[9563,-1733,9564,9565,-7289,-7965]],"id":"13071","properties":{"name":"Colquitt"}},{"type":"Polygon","arcs":[[-4936,-8243,-6385,-8189,-1018,-3930,9566,-9414,-2420]],"id":"42125","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-7385,9567,-9505,-4481,-5298,-1000]],"id":"10005","properties":{"name":"Sussex"}},{"type":"Polygon","arcs":[[-3119,9568,-5651,-7535,-3317,-2554,-6409]],"id":"20197","properties":{"name":"Wabaunsee"}},{"type":"Polygon","arcs":[[-5512,-5505,-7164,-5931,9569,-3481]],"id":"21157","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-7763,9570,-5326,-5136,-5572,-6572,-6804]],"id":"21175","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[-1340,-6676,-6825,-9320,-320,9571,-5125]],"id":"21177","properties":{"name":"Muhlenberg"}},{"type":"Polygon","arcs":[[-9321,-4419,-8160,-5844,-7582]],"id":"21213","properties":{"name":"Simpson"}},{"type":"Polygon","arcs":[[-4193,-1975,-2973,-5052,-8899]],"id":"37035","properties":{"name":"Catawba"}},{"type":"Polygon","arcs":[[-7452,-7950,-7895,-7968,-7711,-6800]],"id":"40103","properties":{"name":"Noble"}},{"type":"Polygon","arcs":[[-4727,9572,-3627,-8749,9573,-6247]],"id":"53013","properties":{"name":"Columbia"}},{"type":"Polygon","arcs":[[-9455,-8004,-7978,9574,9575]],"id":"28061","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[-7485,-5663,-4878,-4835,-1185,-3253]],"id":"17033","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[-4967,-609,-1455,-3154,-7192,-1450]],"id":"46005","properties":{"name":"Beadle"}},{"type":"Polygon","arcs":[[-9275,-3720,-6918,-8681,-1084,-6896]],"id":"39069","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[-9053,-2106,-8737,-6911,-9238,-1694]],"id":"39047","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-3078,-1217,9576,-2846,-9234]],"id":"18041","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-7943,-6705,-2367,-2383]],"id":"48379","properties":{"name":"Rains"}},{"type":"Polygon","arcs":[[-5319,-712,-7520,-2443,-9137,-7901]],"id":"29129","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[9577,-400,-699,9578,9579]],"id":"38027","properties":{"name":"Eddy"}},{"type":"Polygon","arcs":[[-3155,-603,-8830,-1419,-2092]],"id":"46061","properties":{"name":"Hanson"}},{"type":"Polygon","arcs":[[-1888,9580,-8758,-8464,-2882]],"id":"39109","properties":{"name":"Miami"}},{"type":"Polygon","arcs":[[-1117,-264,-8404,9581,-2548,-2865]],"id":"48367","properties":{"name":"Parker"}},{"type":"Polygon","arcs":[[9582,-1119,-2864,-9274,-6144]],"id":"48503","properties":{"name":"Young"}},{"type":"Polygon","arcs":[[-6872,9583,-8926,-4208,-6712,-831]],"id":"48373","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[-6551,-9454,-8149,-5558,-9152]],"id":"22011","properties":{"name":"Beauregard"}},{"type":"Polygon","arcs":[[-8461,-4588,-8673,-357,-4374,9584,-5355]],"id":"49033","properties":{"name":"Rich"}},{"type":"Polygon","arcs":[[-2502,-3808,9585,-5435,9586,-8011,-637]],"id":"53077","properties":{"name":"Yakima"}},{"type":"MultiPolygon","arcs":[[[9587]],[[-3718,9588,9589,-3221,-6916]]],"id":"39123","properties":{"name":"Ottawa"}},{"type":"Polygon","arcs":[[-4533,-5940,-5178,9590,-7366,-5172]],"id":"17013","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[-7144,-7222,-4148,-9162,-6806,-5968]],"id":"35007","properties":{"name":"Colfax"}},{"type":"Polygon","arcs":[[-7020,-629,-7189,-6484,-4651,-5803]],"id":"31103","properties":{"name":"Keya Paha"}},{"type":"Polygon","arcs":[[-1499,-8703,-8839]],"id":"56017","properties":{"name":"Hot Springs"}},{"type":"Polygon","arcs":[[-8480,-5514,-6172,-5726,-9254]],"id":"21007","properties":{"name":"Ballard"}},{"type":"Polygon","arcs":[[9591,-7027,-1748,-5260,-8925,-9584,-6871,-7008]],"id":"48005","properties":{"name":"Angelina"}},{"type":"Polygon","arcs":[[-5182,-6066,-5267,-4890,-5088,9592]],"id":"45015","properties":{"name":"Berkeley"}},{"type":"Polygon","arcs":[[-931,9593,-9468,-1452,-607]],"id":"46057","properties":{"name":"Hamlin"}},{"type":"Polygon","arcs":[[-4688,-4283,-6117,9594,-8731,-5942]],"id":"45037","properties":{"name":"Edgefield"}},{"type":"Polygon","arcs":[[-1414,-7049,-9470,-8535,-9524,-933,-3564]],"id":"48297","properties":{"name":"Live Oak"}},{"type":"Polygon","arcs":[[-1388,9595,-865,-8849,-6256]],"id":"27121","properties":{"name":"Pope"}},{"type":"Polygon","arcs":[[9596,9597,-8341,-9411,9598]],"id":"39115","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[9599,-5440,-9493,-7690,-8262]],"id":"41027","properties":{"name":"Hood River"}},{"type":"Polygon","arcs":[[-311,-9549,9600,-7622,9601,-1978]],"id":"29167","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[9602,-2308,9603,-942,-1717]],"id":"48115","properties":{"name":"Dawson"}},{"type":"Polygon","arcs":[[-2422,-9416,-5405,-7609,-7562,-3290]],"id":"54061","properties":{"name":"Monongalia"}},{"type":"Polygon","arcs":[[-3240,-6146,-247,-3956,-2352]],"id":"48207","properties":{"name":"Haskell"}},{"type":"Polygon","arcs":[[-245,-2309,-9603,-1716,-508]],"id":"48445","properties":{"name":"Terry"}},{"type":"Polygon","arcs":[[-7546,-4757,-1114,-9583,-1096]],"id":"48009","properties":{"name":"Archer"}},{"type":"Polygon","arcs":[[-1363,-6557,-2808,-2527,-9308]],"id":"19195","properties":{"name":"Worth"}},{"type":"Polygon","arcs":[[-7970,-6762,-4700,-7162,-4823,-5742]],"id":"21001","properties":{"name":"Adair"}},{"type":"Polygon","arcs":[[-6523,-9381,-6340,-2342,9604,9605,9606]],"id":"08093","properties":{"name":"Park"}},{"type":"Polygon","arcs":[[-6119,9607,9608,-5183,-9593,-5087,-6885,-1407,9609]],"id":"45075","properties":{"name":"Orangeburg"}},{"type":"Polygon","arcs":[[9610,-6524,-9607,9611,-8612]],"id":"08065","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-8789,-8941,-6049,9612,-5423]],"id":"21089","properties":{"name":"Greenup"}},{"type":"Polygon","arcs":[[-9460,-7795,9613,9614,-8916,-3998,-9293]],"id":"13137","properties":{"name":"Habersham"}},{"type":"Polygon","arcs":[[-3573,-9412,-3958,-3965,-9322,-8738]],"id":"39163","properties":{"name":"Vinton"}},{"type":"Polygon","arcs":[[-8822,-99,-1808,-9195,-798]],"id":"39175","properties":{"name":"Wyandot"}},{"type":"Polygon","arcs":[[-4646,-7829,-8952,-5122,-6846,-9224,9615]],"id":"30003","properties":{"name":"Big Horn"}},{"type":"Polygon","arcs":[[-4521,-4246,-2510,-8003,9616]],"id":"28037","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-6008,9617],[9618]],"id":"51683","properties":{"name":"Manassas"}},{"type":"Polygon","arcs":[[-4745,-9423,-4311,9619,-5644,-7610]],"id":"47107","properties":{"name":"McMinn"}},{"type":"Polygon","arcs":[[9620,-463,-8151,-9526,9621,-920]],"id":"31117","properties":{"name":"McPherson"}},{"type":"Polygon","arcs":[[-6798,-8126,-8130,-6746]],"id":"40133","properties":{"name":"Seminole"}},{"type":"Polygon","arcs":[[-5004,-2370,-7993,9622,-6167,9623,-9157,-4753]],"id":"48213","properties":{"name":"Henderson"}},{"type":"Polygon","arcs":[[-8782,-8811,-8816,-5282,-6194,9624,-7725]],"id":"50001","properties":{"name":"Addison"}},{"type":"Polygon","arcs":[[9625,-9552,-9091,-8633,9626,9627,-3912]],"id":"31033","properties":{"name":"Cheyenne"}},{"type":"Polygon","arcs":[[9628,-323,-7585,9629,-4993,-4629,-6938]],"id":"47125","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[9630,9631,-4316,-6891,-1128,-705,-3034]],"id":"48035","properties":{"name":"Bosque"}},{"type":"Polygon","arcs":[[9632,-5530,-1459,-8006,-4213,-9289]],"id":"47181","properties":{"name":"Wayne"}},{"type":"Polygon","arcs":[[-6953,-3935,-7199,9633,9634,-4280,-4687]],"id":"45071","properties":{"name":"Newberry"}},{"type":"Polygon","arcs":[[-5868,-940,-8634,-7495,-4145]],"id":"48205","properties":{"name":"Hartley"}},{"type":"Polygon","arcs":[[-442,-4182,-1490,-4337,-7093]],"id":"55107","properties":{"name":"Rusk"}},{"type":"Polygon","arcs":[[-3423,9635,-6285,-9031,-6415,-5666]],"id":"28117","properties":{"name":"Prentiss"}},{"type":"Polygon","arcs":[[-2959,9636,-1855,-3634,-4778]],"id":"19035","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[-3098,-1047,-7168,9637,9638,-9546]],"id":"20119","properties":{"name":"Meade"}},{"type":"Polygon","arcs":[[-3404,-540,-9156,-511,-1686,-1382]],"id":"48087","properties":{"name":"Collingsworth"}},{"type":"Polygon","arcs":[[-7079,-8572,-9550,-7058,-5471]],"id":"51135","properties":{"name":"Nottoway"}},{"type":"Polygon","arcs":[[-2634,9639,-9599,-9410,-3571,-8842]],"id":"39127","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-3708,-7716,-7850,-8115,-9511,-6295]],"id":"36053","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-3007,-5925,-5814,-8394,-8554]],"id":"18171","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[-8626,-859,-3235,-3525,-349]],"id":"27085","properties":{"name":"McLeod"}},{"type":"Polygon","arcs":[[-2550,9640,-9631,-3033]],"id":"48425","properties":{"name":"Somervell"}},{"type":"Polygon","arcs":[[-1887,-6663,-6667,-9051,-8759,-9581]],"id":"39021","properties":{"name":"Champaign"}},{"type":"MultiPolygon","arcs":[[[9641,-8510]],[[9642,9643,9644,-8508,9645,-8516]]],"id":"12086","properties":{"name":"Miami-Dade"}},{"type":"Polygon","arcs":[[-9500,-9267,-4768,-8526]],"id":"13165","properties":{"name":"Jenkins"}},{"type":"Polygon","arcs":[[-5914,9646,-408,-1804,9647,-6929]],"id":"40043","properties":{"name":"Dewey"}},{"type":"Polygon","arcs":[[-2395,9648,9649,-7038,-9175,-4733]],"id":"40085","properties":{"name":"Love"}},{"type":"Polygon","arcs":[[-4582,-5250,-8944,-6470,-3430]],"id":"13005","properties":{"name":"Bacon"}},{"type":"Polygon","arcs":[[-326,-9559,-3692]],"id":"23021","properties":{"name":"Piscataquis"}},{"type":"Polygon","arcs":[[9650,9651,-1935,-9061]],"id":"39085","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-6056,-8324,-9011,9652,-2787]],"id":"48089","properties":{"name":"Colorado"}},{"type":"Polygon","arcs":[[-5768,-5548,-6828,-6026]],"id":"21131","properties":{"name":"Leslie"}},{"type":"Polygon","arcs":[[-3989,-8577,-8178,-8218,-9315,9653]],"id":"06113","properties":{"name":"Yolo"}},{"type":"Polygon","arcs":[[-9202,9654,-7912,9655,-5362]],"id":"12007","properties":{"name":"Bradford"}},{"type":"Polygon","arcs":[[-9085,-5053,-2971,-2829,9656,-5707,-4895]],"id":"37119","properties":{"name":"Mecklenburg"}},{"type":"Polygon","arcs":[[-8879,-9176,-186,9657,-1175,-3149,-1249,-1875]],"id":"17113","properties":{"name":"McLean"}},{"type":"Polygon","arcs":[[-4354,-8263,-7688,-6754,9658]],"id":"41067","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-7414,-4410,-9430,-6533,-3448,-5662]],"id":"18021","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-9158,-9624,-6171,-7045,-961]],"id":"48161","properties":{"name":"Freestone"}},{"type":"Polygon","arcs":[[-7359,9659,-5654,9660,-9111,9661]],"id":"24003","properties":{"name":"Anne Arundel"}},{"type":"Polygon","arcs":[[-8861,-2926,-8025,-5067,-5101,-9093]],"id":"42083","properties":{"name":"McKean"}},{"type":"Polygon","arcs":[[-1706,-7561,-9035,-2775,9662,-3457]],"id":"29103","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[-2737,-7217,-3175,-5642]],"id":"19147","properties":{"name":"Palo Alto"}},{"type":"Polygon","arcs":[[-3458,-9663,-2779,-8499,-5091,9663]],"id":"29121","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[-2601,9664,-8301,-7247,9665,-3280]],"id":"28103","properties":{"name":"Noxubee"}},{"type":"Polygon","arcs":[[-6427,-6780,-2631,-7805,9666,-4244]],"id":"28077","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-1879,-4397,-1032,-9150,-8550,-9384,-8332,-8339]],"id":"08073","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-6402,-5420,9667,-3059,-737]],"id":"20077","properties":{"name":"Harper"}},{"type":"Polygon","arcs":[[-226,-6541,-1869,-777,-3322]],"id":"19171","properties":{"name":"Tama"}},{"type":"Polygon","arcs":[[-9482,-9075,-8298,-8299,-9665,-2600]],"id":"28087","properties":{"name":"Lowndes"}},{"type":"Polygon","arcs":[[-1608,-1979,-9602,-7625,9668,-4101]],"id":"29057","properties":{"name":"Dade"}},{"type":"Polygon","arcs":[[-2307,-2338,-9523,-465,-6770,-9604]],"id":"48033","properties":{"name":"Borden"}},{"type":"Polygon","arcs":[[-5643,-3178,-3588,-9637]],"id":"19021","properties":{"name":"Buena Vista"}},{"type":"Polygon","arcs":[[-6180,-1405,-5531,-9633,-9288,-5189]],"id":"47039","properties":{"name":"Decatur"}},{"type":"Polygon","arcs":[[-7388,-3052,-9512,-9063,-9110]],"id":"16027","properties":{"name":"Canyon"}},{"type":"Polygon","arcs":[[-4245,-9667,-7804,-8358,-2160]],"id":"28147","properties":{"name":"Walthall"}},{"type":"Polygon","arcs":[[-9039,-9499,-8249,-3666,-4918]],"id":"33005","properties":{"name":"Cheshire"}},{"type":"Polygon","arcs":[[-9138,-2441,-3459,-9664,-5090,-1592]],"id":"29115","properties":{"name":"Linn"}},{"type":"Polygon","arcs":[[-6930,-9648,-1807,-534,-3403,-2620]],"id":"40129","properties":{"name":"Roger Mills"}},{"type":"Polygon","arcs":[[9669,-6012,-7835,9670,-2835,-4613]],"id":"55111","properties":{"name":"Sauk"}},{"type":"Polygon","arcs":[[-9072,-7754,-9219,-7989,-7343,-4097,-9406,-3878]],"id":"22009","properties":{"name":"Avoyelles"}},{"type":"Polygon","arcs":[[-4102,-9669,-7624,-1539,-1688,9671,-1650]],"id":"29109","properties":{"name":"Lawrence"}},{"type":"Polygon","arcs":[[-1080,-8273,-4022,9672,-5381]],"id":"37127","properties":{"name":"Nash"}},{"type":"Polygon","arcs":[[-499,-6060,-2100,9673,-6198,-9495]],"id":"41069","properties":{"name":"Wheeler"}},{"type":"Polygon","arcs":[[-5424,-9613,-6048,-5322,9674,-7761]],"id":"21043","properties":{"name":"Carter"}},{"type":"Polygon","arcs":[[-6025,9675,-6589,-8890,-5056,-4980]],"id":"37115","properties":{"name":"Madison"}},{"type":"MultiPolygon","arcs":[[[-9619]],[[-3761,9676,9677,9678,-8984,-8111],[-6007,-6009,-9618]]],"id":"51153","properties":{"name":"Prince William"}},{"type":"Polygon","arcs":[[-8398,-8195,9679,-9078]],"id":"34007","properties":{"name":"Camden"}},{"type":"Polygon","arcs":[[-9579,-698,-2689,9680]],"id":"38031","properties":{"name":"Foster"}},{"type":"Polygon","arcs":[[-7086,-7065,-6204,-9517,-6376,-1631,-6773]],"id":"51167","properties":{"name":"Russell"}},{"type":"MultiPolygon","arcs":[[[9681]],[[-8943,-5130,-7915,9682,-1667]]],"id":"26041","properties":{"name":"Delta"}},{"type":"Polygon","arcs":[[-6717,-4416,-7318,-4469,-7822,-4464,-6346,-73]],"id":"18175","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-4661,-7499,-4248,-5916,-2945]],"id":"35019","properties":{"name":"Guadalupe"}},{"type":"Polygon","arcs":[[-6398,-2849,-9174,-9296,-4505]],"id":"18029","properties":{"name":"Dearborn"}},{"type":"Polygon","arcs":[[-9172,-7329,-9220,9683,-9294]],"id":"21117","properties":{"name":"Kenton"}},{"type":"MultiPolygon","arcs":[[[-9307,-3656,-7348,9684,-5011]]],"id":"23015","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-8708,-7478,-3425,-5665,-7402]],"id":"28009","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[-103,-745,-3181,-3819,-8783,-6112]],"id":"19119","properties":{"name":"Lyon"}},{"type":"Polygon","arcs":[[-7072,9685,-5840,9686,-5368,9687]],"id":"21049","properties":{"name":"Clark"}},{"type":"Polygon","arcs":[[9688,9689,-6034,9690,-2827]],"id":"37167","properties":{"name":"Stanly"}},{"type":"Polygon","arcs":[[-9167,-5818,-9476,9691,9692]],"id":"47003","properties":{"name":"Bedford"}},{"type":"Polygon","arcs":[[-5452,-5948,-3391,-5469,-3798,9693]],"id":"51029","properties":{"name":"Buckingham"}},{"type":"Polygon","arcs":[[-9388,-9383,-8222,-3833,-7709]],"id":"05089","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-8537,-6267,-3883,-6275,-4620,-9484]],"id":"29003","properties":{"name":"Andrew"}},{"type":"Polygon","arcs":[[-2976,-8350,-3622,-9030,-8293,-4591,-8300]],"id":"01125","properties":{"name":"Tuscaloosa"}},{"type":"Polygon","arcs":[[9694,-6851,-9462,-4730,-2474,-1758]],"id":"72135","properties":{"name":"Toa Alta"}},{"type":"Polygon","arcs":[[-5187,-6023,-4978,-6680,-5064]],"id":"47063","properties":{"name":"Hamblen"}},{"type":"Polygon","arcs":[[-3807,-4729,-6249,9695,-6058,-5436,-9586]],"id":"53005","properties":{"name":"Benton"}},{"type":"Polygon","arcs":[[-8956,-4475,9696,-4813,-8646]],"id":"13191","properties":{"name":"McIntosh"}},{"type":"Polygon","arcs":[[-4871,-5031,-8338,-3229,-7974]],"id":"48109","properties":{"name":"Culberson"}},{"type":"Polygon","arcs":[[-2011,-8732,-9595,-6122,-8523,-8757]],"id":"13245","properties":{"name":"Richmond"}},{"type":"Polygon","arcs":[[-9570,-5930,-6939,-6181,-3482]],"id":"21035","properties":{"name":"Calloway"}},{"type":"Polygon","arcs":[[9697,-5620,-8980,-9080,-9497,-9037]],"id":"33013","properties":{"name":"Merrimack"}},{"type":"MultiPolygon","arcs":[[[-4152,9698]],[[9699,-6904]],[[-9118,9116,-9116,9700,-6902]]],"id":"48167","properties":{"name":"Galveston"}},{"type":"Polygon","arcs":[[-9287,-9553,-9626,-3911,9701,-5783]],"id":"31007","properties":{"name":"Banner"}},{"type":"Polygon","arcs":[[-2537,-3355,-6161,-1950,-8896,-8078]],"id":"05053","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[9702,-5238,9703,-4503,9704,-5234]],"id":"34033","properties":{"name":"Salem"}},{"type":"Polygon","arcs":[[-6967,-9659,-6757,-8209,-8494,9705]],"id":"41057","properties":{"name":"Tillamook"}},{"type":"Polygon","arcs":[[-7726,-9625,-6196,-8718,-9084,-9404,9706]],"id":"36115","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[9707,-7482,-2885,-2258]],"id":"27077","properties":{"name":"Lake of the Woods"}},{"type":"Polygon","arcs":[[-8237,-7148,-1867,-1027,-4396,-8275,-6337]],"id":"08001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[9708,-3990,-9654,-9314,-7928,-7702]],"id":"06033","properties":{"name":"Lake"}},{"type":"Polygon","arcs":[[-8906,-8955,-2014,-9518,-9154,9709]],"id":"13317","properties":{"name":"Wilkes"}},{"type":"Polygon","arcs":[[-5093,-8501,-6784,-1541,9710]],"id":"29089","properties":{"name":"Howard"}},{"type":"Polygon","arcs":[[-6759,9711,-5194,-3541,-240,-6970]],"id":"42011","properties":{"name":"Berks"}},{"type":"Polygon","arcs":[[9712,-5978,-6085,-8267,-3503]],"id":"47087","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[9713,-6014,-147,-7748,-159,-9311]],"id":"72091","properties":{"name":"Manatí"}},{"type":"Polygon","arcs":[[-3057,-8147,-3415,-8965,-6843,-7062]],"id":"54007","properties":{"name":"Braxton"}},{"type":"Polygon","arcs":[[-7157,9714,-8589,-5427,-5955,-9519]],"id":"21161","properties":{"name":"Mason"}},{"type":"Polygon","arcs":[[9715,-9298,-7398,-9098,9716]],"id":"26021","properties":{"name":"Berrien"}},{"type":"Polygon","arcs":[[-9658,-185,-8555,-5137,-1176]],"id":"17019","properties":{"name":"Champaign"}},{"type":"Polygon","arcs":[[-4600,-7508,-9441,-5448,9717,-8769,-7729],[-7190],[-824]],"id":"51015","properties":{"name":"Augusta"}},{"type":"Polygon","arcs":[[-3359,-6448,-3841,-7307,9718,-9541,-6159]],"id":"05001","properties":{"name":"Arkansas"}},{"type":"Polygon","arcs":[[-8628,-9013,-2179,-8923,-9015,-8107]],"id":"13079","properties":{"name":"Crawford"}},{"type":"Polygon","arcs":[[-3452,-6616,-6534,-6394,-4880]],"id":"18027","properties":{"name":"Daviess"}},{"type":"MultiPolygon","arcs":[[[9719]],[[9720,-7170]],[[-4718,9721]],[[-7174,9722]]],"id":"37055","properties":{"name":"Dare"}},{"type":"Polygon","arcs":[[-4017,-3737,-9488,-7531]],"id":"30021","properties":{"name":"Dawson"}},{"type":"Polygon","arcs":[[-8202,-707,-1131,-1724,-6070,-7011]],"id":"48281","properties":{"name":"Lampasas"}},{"type":"Polygon","arcs":[[-7615,-6214,-1765,9723,-7881]],"id":"12123","properties":{"name":"Taylor"}},{"type":"Polygon","arcs":[[9724,-7152,-4402]],"id":"13047","properties":{"name":"Catoosa"}},{"type":"Polygon","arcs":[[-772,-6254,-6308,-516,-9210]],"id":"13067","properties":{"name":"Cobb"}},{"type":"MultiPolygon","arcs":[[[-4832,-7844,-4341]],[[-4095,-9456,-4829,-6721,-9407]]],"id":"22099","properties":{"name":"St. Martin"}},{"type":"Polygon","arcs":[[-7492,-3440,9725,-7807,-2430,-8583,-7512]],"id":"28135","properties":{"name":"Tallahatchie"}},{"type":"Polygon","arcs":[[-9548,-6105,-1590,-912,-7623,-9601]],"id":"29059","properties":{"name":"Dallas"}},{"type":"Polygon","arcs":[[-4021,-4253,-5289,-4666,-5382,-9673]],"id":"37195","properties":{"name":"Wilson"}},{"type":"Polygon","arcs":[[-1645,-6217,-401,-9578,9726,-9040]],"id":"38005","properties":{"name":"Benson"}},{"type":"Polygon","arcs":[[-9635,9727,9728,-9608,-6118,-4281]],"id":"45063","properties":{"name":"Lexington"}},{"type":"Polygon","arcs":[[-1737,-2834,-2921,-8687,-1911,-4371,-9300]],"id":"48137","properties":{"name":"Edwards"}},{"type":"Polygon","arcs":[[-4405,-4001,-4639,-4449]],"id":"13055","properties":{"name":"Chattooga"}},{"type":"Polygon","arcs":[[9729,-3544,-7300,9730,9731]],"id":"24025","properties":{"name":"Harford"}},{"type":"Polygon","arcs":[[-5853,-5934,-6868,-5199,-4273,-5191,-5083]],"id":"45069","properties":{"name":"Marlboro"}},{"type":"Polygon","arcs":[[-3067,-7784,-5652,-9569,-3118,-3255]],"id":"20161","properties":{"name":"Riley"}},{"type":"Polygon","arcs":[[-5842,-7404,-1624,-1332,-9297,9732]],"id":"26005","properties":{"name":"Allegan"}},{"type":"Polygon","arcs":[[-6782,-5340,-5460,-5108,-7756]],"id":"29051","properties":{"name":"Cole"}},{"type":"Polygon","arcs":[[-7893,-7949,9733,9734,-3920,-4268,-2781]],"id":"40143","properties":{"name":"Tulsa"}},{"type":"Polygon","arcs":[[-3771,-8451,-6192,-5371,-1928,9735]],"id":"48187","properties":{"name":"Guadalupe"}},{"type":"Polygon","arcs":[[-8728,-9281,9736,-8817,-8809,-2576]],"id":"50005","properties":{"name":"Caledonia"}},{"type":"Polygon","arcs":[[-5689,-1515,-9554,-3163,-7836]],"id":"55055","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-8144,9737,-5229,9738,9739]],"id":"42001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-6405,-7827,-3433,-3443,-8212,-8709]],"id":"20105","properties":{"name":"Lincoln"}},{"type":"MultiPolygon","arcs":[[[-9171,9740]],[[9741]]],"id":"53029","properties":{"name":"Island"}},{"type":"Polygon","arcs":[[9742,-4991,-6078,-9496,-6568,-669,-5377,-7188]],"id":"31107","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[-8857,-8135,9743,-4624,-9284,-8426,-9200]],"id":"32019","properties":{"name":"Lyon"}},{"type":"Polygon","arcs":[[-7762,-9675,-5321,-9571]],"id":"21063","properties":{"name":"Elliott"}},{"type":"Polygon","arcs":[[-4705,-5370,-4681,-6827,-6581,9744]],"id":"21079","properties":{"name":"Garrard"}},{"type":"Polygon","arcs":[[-5767,-5143,-5835,-6771,-5550]],"id":"21133","properties":{"name":"Letcher"}},{"type":"Polygon","arcs":[[-3126,-4785,9745,-7320,-7431]],"id":"21223","properties":{"name":"Trimble"}},{"type":"Polygon","arcs":[[-4310,-6177,-8245,-8246,-5645,-9620]],"id":"47123","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-2400,-8051,-8113,-2408,-7018]],"id":"51113","properties":{"name":"Madison"}},{"type":"Polygon","arcs":[[-7223,-3493,-1371,-2821,-9557,-3243]],"id":"17027","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-4810,9746,-9644,9747,-8953]],"id":"12011","properties":{"name":"Broward"}},{"type":"Polygon","arcs":[[-9547,-9639,9748,-6999,-4106]],"id":"20175","properties":{"name":"Seward"}},{"type":"Polygon","arcs":[[-7992,-8785,-7028,-9592,-7007,-6168,-9623]],"id":"48073","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[-9719,-7306,-3675,-7586,-2426,-9542]],"id":"05041","properties":{"name":"Desha"}},{"type":"Polygon","arcs":[[-9431,-4081,-4583,-8463,-8575,-7283]],"id":"16029","properties":{"name":"Caribou"}},{"type":"Polygon","arcs":[[-4668,-3903,-4306,-2453,-9543,-6794]],"id":"37061","properties":{"name":"Duplin"}},{"type":"Polygon","arcs":[[-8213,-3446,-9004,-6545,-6719,-6539]],"id":"20009","properties":{"name":"Barton"}},{"type":"Polygon","arcs":[[-1806,9749,-7887,-536]],"id":"40149","properties":{"name":"Washita"}},{"type":"Polygon","arcs":[[-7265,-6456,-6525,-9611,-8611,-1794]],"id":"08037","properties":{"name":"Eagle"}},{"type":"Polygon","arcs":[[-2108,-8877,-5897,-5894,-7694,-8204]],"id":"39099","properties":{"name":"Mahoning"}},{"type":"Polygon","arcs":[[-5253,9750,-8529,-8156,-8084,-4939]],"id":"01087","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[-8547,-1903,-6742,-2881,-488]],"id":"39107","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[-3760,-5485,-6231,-3135,-6230,-9540,9751,-9471,9752,-9678,-9677],[-9551]],"id":"51059","properties":{"name":"Fairfax"}},{"type":"Polygon","arcs":[[-9207,9753,-4332,-1462,-4181]],"id":"55085","properties":{"name":"Oneida"}},{"type":"Polygon","arcs":[[-8751,-2983,-2095,9754]],"id":"41061","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-6120,-9610,-1410,-6020,-8524]],"id":"45011","properties":{"name":"Barnwell"}},{"type":"Polygon","arcs":[[9755,-362,-8450,-5672]],"id":"49051","properties":{"name":"Wasatch"}},{"type":"MultiPolygon","arcs":[[[9756]],[[9757]],[[-6279,-8308,9758]],[[9759]]],"id":"26089","properties":{"name":"Leelanau"}},{"type":"Polygon","arcs":[[-7559,-9402,-9190,-3220,-5478,-8920,-9034]],"id":"17067","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[9760,-5954,-1552,9761,-1520]],"id":"51193","properties":{"name":"Westmoreland"}},{"type":"Polygon","arcs":[[-3630,-7629,-4030,-8530,-9751,-5252,-8313]],"id":"01123","properties":{"name":"Tallapoosa"}},{"type":"Polygon","arcs":[[-1732,-8672,-8908,9762,-9565]],"id":"13075","properties":{"name":"Cook"}},{"type":"MultiPolygon","arcs":[[[-5407,9763]],[[9764]]],"id":"26083","properties":{"name":"Keweenaw"}},{"type":"Polygon","arcs":[[-3281,-9666,-7246,-336,-1051]],"id":"28069","properties":{"name":"Kemper"}},{"type":"Polygon","arcs":[[-1086,-8680,-1899,-2199]],"id":"39125","properties":{"name":"Paulding"}},{"type":"Polygon","arcs":[[-6024,-1487,-7580,-4714,-6586,-9676]],"id":"47171","properties":{"name":"Unicoi"}},{"type":"Polygon","arcs":[[-9159,-4579,-8692,9765]],"id":"13209","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-9566,-9763,-8910,-7612,-7880,-7290]],"id":"13027","properties":{"name":"Brooks"}},{"type":"Polygon","arcs":[[-3913,-9628,9766,-2952,-2953,-1029,-1866,-7147]],"id":"08075","properties":{"name":"Logan"}},{"type":"Polygon","arcs":[[-1809,-97,-6777,-947,-1931]],"id":"39117","properties":{"name":"Morrow"}},{"type":"Polygon","arcs":[[-9019,-1926,9767,-9597,-9640,-2633]],"id":"39119","properties":{"name":"Muskingum"}},{"type":"Polygon","arcs":[[-8823,-4906,9768,-7213]],"id":"13051","properties":{"name":"Chatham"}},{"type":"Polygon","arcs":[[-9018,-9022,-1849,-7294,9769,-8655]],"id":"13061","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-9627,-8632,-7407,-2949,-9767]],"id":"08115","properties":{"name":"Sedgwick"}},{"type":"Polygon","arcs":[[-3851,-7326,-8622,-9050,-1896,9770,-3038]],"id":"12105","properties":{"name":"Polk"}},{"type":"Polygon","arcs":[[9771,-9479,-9232,-8060,-2380,-5016]],"id":"48147","properties":{"name":"Fannin"}},{"type":"Polygon","arcs":[[-6173,-3485,-7620,-6114,-6040,-5728]],"id":"21105","properties":{"name":"Hickman"}},{"type":"Polygon","arcs":[[-8990,-8997,-7959,-4447,-8037,-9283]],"id":"01071","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-8912,-3575,-8153,-8528,9772]],"id":"13215","properties":{"name":"Muscogee"}},{"type":"Polygon","arcs":[[9773,-9259,-4012,-8260,-4225,-2934,-8678]],"id":"17195","properties":{"name":"Whiteside"}},{"type":"Polygon","arcs":[[9774,-9054,-8620,-2504,-8070]],"id":"12009","properties":{"name":"Brevard"}},{"type":"Polygon","arcs":[[-3386,-9263,-1734,-9564,-7964,-7962,-9303]],"id":"13321","properties":{"name":"Worth"}},{"type":"Polygon","arcs":[[-8945,-8647,-4816,-9324,-5208,-6472]],"id":"13025","properties":{"name":"Brantley"}},{"type":"Polygon","arcs":[[-1805,-406,-9389,-2359,-528,-7888,-9750]],"id":"40015","properties":{"name":"Caddo"}},{"type":"Polygon","arcs":[[9775,-9692,-9477,-8992,-9282,-7812,-1091]],"id":"47103","properties":{"name":"Lincoln"}},{"type":"Polygon","arcs":[[-6908,-4937,-3295,-7524,-8343,9776]],"id":"39111","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[9777,-4611,-8102,-8800]],"id":"55081","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-6363,-3909,-4902,-3932,-7825]],"id":"45021","properties":{"name":"Cherokee"}},{"type":"Polygon","arcs":[[-5497,-5206,-208,-8831,-4333,-9754,-9206]],"id":"55041","properties":{"name":"Forest"}},{"type":"Polygon","arcs":[[-806,-7073,-9688,-5367,-4703,9778]],"id":"21067","properties":{"name":"Fayette"}},{"type":"Polygon","arcs":[[-394,-4122,-6509,-6654,-9485,-7443]],"id":"36037","properties":{"name":"Genesee"}},{"type":"Polygon","arcs":[[9779,9780,9781,-6579,-9165]],"id":"21229","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-8272,9782,-6835,9783,-4254,-4019]],"id":"37117","properties":{"name":"Martin"}},{"type":"Polygon","arcs":[[-3366,-7824,-7001,-4023,-5867,-4143]],"id":"40025","properties":{"name":"Cimarron"}},{"type":"Polygon","arcs":[[-5202,-6301,-5264,-6065,-4275]],"id":"45067","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-877,-8460,-1833,-9145,-2871,-315,9784,-6595]],"id":"01039","properties":{"name":"Covington"}},{"type":"MultiPolygon","arcs":[[[9785]],[[9786]],[[-7257,-2008,-7205,9787,-7202]]],"id":"06037","properties":{"name":"Los Angeles"}},{"type":"Polygon","arcs":[[-8909,-7128,-7657,-7336,-7614]],"id":"12047","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-7260,-8954,-9748,-9643,-8515,9788]],"id":"12021","properties":{"name":"Collier"}},{"type":"Polygon","arcs":[[-2895,-6215,-1326,-9095,-4998,9789,-6260]],"id":"20125","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-3228,-6216,-5546,-7233,-4057,-5938,-862]],"id":"17193","properties":{"name":"White"}},{"type":"Polygon","arcs":[[-503,-1651,-9672,-1691,-7250,-4220]],"id":"29009","properties":{"name":"Barry"}},{"type":"Polygon","arcs":[[-85,-9250,-7349,-1616,-6555,-9251]],"id":"26125","properties":{"name":"Oakland"}},{"type":"Polygon","arcs":[[-5586,-4615,-7649,-8033,-5391]],"id":"19005","properties":{"name":"Allamakee"}},{"type":"Polygon","arcs":[[-6261,-9790,-5002,9790,-9734,-7948]],"id":"40147","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[9791,-4576,-6483,-6785,-6303]],"id":"30005","properties":{"name":"Blaine"}},{"type":"Polygon","arcs":[[-5953,9792,-1554]],"id":"51103","properties":{"name":"Lancaster"}},{"type":"Polygon","arcs":[[-7395,-6473,-5211,-7608,-9378,-7913,-9655,-9201,-7658]],"id":"12003","properties":{"name":"Baker"}},{"type":"Polygon","arcs":[[-1264,-8095,-6636,-7752,-4847,-9309]],"id":"22127","properties":{"name":"Winn"}},{"type":"Polygon","arcs":[[-7767,-9168,-9693,-9776,-1090,-5556]],"id":"47117","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-1521,-9762,-1556,9793,-9534,-6131,-5713]],"id":"51057","properties":{"name":"Essex"}},{"type":"Polygon","arcs":[[-490,-2880,-1213,-3077,-8999]],"id":"18135","properties":{"name":"Randolph"}},{"type":"Polygon","arcs":[[9794,-749,-9199,-8779]],"id":"30101","properties":{"name":"Toole"}},{"type":"Polygon","arcs":[[-3695,-9306,-5656,-5984,9795]],"id":"23007","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-1329,-1135,-5416,-2702,9796,-1622]],"id":"26045","properties":{"name":"Eaton"}},{"type":"Polygon","arcs":[[-8573,-1252,-9556,-2148,-7114,-3024,-5313,-5274]],"id":"17167","properties":{"name":"Sangamon"}},{"type":"Polygon","arcs":[[9797,-4087,9798,-9227]],"id":"25001","properties":{"name":"Barnstable"}},{"type":"Polygon","arcs":[[9799,-6879,-5468,-4541,-9443]],"id":"30091","properties":{"name":"Sheridan"}},{"type":"Polygon","arcs":[[-7498,-8579,-6940,-1021,-8228,-8894,-4250]],"id":"35041","properties":{"name":"Roosevelt"}},{"type":"Polygon","arcs":[[-9668,-5419,-7453,-6799,-3060]],"id":"40053","properties":{"name":"Grant"}},{"type":"Polygon","arcs":[[-8143,9800,-3545,-9730,9801,-5230,-9738]],"id":"42133","properties":{"name":"York"}},{"type":"Polygon","arcs":[[-1773,-6383,-6603,-7186,-882,-9062]],"id":"13237","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[-9614,-7794,-8872,9802]],"id":"13257","properties":{"name":"Stephens"}},{"type":"Polygon","arcs":[[-9615,-9803,-8873,-1916,-9229,-8917]],"id":"13011","properties":{"name":"Banks"}},{"type":"Polygon","arcs":[[-5878,-9510,-1580,-3470,-6625,-3004,-9230]],"id":"18073","properties":{"name":"Jasper"}},{"type":"Polygon","arcs":[[-3436,-663,-5146,-9236,-9002,-3444]],"id":"20113","properties":{"name":"McPherson"}},{"type":"Polygon","arcs":[[-9233,-8951,-6413,-1380,9803,-3533]],"id":"27097","properties":{"name":"Morrison"}},{"type":"Polygon","arcs":[[-5224,-7169,-1081,-5380,-7131,-5562]],"id":"37183","properties":{"name":"Wake"}},{"type":"Polygon","arcs":[[-3679,-7514,-6567,-7177,-7820,-7587]],"id":"28151","properties":{"name":"Washington"}},{"type":"Polygon","arcs":[[-9270,-9260,-9774,-8677,-7234,-294,-2680]],"id":"19045","properties":{"name":"Clinton"}},{"type":"Polygon","arcs":[[-7727,-9707,-9403,-7858]],"id":"36113","properties":{"name":"Warren"}},{"type":"Polygon","arcs":[[-9413,-879,-6597,9804,-2698,-8289]],"id":"01099","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-5564,-7130,-6862]],"id":"37105","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[-9802,-9732,9805,-5655,-9660,-7358,-5231]],"id":"24005","properties":{"name":"Baltimore"}},{"type":"Polygon","arcs":[[-8996,-683,-812,9806,-4747,-7611,-9725,-4401,-7958]],"id":"47065","properties":{"name":"Hamilton"}},{"type":"Polygon","arcs":[[-170,9807,-9739,-5233,-7357,-5481,-3758]],"id":"24021","properties":{"name":"Frederick"}},{"type":"Polygon","arcs":[[-5757,-1559,-5396,-5411,-4436]],"id":"47097","properties":{"name":"Lauderdale"}},{"type":"Polygon","arcs":[[-8116,-7852,-50,-2879,-9132,-8139,-7847,-8042]],"id":"36025","properties":{"name":"Delaware"}},{"type":"Polygon","arcs":[[-4163,-6378,-9247,-3632,-8312,-8206]],"id":"01121","properties":{"name":"Talladega"}},{"type":"Polygon","arcs":[[-1623,-9797,-2707,-3137,-1196,-1334]],"id":"26025","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[-8613,-9612,-9606,9808,-6459,-7119]],"id":"08015","properties":{"name":"Chaffee"}},{"type":"Polygon","arcs":[[-1178,-5139,9809,-8392,-9555]],"id":"17139","properties":{"name":"Moultrie"}},{"type":"Polygon","arcs":[[-9126,-6423,-7806,-9726,-3439,-7517]],"id":"28107","properties":{"name":"Panola"}},{"type":"Polygon","arcs":[[-8383,-8688,-6073,-1998]],"id":"30039","properties":{"name":"Granite"}},{"type":"Polygon","arcs":[[-9712,-6758,-4989,-9077,-6434,-5195]],"id":"42091","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-8319,-6927,-5872,9810,-5696,-5152,-6063]],"id":"42061","properties":{"name":"Huntingdon"}},{"type":"Polygon","arcs":[[-8322,-9450,-9119,-6900,-9009]],"id":"48157","properties":{"name":"Fort Bend"}},{"type":"Polygon","arcs":[[-6199,-9674,-2099,-4357,-6810]],"id":"41013","properties":{"name":"Crook"}},{"type":"Polygon","arcs":[[-8271,-8458,-6711,9811,-6836,-9783]],"id":"37015","properties":{"name":"Bertie"}},{"type":"Polygon","arcs":[[-8799,-2587,-9560,-9670,-4612,-9778]],"id":"55057","properties":{"name":"Juneau"}},{"type":"Polygon","arcs":[[-2394,-7900,-9478,9812,-9649]],"id":"40095","properties":{"name":"Marshall"}},{"type":"Polygon","arcs":[[-1721,-693,-8177,-8052,-8127,-4362]],"id":"48331","properties":{"name":"Milam"}},{"type":"Polygon","arcs":[[-6281,-4234,-2892,-1349,-584]],"id":"26165","properties":{"name":"Wexford"}},{"type":"Polygon","arcs":[[-9134,-5992,-9689,-2826,-2970]],"id":"37159","properties":{"name":"Rowan"}},{"type":"Polygon","arcs":[[-807,-9779,-4702,9813,9814,-2772]],"id":"21239","properties":{"name":"Woodford"}},{"type":"Polygon","arcs":[[-7166,-7275,-5911,-5912,-6928,9815]],"id":"40059","properties":{"name":"Harper"}},{"type":"Polygon","arcs":[[-836,-6963,-6923,-9399,-2792,-428]],"id":"55139","properties":{"name":"Winnebago"}},{"type":"Polygon","arcs":[[-5126,-9572,-319,-9629,-6937,-5928,-6575]],"id":"21047","properties":{"name":"Christian"}},{"type":"Polygon","arcs":[[-3132,-816,-9046,-2668,-5561,-1202]],"id":"37001","properties":{"name":"Alamance"}},{"type":"Polygon","arcs":[[-9687,-5839,-1316,-3862,-5369]],"id":"21065","properties":{"name":"Estill"}},{"type":"Polygon","arcs":[[-3929,-5051,-6669,-3518,-6288,-9415,-9567]],"id":"42129","properties":{"name":"Westmoreland"}},{"type":"Polygon","arcs":[[-6189,-5094,-9711,-1540,-1992,-5455]],"id":"29195","properties":{"name":"Saline"}},{"type":"Polygon","arcs":[[9816,-756,-8964,-5695,-928,-605,-4966]],"id":"46037","properties":{"name":"Day"}},{"type":"Polygon","arcs":[[9817,-7706,-3772,-9736,-1927,-1411,-6273]],"id":"48029","properties":{"name":"Bexar"}},{"type":"Polygon","arcs":[[-1743,-8771,-4763,-8119,-8128,-8013,-7675,9818]],"id":"51019","properties":{"name":"Bedford"}},{"type":"Polygon","arcs":[[-8960,-9239,-6915,-8586,-9715,-7156]],"id":"39015","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[-9696,-6248,-9574,-8752,-9755,-2094,-6059]],"id":"41059","properties":{"name":"Umatilla"}},{"type":"Polygon","arcs":[[-436,-5963,-9421,-9242,-6036]],"id":"47129","properties":{"name":"Morgan"}},{"type":"Polygon","arcs":[[-8346,-1744,-9819,-7674,-7527,-4723],[-7638,-2930]],"id":"51161","properties":{"name":"Roanoke"}},{"type":"Polygon","arcs":[[-8935,-8986]],"id":"51630","properties":{"name":"Fredericksburg"}},{"type":"Polygon","arcs":[[-8664,-1727,-5813,-5301,-734,9819,-8597]],"id":"53063","properties":{"name":"Spokane"}},{"type":"Polygon","arcs":[[-8344,-7525,-7522,-7567]],"id":"54073","properties":{"name":"Pleasants"}},{"type":"Polygon","arcs":[[9820,-9448,-8973,-6994,-8972]],"id":"72027","properties":{"name":"Camuy"}},{"type":"Polygon","arcs":[[-9749,-9638,-7167,-9816,-6931,-1220,-6095,-7000]],"id":"40007","properties":{"name":"Beaver"}},{"type":"Polygon","arcs":[[-3942,-6830,9821,-2711,-5062,-8551,-6499]],"id":"47025","properties":{"name":"Claiborne"}},{"type":"Polygon","arcs":[[-1236,-6098,-5228,-4927,-6287,-4800,-6449,-5746]],"id":"04001","properties":{"name":"Apache"}},{"type":"Polygon","arcs":[[-9178,-221,-8913,-9773,-8527,-4028]],"id":"13145","properties":{"name":"Harris"}},{"type":"Polygon","arcs":[[-7816,-7875,-9481,-9393,-7868,-7877]],"id":"12077","properties":{"name":"Liberty"}},{"type":"Polygon","arcs":[[-8445,-8059,9822,9823]],"id":"28045","properties":{"name":"Hancock"}},{"type":"Polygon","arcs":[[9824,-4888,-7760,-8876,-1936,-9652]],"id":"39007","properties":{"name":"Ashtabula"}},{"type":"Polygon","arcs":[[-2221,-6521,-3986,-9709,-7701]],"id":"06021","properties":{"name":"Glenn"}},{"type":"Polygon","arcs":[[-9094,-7379,-8696,-9096,-9192,9825,-5000]],"id":"40035","properties":{"name":"Craig"}},{"type":"Polygon","arcs":[[-7271,-8874,-7455,-5290,-8479]],"id":"17087","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-7373,7371,-7371,7369,-7369,7367,-7367,-9591,-5177,-7225,-8649,-3884,-1303]],"id":"29183","properties":{"name":"St. Charles"}},{"type":"Polygon","arcs":[[9826,-2897,-6263,-7947,-7450,-5417]],"id":"20035","properties":{"name":"Cowley"}},{"type":"Polygon","arcs":[[-7589,-3866,-7554,-8276]],"id":"22123","properties":{"name":"West Carroll"}},{"type":"Polygon","arcs":[[9827,-9515,-2231,-8808,-9426,-7004,-5972,-4259]],"id":"38029","properties":{"name":"Emmons"}},{"type":"Polygon","arcs":[[-6646,9828,-8774,-8482,-8937]],"id":"29181","properties":{"name":"Ripley"}},{"type":"Polygon","arcs":[[-9069,-209,-1298,9829,-9265]],"id":"06087","properties":{"name":"Santa Cruz"}},{"type":"Polygon","arcs":[[-4458,-4037,-3022,-7700,9830]],"id":"06023","properties":{"name":"Humboldt"}},{"type":"Polygon","arcs":[[-8806,-346,9831,-2515,-6678,-9427]],"id":"46089","properties":{"name":"McPherson"}},{"type":"Polygon","arcs":[[-1106,-8598,-9820,-733,-8619,-7774,9832,-3624,-9573,-4726]],"id":"53075","properties":{"name":"Whitman"}},{"type":"Polygon","arcs":[[9833,-8665,-8595,-4156]],"id":"53019","properties":{"name":"Ferry"}},{"type":"Polygon","arcs":[[-6609,-199,-9304,-7960,-1851,-9021]],"id":"13273","properties":{"name":"Terrell"}},{"type":"Polygon","arcs":[[-651,-1920,-8907,-9710,-9153,-6380,-9014]],"id":"13221","properties":{"name":"Oglethorpe"}},{"type":"Polygon","arcs":[[-8355,-4647,-9616,-9223,-1496,-9453]],"id":"30009","properties":{"name":"Carbon"}},{"type":"Polygon","arcs":[[-5718,-5784,-9702,-3915,-7146,-8314,-5445]],"id":"56021","properties":{"name":"Laramie"}},{"type":"Polygon","arcs":[[-655,-1585,-3856,-81,-6716,-7123]],"id":"18005","properties":{"name":"Bartholomew"}},{"type":"Polygon","arcs":[[-9295,-9684,-9221,-6682,-803,-6832,-6860]],"id":"21081","properties":{"name":"Grant"}},{"type":"MultiPolygon","arcs":[[[9834]],[[-9590,9835,-8889,-4263,-3222]]],"id":"39043","properties":{"name":"Erie"}},{"type":"Polygon","arcs":[[9836,-9814,-4706,-9745,-6580,-9782]],"id":"21167","properties":{"name":"Mercer"}},{"type":"Polygon","arcs":[[-7484,-7488,-2129,-8804,-1008,-37]],"id":"27027","properties":{"name":"Clay"}},{"type":"Polygon","arcs":[[-5990,-6805,-5836,-9686,-7071]],"id":"21173","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-5991,-1205,-6865,-5850,-9690]],"id":"37123","properties":{"name":"Montgomery"}},{"type":"Polygon","arcs":[[-9317,9837,-7667,-8998,-8927,-856,-8625]],"id":"27053","properties":{"name":"Hennepin"}},{"type":"Polygon","arcs":[[-4291,-6493,-1342,-5124,-6574,-6030]],"id":"21233","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[9838,-9717,-9099,-1576,-9509]],"id":"18091","properties":{"name":"LaPorte"}},{"type":"Polygon","arcs":[[-2716,-6359,9839,-2543,-1323]],"id":"20011","properties":{"name":"Bourbon"}},{"type":"Polygon","arcs":[[-9657,-2828,-9691,-6033,-5081,-5708]],"id":"37179","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-8224,9840,-4716,-8414]],"id":"51810","properties":{"name":"Virginia Beach"}},{"type":"Polygon","arcs":[[-8833,9841,-7113,-870,-6920,-6962,-9240]],"id":"55009","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[-9809,-9605,-2341,-8340,-3269,-8334,-6460]],"id":"08043","properties":{"name":"Fremont"}},{"type":"Polygon","arcs":[[9842,-9575,-7982,-6428,-8007,-7905]],"id":"28067","properties":{"name":"Jones"}},{"type":"Polygon","arcs":[[-1971,-390,-7427,-7779,-4863,-9536]],"id":"31181","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[-8415,-4720,9843,-8109,-8098,-8330]],"id":"37029","properties":{"name":"Camden"}},{"type":"Polygon","arcs":[[-9582,-8403,-4755,-4312,-9632,-9641,-2549]],"id":"48251","properties":{"name":"Johnson"}},{"type":"Polygon","arcs":[[-1796,-8614,-7117,-6342,-2154,-9198]],"id":"08077","properties":{"name":"Mesa"}},{"type":"Polygon","arcs":[[-5966,-6786,-5706,-4676,-1984]],"id":"30013","properties":{"name":"Cascade"}},{"type":"Polygon","arcs":[[-5147,-661,-1127,-376,-2898,-9827,-4782]],"id":"20015","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[-6488,-5287,-5920,-8987,-1781,-9253]],"id":"38025","properties":{"name":"Dunn"}},{"type":"Polygon","arcs":[[-5573,-4375,-363,-9756,-5671,-8506]],"id":"49035","properties":{"name":"Salt Lake"}},{"type":"Polygon","arcs":[[-7040,9844,-5019,-8704,-8401,-262]],"id":"48121","properties":{"name":"Denton"}},{"type":"Polygon","arcs":[[-2240,-4749,-126,-702,-1423,-4992,-9743,-7187,-627]],"id":"46023","properties":{"name":"Charles Mix"}},{"type":"Polygon","arcs":[[-9718,-5453,-9694,-3797,-4760,-8770]],"id":"51125","properties":{"name":"Nelson"}},{"type":"Polygon","arcs":[[-7665,-3287,-1124,9845,-119,-4173,-6210]],"id":"72043","properties":{"name":"Coamo"}},{"type":"Polygon","arcs":[[-9041,-9727,-9580,-9681,-2688,-9514,-9129]],"id":"38103","properties":{"name":"Wells"}},{"type":"Polygon","arcs":[[9846,-6852,-9695,-1757]],"id":"72051","properties":{"name":"Dorado"}},{"type":"Polygon","arcs":[[-1816,-9513,-1172,-8880,-1873,-4116]],"id":"17143","properties":{"name":"Peoria"}},{"type":"Polygon","arcs":[[-6436,-9079,-9680,-8199,-4499,-9704,-5237]],"id":"34015","properties":{"name":"Gloucester"}},{"type":"Polygon","arcs":[[-666,-5754,-5720,-7668,-9838,-9316]],"id":"27003","properties":{"name":"Anoka"}},{"type":"Polygon","arcs":[[-345,-7769,-757,-9817,-4965,-8005,-2516,-9832]],"id":"46013","properties":{"name":"Brown"}},{"type":"Polygon","arcs":[[-5909,-3062,-6802,-1390,-403,-9647,-5913]],"id":"40093","properties":{"name":"Major"}},{"type":"Polygon","arcs":[[-930,-5694,-5346,-8082,-3673,-9469,-9594]],"id":"46039","properties":{"name":"Deuel"}},{"type":"Polygon","arcs":[[-2016,9847]],"id":"02230","properties":{"name":"Skagway"}},{"type":"Polygon","arcs":[[-1633,-6375,-6156,-6374,-4736,-7578,-1485,-5185]],"id":"47163","properties":{"name":"Sullivan"}},{"type":"Polygon","arcs":[[-6495,-5543,9848]],"id":"44001","properties":{"name":"Bristol"}},{"type":"Polygon","arcs":[[-8552,-5066,-6681,-5602,-6174,-4308,-9422,-5961]],"id":"47093","properties":{"name":"Knox"}},{"type":"Polygon","arcs":[[-8840,-828,-1484,-5447,-471,-7264,-8574,-6002]],"id":"56007","properties":{"name":"Carbon"}},{"type":"Polygon","arcs":[[-5636,-6971,-242,-3540,-9801,-8142,-8772]],"id":"42043","properties":{"name":"Dauphin"}},{"type":"Polygon","arcs":[[-7654]],"id":"51580","properties":{"name":"Covington"}},{"type":"Polygon","arcs":[[-2836,-9671,-7838,-8853,-8845,-7983]],"id":"55049","properties":{"name":"Iowa"}},{"type":"Polygon","arcs":[[-6983,-9246,-6980,-9245,-809,-681,-5827]],"id":"47175","properties":{"name":"Van Buren"}},{"type":"Polygon","arcs":[[-2919,-7707,-9818,-6272,-1913,-8686]],"id":"48019","properties":{"name":"Bandera"}},{"type":"Polygon","arcs":[[-9144,-9461,-3843,-2873]],"id":"12059","properties":{"name":"Holmes"}},{"type":"Polygon","arcs":[[-5438,-501,-9494]],"id":"41055","properties":{"name":"Sherman"}},{"type":"Polygon","arcs":[[-8656,-9770,-7293,-9146,-8469]],"id":"01067","properties":{"name":"Henry"}},{"type":"Polygon","arcs":[[-8886,-8433,-5623,-7511,-5614,-7927,-8844]],"id":"05139","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-8019,-8354,-7085,-9440,-7506,-8729]],"id":"54031","properties":{"name":"Hardy"}},{"type":"Polygon","arcs":[[-9291,-5981,9849,-8259,-4422,-5219,-1101,-9215]],"id":"22017","properties":{"name":"Caddo"}},{"type":"Polygon","arcs":[[-2612,-7645,-7238,-4034]],"id":"41029","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-7237,-4129,4127,-8132,-8615,-566,-4036]],"id":"06049","properties":{"name":"Modoc"}},{"type":"Polygon","arcs":[[-7477,-5487,-9290,-6286,-9636,-3422]],"id":"28003","properties":{"name":"Alcorn"}},{"type":"Polygon","arcs":[[-9385,-8618,-3362,-7221,-2332]],"id":"08011","properties":{"name":"Bent"}},{"type":"Polygon","arcs":[[-7750,-7124,-6718,-71,-3450,-6532]],"id":"18105","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-8444,-9466,9850,-4062]],"id":"21029","properties":{"name":"Bullitt"}},{"type":"Polygon","arcs":[[-1925,-6909,-9777,-8342,-9598,-9768]],"id":"39121","properties":{"name":"Noble"}},{"type":"Polygon","arcs":[[-4301,-2773,-9815,-9837,-9781,9851,-9464]],"id":"21005","properties":{"name":"Anderson"}},{"type":"Polygon","arcs":[[-9851,-9465,-9852,-9780,-9164,-5791,-4063]],"id":"21179","properties":{"name":"Nelson"}},{"type":"Polygon","arcs":[[-7035,-5356,-9585,-4377,-5575]],"id":"49057","properties":{"name":"Weber"}},{"type":"Polygon","arcs":[[-7023,-6151,-1238,-725,-3,-8063]],"id":"49025","properties":{"name":"Kane"}},{"type":"Polygon","arcs":[[-3344,-9125,-8194,-8258,-9850,-5980,-5771,-3345]],"id":"05091","properties":{"name":"Miller"}},{"type":"Polygon","arcs":[[-7198,-7641,-5951,9852,-9728,-9634]],"id":"45079","properties":{"name":"Richland"}},{"type":"Polygon","arcs":[[-9656,-7911,-8564,-2499,-8068,9853,-5363]],"id":"12107","properties":{"name":"Putnam"}},{"type":"Polygon","arcs":[[9854,-5936,-8875,-7269,-7364,-9530]],"id":"17077","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[-9784,-6840,-7176,9855,-6833,-3951,-4255]],"id":"37013","properties":{"name":"Beaufort"}},{"type":"Polygon","arcs":[[-368,-6657,-8073,9856]],"id":"36123","properties":{"name":"Yates"}},{"type":"Polygon","arcs":[[-8159,-3490,-5979,-9713,-3502,-1226,-5846]],"id":"47111","properties":{"name":"Macon"}},{"type":"Polygon","arcs":[[-4372,-977,-5568,-9007,9857]],"id":"48323","properties":{"name":"Maverick"}},{"type":"Polygon","arcs":[[-1010,-8805,-6723,-6259,-7381,-8963]],"id":"27155","properties":{"name":"Traverse"}},{"type":"Polygon","arcs":[[-8815,-8856,-9398,-4625,-9744,-8134]],"id":"32001","properties":{"name":"Churchill"}},{"type":"Polygon","arcs":[[-5120,-5777,-8859,-1479,-5860,-6847]],"id":"56005","properties":{"name":"Campbell"}},{"type":"Polygon","arcs":[[-7810,-8012,-9587,-5441,-9600,-8261,-5589]],"id":"53059","properties":{"name":"Skamania"}},{"type":"Polygon","arcs":[[-1960,-2509,-8743,-8902,-3550,-9262,-3384]],"id":"13315","properties":{"name":"Wilcox"}},{"type":"MultiPolygon","arcs":[[[9858]],[[-8977,9859,-7744]]],"id":"72053","properties":{"name":"Fajardo"}},{"type":"Polygon","arcs":[[-9244,-9424,-4743,-9807,-811]],"id":"47143","properties":{"name":"Rhea"}},{"type":"Polygon","arcs":[[-1319,-6573,-5570,-5145,-5766,-3820]],"id":"21025","properties":{"name":"Breathitt"}},{"type":"Polygon","arcs":[[-6358,-7426,-313,-1977,-1606,-2544,-9840]],"id":"29217","properties":{"name":"Vernon"}},{"type":"Polygon","arcs":[[-9805,-6596,-9785,-314,-7951,-9489,-2699]],"id":"01053","properties":{"name":"Escambia"}},{"type":"Polygon","arcs":[[-5364,-9854,-8071,-7323,-3849,-7818,-7392]],"id":"12083","properties":{"name":"Marion"}},{"type":"Polygon","arcs":[[-9833,-7778,-8750,-3625]],"id":"53003","properties":{"name":"Asotin"}},{"type":"Polygon","arcs":[[-9457,-9088,-8763,-8775,-9829,-6645]],"id":"29023","properties":{"name":"Butler"}},{"type":"Polygon","arcs":[[-7365,-7274,-9255,-6136,-9087,-6640]],"id":"29031","properties":{"name":"Cape Girardeau"}},{"type":"Polygon","arcs":[[-5552,-6774,-1636,-2708,-9822,-6829]],"id":"51105","properties":{"name":"Lee"}},{"type":"Polygon","arcs":[[-2990,-9463,-2405,-8039,-9419,9417,-9417,-8348]],"id":"01043","properties":{"name":"Cullman"}},{"type":"Polygon","arcs":[[-5138,-3511,-7486,-3413,-8393,-9810]],"id":"17029","properties":{"name":"Coles"}},{"type":"Polygon","arcs":[[-9525,-7594,-2567,-5923,-6624]],"id":"18015","properties":{"name":"Carroll"}},{"type":"MultiPolygon","arcs":[[[9860]],[[-8286,-7281,9861,-8164]]],"id":"22075","properties":{"name":"Plaquemines"}},{"type":"Polygon","arcs":[[-5804,-464,-9621,-919,-9312]],"id":"31091","properties":{"name":"Hooker"}},{"type":"Polygon","arcs":[[-5285,-9131,-9516,-9828,-4258,-4197]],"id":"38015","properties":{"name":"Burleigh"}},{"type":"Polygon","arcs":[[-5679,-3972,-7653,-8347,-7655]],"id":"54063","properties":{"name":"Monroe"}},{"type":"Polygon","arcs":[[-7584,-8317,-7764,-4994,-9630]],"id":"47021","properties":{"name":"Cheatham"}},{"type":"Polygon","arcs":[[-7135,-7866,-5882,-9474,-6972,-6820,-7417]],"id":"42015","properties":{"name":"Bradford"}},{"type":"Polygon","arcs":[[-7321,-9746,-4787,-4304,-8442]],"id":"21185","properties":{"name":"Oldham"}},{"type":"Polygon","arcs":[[-7253,-7710,-3836,-2262,-9390,-7861]],"id":"05101","properties":{"name":"Newton"}},{"type":"Polygon","arcs":[[-8818,-9737,-9280,-1641,-7637,-5621,-9698,-9036,-5278]],"id":"33009","properties":{"name":"Grafton"}},{"type":"Polygon","arcs":[[-6921,-873,9862,-5591,-9531,-9400]],"id":"55117","properties":{"name":"Sheboygan"}},{"type":"Polygon","arcs":[[-2962,-9576,-9843,-7904,-6778,-6725]],"id":"28129","properties":{"name":"Smith"}},{"type":"Polygon","arcs":[[-8360,-8446,-9824,9863,-8284,-8162,-9420,-16]],"id":"22103","properties":{"name":"St. Tammany"}},{"type":"Polygon","arcs":[[-9539,-9532,-5483,-7360,-9662,-9114,-9472,-9752]],"id":"24033","properties":{"name":"Prince George's"}},{"type":"Polygon","arcs":[[-1387,-3534,-9804,-1379,-9318,-8623,-347,-866,-9596]],"id":"27145","properties":{"name":"Stearns"}},{"type":"Polygon","arcs":[[-9498,-7577,-3660,-5786,-3658,-5787,-8251]],"id":"25017","properties":{"name":"Middlesex"}},{"type":"Polygon","arcs":[[-5697,-9811,-5871,-8773,-8145,-9740,-9808,-169]],"id":"42055","properties":{"name":"Franklin"}},{"type":"Polygon","arcs":[[-9558,-2805,-5937,-9855,-9529]],"id":"17145","properties":{"name":"Perry"}},{"type":"Polygon","arcs":[[-5461,-4432,-1305,-3888,-8081,-5033,-5459]],"id":"29073","properties":{"name":"Gasconade"}},{"type":"Polygon","arcs":[[-1216,-8679,-8254,-2847,-9577]],"id":"18161","properties":{"name":"Union"}},{"type":"Polygon","arcs":[[-8650,-8610,-8981,-9161,-2994,-3886]],"id":"29099","properties":{"name":"Jefferson"}},{"type":"Polygon","arcs":[[-9791,-5001,-9826,-9193,-3916,-9735]],"id":"40131","properties":{"name":"Rogers"}},{"type":"Polygon","arcs":[[-9853,-5950,-5184,-9609,-9729]],"id":"45017","properties":{"name":"Calhoun"}},{"type":"Polygon","arcs":[[-3961,-7568,-6959,-7977,-7738,-9024,9864]],"id":"54035","properties":{"name":"Jackson"}},{"type":"Polygon","arcs":[[9865]],"id":"69100","properties":{"name":"Rota"}},{"type":"Polygon","arcs":[[-9846,-1123,-2183,-5605,9866,-120]],"id":"72123","properties":{"name":"Salinas"}},{"type":"Polygon","arcs":[[-2788,-9653,-9010,-6140,-4633,-8958]],"id":"48239","properties":{"name":"Jackson"}},{"type":"MultiPolygon","arcs":[[[-641,-8600,9867]]],"id":"53035","properties":{"name":"Kitsap"}},{"type":"Polygon","arcs":[[-3039,-9771,-9179,9868,-7885]],"id":"12057","properties":{"name":"Hillsborough"}},{"type":"Polygon","arcs":[[-8408,-9396,-4867]],"id":"17043","properties":{"name":"DuPage"}},{"type":"Polygon","arcs":[[-9028,-4912,-8170,-7437,-8640,-9272]],"id":"34031","properties":{"name":"Passaic"}},{"type":"Polygon","arcs":[[-9650,-9813,-9480,-9772,-5015,-9845,-7039]],"id":"48181","properties":{"name":"Grayson"}},{"type":"Polygon","arcs":[[-4772,-9766,-8691,-9491]],"id":"13283","properties":{"name":"Treutlen"}},{"type":"Polygon","arcs":[[-457,-92,-9483,-2598,-9208,-3101,-2432]],"id":"28155","properties":{"name":"Webster"}},{"type":"Polygon","arcs":[[-9090,-921,-9622,-9527,-7405,-8631]],"id":"31101","properties":{"name":"Keith"}},{"type":"Polygon","arcs":[[-8000,-4522,-9617,-8002,-7987]],"id":"28001","properties":{"name":"Adams"}},{"type":"Polygon","arcs":[[-4120,-760,-369,-9857,-8072,-6510]],"id":"36069","properties":{"name":"Ontario"}},{"type":"Polygon","arcs":[[-3962,-9865,-9026,-6514,-3966]],"id":"54053","properties":{"name":"Mason"}},{"type":"Polygon","arcs":[[-729,-3831,-6393,-3086,-9]],"id":"04025","properties":{"name":"Yavapai"}}]},"states":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[-1237,-1236,-6098,-5228,-4927,-6287,4800,-3756,4801,-4921,7192,284,4797,5749,5747,3088,3084,-2005,10,11,0,1,2,724,725]]],"id":"04","properties":{"name":"Arizona"}},{"type":"MultiPolygon","arcs":[[[-8446,-9824,9863,8284,7279,9861,8164,8369,8491,8366,8492,4343,4832,3872,4068,4069,-3790,-3789,5559,-9152,6551,5736,5737,5738,5221,-1102,-1101,-9215,-9291,-5981,9849,8257,-8193,5488,5489,7925,7926,5613,-7510,-7590,-7589,3866,3867,-3697,-3696,-3704,-3703,-3702,7998,-4523,7999,7986,7987,7338,7330,-2513,-2512,12,13,-2161,8357,-7803,8358]],[[4833]],[[7277]],[[7278]],[[8364]],[[8489]],[[8490]],[[9860]]],"id":"22","properties":{"name":"Louisiana"}},{"type":"MultiPolygon","arcs":[[[9064,-6813,9065,-9110,7388,-9109,-2986,-2985,8438,3262,7776,7777,7773,8618,732,733,5300,5812,-1726,1246,1243,1244,-5359,-2348,-2347,4185,-6006,8363,3260,-2001,-2000,-1530,-1529,-1528,5796,-5526,5797,-6331,4078,4079,-4583,-4589,8460,-5354,4049,4050,3373,3374,8199]]],"id":"16","properties":{"name":"Idaho"}},{"type":"MultiPolygon","arcs":[[[5258,5256,2256,9707,7479,2903,4122,3585,4123,2905,2906,1761,-7917,-7833,5751,5752,5721,5722,-5703,-5702,-5701,-6318,-6317,-6987,-6986,-9313,-8103,5584,-4616,5585,-5390,-5389,-477,-476,-2806,6556,1362,1363,5763,5764,2762,-2735,-2734,5669,-3817,3179,3180,744,-102,1517,3671,3672,8081,5345,5346,-5693,7382,-8963,-1010,-1009,-1008,-37,-36,-6158,31,32,-6433,-4329,-6108]]],"id":"27","properties":{"name":"Minnesota"}},{"type":"MultiPolygon","arcs":[[[35,36,1007,1008,1009,1010,-754,7768,344,345,8805,8806,-9426,-7004,5972,-3765,-6955,-6954,-6239,719,-6238,-3740,-3739,-4016,-4542,5467,6878,6876,9506,492,2190,3263,1641,2738,6106,-5259,6107,4328,6432,-33,-32,6157]]],"id":"38","properties":{"name":"North Dakota"}},{"type":"MultiPolygon","arcs":[[[1423,-6278,-6240,6953,6954,3764,-5973,7003,9425,-8807,-8806,-346,-345,-7769,753,-1011,8962,-7383,5692,-5347,-5346,-8082,-3673,-3672,-1518,101,102,6111,6112,4969,-4779,-3638,4970,4971,5072,5073,6076,6077,4990,-9743,-7187,627,628,7019,3198,353,-8826,-2607,2558,2559,2560,4553,4554,4959,43,44,1427]]],"id":"46","properties":{"name":"South Dakota"}},{"type":"MultiPolygon","arcs":[[[-7846,-7864,7133,7134,7416,-6819,-6818,-8023,2924,2925,8860,8861,8932,-4885,8930,9485,7444,391,4118,757,9457,3710,6354,4517,7994,8766,-8327,8767,7723,7724,-9625,-6196,-8718,-8719,-5331,-5337,-5336,-9141,-8171,8167,7438,7439,9193,9043,3735,6351,3733,9044,8847,4512,4507,4508,-7434,-7433,-7432,8169,4911,4912,4913,-6855,-7848,-7847]],[[6348]],[[6349]],[[6350]],[[6352]],[[6355]],[[9126,-8837,9127,-7501]]],"id":"36","properties":{"name":"New York"}},{"type":"MultiPolygon","arcs":[[[51]],[[52]],[[53]],[[8793,2018,1446,8545,2087,9371,9203,9122,9375,2061,2074,2043,2069,762,2070,6389,4953,6391,4955,521,9520,1778,3593,2413,2809,2085,8544,1444,2019,9847,2016,8791,1429,1654,55,8542,3181,8543,57,1655,1431,8792,1433]],[[58]],[[59]],[[1434]],[[1436,8789]],[[1437]],[[1439]],[[1440]],[[1442,3206]],[[1652,3193]],[[2014]],[[2025]],[[2026]],[[2027]],[[2028]],[[2029]],[[2030]],[[2031]],[[2032]],[[2033]],[[2034]],[[2035]],[[2036]],[[2037]],[[2038]],[[2039]],[[2040]],[[2041]],[[2044]],[[2045]],[[2046]],[[2047]],[[2048]],[[2049]],[[2050]],[[2051]],[[2052]],[[2053]],[[2054]],[[2055]],[[2056]],[[2057]],[[2058]],[[2059]],[[2063]],[[2064]],[[2065]],[[2066]],[[2067]],[[2068]],[[2075]],[[2076]],[[2077]],[[2078]],[[2079]],[[2080]],[[2081]],[[2082]],[[3183]],[[3184]],[[3185]],[[3186]],[[3187]],[[3188]],[[3189]],[[3190]],[[3191]],[[3192]],[[3194,3204]],[[3205]],[[4956]],[[4957]],[[4958]],[[6387]],[[6388]],[[6390]],[[8538]],[[8539]],[[8540]],[[8541]],[[8790]],[[9204]],[[9324]],[[9325]],[[9326]],[[9327]],[[9328]],[[9329]],[[9330]],[[9331]],[[9332]],[[9333]],[[9334]],[[9335]],[[9336]],[[9337]],[[9338]],[[9339]],[[9340]],[[9341]],[[9342]],[[9343]],[[9344]],[[9345]],[[9346]],[[9347]],[[9348]],[[9349]],[[9350]],[[9351]],[[9352]],[[9353]],[[9354]],[[9355]],[[9356]],[[9357]],[[9358]],[[9359]],[[9360]],[[9361]],[[9362]],[[9363]],[[9364]],[[9365]],[[9366]],[[9367]],[[9368]],[[9369]],[[9370]],[[9372]],[[9373]],[[9374]],[[9519]],[[9521]]],"id":"02","properties":{"name":"Alaska"}},{"type":"MultiPolygon","arcs":[[[4004,-4639,-4449,4405,-4448,7958,7956,7957,4400,9724,7152,4041,4042,2134,2135,-8247,-7790,-7789,-7788,-7719,-7796,-7795,-7794,-7793,6526,-4551,-4550,-6051,-5945,-5944,-5943,8730,-9595,-6122,-6121,8523,-6022,-6021,-5518,-5517,-4907,-4906,9768,7213,4473,9696,4813,9322,-7605,5209,5210,6472,7394,7395,7126,7127,8908,-7613,-7612,-7880,7290,7291,2111,2112,847,848,7965,7966,7296,7292,9769,-8655,-8654,-8653,-8154,3578,-8153,-8528,-8527,-4028,-4027,-7628,3584,-7627,-9248,63,5801,-4640]]],"id":"13","properties":{"name":"Georgia"}},{"type":"MultiPolygon","arcs":[[[5659,7414,-3509,-3508,8394,-8554,3000,3001,-9058,-8436,5879,5873,5874,5875,9507,9838,-9717,9097,-7400,5305,-2799,2674,-1199,-1198,-3141,-6898,-6897,-1088,-1087,2198,-1905,-1904,8546,487,488,-2880,1213,1214,-8679,-8254,2847,-9174,-9296,4505,7417,-6861,-3122,-3127,7430,7319,7320,7321,4470,7822,-4060,-6826,4465,4876,-4285,-4692,-4691,-7277,-7276,-6491,-6490,4053,4054,4055,4056,7232,-5545,4882,-4836,4877,5662]]],"id":"18","properties":{"name":"Indiana"}},{"type":"MultiPolygon","arcs":[[[7300,9248,7350,8379,-3716,-3715,7468,3138,3139,3140,1197,1198,-2675,2798,-5306,7399,-9098,9716,9715,9298,9732,5842,1358,4850,1352,586,8308,9758,6279,2642,7462,8372,9451,9393,3681,8698,9000,3248,3669,8416,8495,482]],[[-5205,5496,5497,3686,3687,3688,3689,3683,9046,5405,9763,5407,4487,8941,5127,2269,7599,7602,7913,9682,1667,-205,203,-203,-202,4099]],[[7463]],[[7464]],[[7465]],[[7466]],[[7601]],[[9681]],[[9756]],[[9757]],[[9759]],[[9764]]],"id":"26","properties":{"name":"Michigan"}},{"type":"MultiPolygon","arcs":[[[-8298,-8299,-8301,-7247,-7246,336,337,-7240,-7245,7979,-8390,-8662,-8661,-8660,9562,8057,9822,9823,8445,-8359,7802,-8358,2160,-14,-13,2511,2512,-7331,-7339,-7988,-7987,-8000,4522,-7999,3701,3702,3703,3695,3696,-3868,-7588,-7587,3679,3674,3675,-7305,-7304,7517,7514,7355,-4560,-4559,7400,-8708,-7478,3420,-7477,-5487,-9290,6282,-4218,-4793,-4947,-4950,9031,9073,-8295]],[[8054]],[[8055]],[[9560]],[[9561]]],"id":"28","properties":{"name":"Mississippi"}},{"type":"MultiPolygon","arcs":[[[1086,1087,6896,6897,-3140,-3139,-7469,3714,3715,3716,9588,9835,8886,9059,9650,9824,-4888,-7760,-7759,-5898,-5897,-5894,-5893,-1014,7694,-8190,-6387,-8242,6906,-4934,-4937,-3295,-7524,-7526,8343,-7566,-7565,3959,3960,3961,3965,3966,-6513,8939,-6046,8940,8788,-5422,-5428,8588,-9715,-7156,-7155,8960,-7327,-7330,9171,9172,9173,-2848,8253,8678,-1215,-1214,2879,-489,-488,-8547,1903,1904,-2199]],[[9587]],[[9834]]],"id":"39","properties":{"name":"Ohio"}},{"type":"MultiPolygon","arcs":[[[8870,5856,7021,7974,9318,-7630,-4873,-4872,-4871,-5031,-5030,-5029,-8229,3792,3152,1718,509,1019,1020,6939,6940,-8578,190,191,-7496,-7495,-4145,-4144,5866,4022,4023,630,6093,6094,1219,1220,2618,2619,3402,-541,-540,-9156,511,9134,-6951,-6950,7042,7544,-3728,-3727,-4735,-4734,9174,7037,-9650,-9813,-9480,-9479,9230,-4527,-4526,-8241,5769,-3346,5770,5979,5980,9290,9214,1100,1101,-5222,-5739,-5738,-5737,-6552,9151,-5560,3788,3789,-4070,5428,4150,9698,4152,9114,9700,6902,9699,6904,6142,4634,3777,8719,9100,6501,7546,9385,7548,6503,9101,8721,3775,4635,6090,3779,4631,3781,6091,3783,8531,8722,9102,6505,7549,9386,8026,9270,3774,9007,9857,4372,9300]]],"id":"48","properties":{"name":"Texas"}},{"type":"MultiPolygon","arcs":[[[6944,8977,8706,9427,7770,6989,4348,8714,8712,2127,7094,9444,8968,8970,9820,9446,8376,9309,9713,6012,1755,9846,6848,141,8865,9445,4184,6879,8975,9859,7744,8696,2755,9450,3595,9277,2998,5603,9866,120,4173]],[[7800]],[[8715]],[[9396]],[[9858]]],"id":"72","properties":{"name":"Puerto Rico"}},{"type":"MultiPolygon","arcs":[[[8631,9626,9627,3912,3913,3914,9701,-5783,-5782,-5781,-7423,-2560,-2559,2606,8825,-354,-3199,-7020,-629,-628,7186,9742,-4991,-6078,-6077,-5074,-5073,-4972,-4971,-3637,-3636,8811,-9151,-7490,5431,-3644,-3643,-3642,-3732,-3731,-5269,4852,4853,-6221,8301,4200,4201,4202,4203,3399,3400,-7782,-3065,-3064,-8216,7428,7429,-7779,-4863,-4862,-2645,-2644,-176,-2980,-2979,4206,1603,-7287,-5243,-2954,156,152,-2950,7406]]],"id":"31","properties":{"name":"Nebraska"}},{"type":"MultiPolygon","arcs":[[[164,165,618,619,-6096,4040,-1235,-1234,-1233,-1232,-9198,1796,1790,-7671,-7670,-4367,-6003,8573,7263,470,471,-5446,8313,7145,-3914,-3913,-9628,-9627,-8632,-7407,2949,-153,-157,2953,2954,-5245,-3326,-1212,-1211,-5309,-5311,-5310,-2903,-7218,3363,3364,3365,3366,-4142,7221,7143,-5967]]],"id":"08","properties":{"name":"Colorado"}},{"type":"MultiPolygon","arcs":[[[-9802,9729,-3544,-3543,-5198,-5242,-5241,5474,-7386,998,999,5297,4480,9504,9505,-9182,-9181,9501,4486,5298,5638,9188,5476,7298,9730,9805,5652,9660,9111,4838,9472,9470,-9752,-9539,-9532,5483,5484,-3759,-3758,170,171,172,173,331,332,333,5398,5399,5400,5396,5397,328,329,330,167,168,9807,-9739,5228,5229]],[[5295,9503]],[[5639]],[[-9187,9502]]],"id":"24","properties":{"name":"Maryland"}},{"type":"MultiPolygon","arcs":[[[4861,4862,7778,-7430,-7429,8215,3063,3064,7781,-3401,-3400,-4204,-4203,-4202,4618,4619,4620,-6277,7678,8591,9004,-7473,-5886,-5890,-8310,4071,4072,6356,6357,9839,2543,-1610,2544,-4103,-1648,7377,7378,9093,-4999,-4998,9789,6260,6261,-7947,-7450,5417,5418,9667,-3059,737,738,-5908,7274,7165,7166,9637,9748,-6999,4106,-6998,7823,-3365,-3364,7217,2902,5309,5310,5308,1210,1211,3325,5244,-2955,5242,7286,-1604,-4207,2978,2979,175,2643,2644]]],"id":"20","properties":{"name":"Kansas"}},{"type":"MultiPolygon","arcs":[[[-5500,5291,5292,-5511,8479,9253,-5725,-6137,9254,7273,7267,-7364,-7363,-8982,8608,8609,8606,3246,3240,-5149,7223,7224,5176,9590,-7366,-5172,4533,4534,-3750,-3749,8920,-9034,-7559,-9402,9190,-4538,-4537,5387,-3723,-7235,8676,9773,9259,9260,4112,4113,4108,4109,4459,4460,986,987,-3165,9251,4856,-4169,-4168,9544,8405,-5875,-5874,-5880,8435,9057,-3002,-3001,8553,-8395,3507,3508,-7415,-5660,-5663,-4878,4835,-4883,5544,-7233,-4057,-4056,-4294,-4293,-6029,-5502]]],"id":"17","properties":{"name":"Illinois"}},{"type":"MultiPolygon","arcs":[[[201,202,203,204,205,8831,9841,7109,8820,7111,871,9862,5591,8797,8074,4166,4167,4168,-4857,-9252,3164,-988,-987,-4461,-4460,-4110,-4109,-4821,7984,7647,7648,4614,4615,-5585,8102,9312,6985,6986,6316,6317,5700,5701,5702,-5723,-5722,-5753,-5752,7832,7916,-1762,-2907,7915,4606,9438,7537,-3690,3688,-3688,-3687,-5498,-5497,5204,-4100]],[[4605]],[[8818]],[[8819]],[[9431]],[[9432]],[[9433]],[[9434]],[[9435]],[[9436]],[[9437]]],"id":"55","properties":{"name":"Wisconsin"}},{"type":"MultiPolygon","arcs":[[[9265,8474,9263,9066,9536,8472,9537,7310,8218,7930,8567,7932,7703,9830,4458,-3277,-2614,-2613,4033,4034,-7237,-4129,4127,-8132,-8131,979,2603,-8138,9138,-8428,1272,4030,-8427,9283,-4627,-2662,-2661,5043,5044,2003,-11,2004,-3085,-3089,-5748,5810,9284,7207,9787,7202,3018,9234,1300,9829]],[[3007]],[[3008]],[[3009]],[[3010]],[[7199]],[[7203]],[[9785]],[[9786]]],"id":"06","properties":{"name":"California"}},{"type":"MultiPolygon","arcs":[[[4778,-4970,-6113,-6112,-103,-745,-3181,-3180,3816,-5670,2733,2734,-2763,-5765,-5764,-1364,-1363,-6557,2805,475,476,5388,5389,-5586,-4615,-7649,-7648,-7985,4820,-4114,-4113,-9261,-9260,-9774,-8677,7234,3722,-5388,4536,4537,-9191,9401,-7558,2170,-1704,-1703,3213,4817,4818,710,711,5318,5319,1148,1149,-8497,-8536,7639,-6218,5270,-4853,5268,3730,3731,3641,3642,3643,-5432,7489,9150,-8812,3635,3636,3637]]],"id":"19","properties":{"name":"Iowa"}},{"type":"MultiPolygon","arcs":[[[-9730,9801,-5230,-5229,9738,-9808,-169,-168,-331,-330,-329,-5398,-5397,-5402,9415,2421,2422,2423,-4936,-8243,-6385,-8189,1018,1013,5892,5893,5896,5897,7758,7759,4887,4883,4884,-8933,-8862,-8861,-2926,-2925,8022,6817,6818,-7417,-7135,-7134,7863,7845,7846,7847,6854,-4914,6855,7457,-6366,5732,4984,-4566,4985,4986,-8399,9077,9078,6435,-5236,5196,5197,3542,3543]]],"id":"42","properties":{"name":"Pennsylvania"}},{"type":"MultiPolygon","arcs":[[[7571,9441,9799,-6879,-5468,4541,4015,3738,3739,6237,-720,6238,6239,6277,-1424,-5775,5118,5119,5120,-6846,-9224,-9223,-1496,-1495,-1505,5524,5525,-5797,1527,1528,1529,1999,2000,-3261,-8364,6005,-4186,2346,2347,5358,-1245,5357,2295,8777,9794,749,6301,9791,4572]]],"id":"30","properties":{"name":"Montana"}},{"type":"MultiPolygon","arcs":[[[-4073,-4072,8309,5889,5885,7472,-9005,-8592,-7679,6276,-4621,-4620,-4619,-4201,-8302,6220,-4854,-5271,6217,-7640,8535,8496,-1150,-1149,-5320,-5319,-712,-711,-4819,-4818,-3214,1702,1703,-2171,7557,7558,9033,-8921,3748,3749,-4535,-4534,5171,7365,-9591,-5177,-7225,-7224,5148,-3241,-3247,-8607,-8610,-8609,8981,7362,7363,-7268,-7274,-9255,6136,5724,5725,5726,5727,5728,-6043,8850,-6045,8851,3743,3744,3745,-4434,8765,8760,8761,-8775,-8774,-8482,-8485,-8157,-4444,-4443,-4442,-8220,9382,9387,-7708,-7251,1689,-7250,-4220,503,504,505,1651,1647,4102,-2545,1609,-2544,-9840,-6358,-6357]]],"id":"29","properties":{"name":"Missouri"}},{"type":"MultiPolygon","arcs":[[[-9143,-9147,-7966,-849,-848,-2113,-2112,-7292,-7291,7879,7611,7612,-8909,-7128,-7127,-7396,-7395,-6473,-5211,-5210,7604,7605,9376,8562,2496,8068,9774,9054,3211,1834,4808,9746,9644,8508,9641,8510,9645,8516,9788,7260,7227,7262,7229,8903,9179,9868,7885,3042,7883,3040,7209,7818,7393,1768,9723,7881,9391,7869,7877,2463,2874,316,7951,9489,-2700,9488,7950,313,314,2870,2871,-9144]],[[7261]],[[7866]],[[8511]],[[8512]],[[8513]],[[8517]],[[8518]],[[8519]],[[8520]]],"id":"12","properties":{"name":"Florida"}},{"type":"MultiPolygon","arcs":[[[5928,-6939,-6181,3482,3483,-7620,-6114,6040,6041,6042,-5729,-5728,-5727,-5726,-9254,-8480,5510,-5293,-5292,5499,5500,5501,6028,4292,4293,-4055,-4054,6489,6490,7275,7276,4690,4691,4284,-4877,-4466,6825,4059,-7823,-4471,-7322,-7321,-7320,-7431,3126,3121,6860,-7418,-4506,9295,-9173,-9172,7329,7326,-8961,7154,7155,9714,-8589,5427,5421,-8789,-8941,6045,6046,5323,5579,5580,5830,5831,5832,5833,-6771,5550,5551,6828,6829,3941,3942,-6498,-433,-432,4297,-7969,-5975,4825,3488,3489,8158,-5845,-5844,-7582,-7581,321,322,-9629,-6937]],[[6043,6044]]],"id":"21","properties":{"name":"Kentucky"}},{"type":"MultiPolygon","arcs":[[[3337,7343,3339,3653,7346,9684,5011,5993,993,994,995,996,5985,-1639,5986,9795,3690,327,746]],[[3332]],[[3333]],[[3334]],[[3335]],[[3650]],[[7344]],[[7345]]],"id":"23","properties":{"name":"Maine"}},{"type":"MultiPolygon","arcs":[[[357,358,4365,4366,7669,7670,-1791,-1797,9197,1231,1232,1233,1234,1235,1236,-726,-725,-3,-2,-4496,-4495,-4494,-4493,8502,8453,8506,8504,7036,-3374,-4051,-4050,5353,-8461,-4588,-8673]]],"id":"49","properties":{"name":"Utah"}},{"type":"MultiPolygon","arcs":[[[-2619,-1221,-1220,-6095,-6094,-631,-4024,-4023,-5867,-4143,-3366,-7824,6997,-4107,6998,-9749,-9638,-7167,-7166,-7275,5907,-739,-738,3058,-9668,-5419,-5418,7449,7946,-6262,-6261,-9790,4997,4998,-9094,-7379,-7378,-1652,-506,-505,-4224,-4223,-3351,7785,-7800,-9056,-9057,-4457,-7194,-7196,8239,-3347,-5770,8240,4525,4526,-9231,9478,9479,9812,9649,-7038,-9175,4733,4734,3726,3727,-7545,-7043,6949,6950,-9135,-512,9155,539,540,-3403,-2620]]],"id":"40","properties":{"name":"Oklahoma"}},{"type":"MultiPolygon","arcs":[[[-3942,-6830,9821,2707,-1635,-1634,-1633,-6375,-6156,-6374,4736,4737,4738,4739,4740,7578,-4710,-4714,-6586,-9676,6024,4979,4980,-5060,5599,6174,6175,-8245,-8246,5645,-2135,-4043,-4042,-7153,-9725,-4401,-7958,-7957,8996,8989,8990,-9282,-7812,1091,1092,-4214,-4213,-4219,-6283,9289,5486,7476,-3421,7477,8707,-7401,4558,4559,4560,5412,-4439,-4438,-4437,-4436,-4435,-3745,-3744,-8852,-6044,-8851,-6042,-6041,6113,7619,-3484,-3483,6180,6938,-5929,6936,9628,-323,-322,7580,7581,5843,5844,-8159,-3490,-3489,-4826,5974,7968,-4298,431,432,6497,-3943]]],"id":"47","properties":{"name":"Tennessee"}},{"type":"MultiPolygon","arcs":[[[-9696,-6248,-9574,8748,-3626,8749,-7777,-3263,-8439,2984,2985,9108,-7389,9109,-9066,-6812,4358,4359,4126,4128,7236,-4035,-4034,2612,2613,3276,3277,7643,7645,6129,8494,9705,6967,6965,4349,4350,4351,-5590,8260,9599,-5440,-5439,-5438,496,-5437,6057]]],"id":"41","properties":{"name":"Oregon"}},{"type":"MultiPolygon","arcs":[[[-5400,-5399,-334,-333,-332,-174,-173,-172,-3757,-6205,-8353,-8352,8017,-8354,-7085,-9440,7506,7507,-4599,2122,2123,3969,3970,-7653,-8347,-7655,5679,4930,4931,4932,2446,2447,-7064,-5831,-5581,-5580,-5324,-6047,-8940,6512,-3967,-3966,-3962,-3961,-3960,7564,7565,-8344,7525,7523,3294,4936,4933,-6907,8241,6386,8189,-7695,-1019,8188,6384,8242,4935,-2424,-2423,-2422,-9416,5401,-5401]]],"id":"54","properties":{"name":"West Virginia"}},{"type":"MultiPolygon","arcs":[[[-7518,7303,7304,-3676,-3675,-3680,7586,7587,-3867,7588,7589,7509,-5614,-7927,-7926,-5490,-5489,8192,-8258,-9850,-5980,-5771,3345,3346,-8240,7195,7193,4456,9056,9055,7799,-7786,3350,4222,4223,-504,4219,7249,-1690,7250,7707,-9388,-9383,8219,4441,4442,4443,8156,8484,8481,8773,8774,-8762,-8761,-8766,4433,-3746,4434,4435,4436,4437,4438,-5413,-4561,-7356,-7515]]],"id":"05","properties":{"name":"Arkansas"}},{"type":"MultiPolygon","arcs":[[[9169,9740,9168,6234,8666,4154,9833,8662,1724,-1247,1725,-5813,-5301,-734,-733,-8619,-7774,-7778,-8750,3625,-8749,9573,6247,9695,-6058,5436,-497,5437,5438,5439,-9600,-8261,5589,-4352,-4351,-4350,-6966,7907,7101,8560,8566,8556,8564,8598,9867,641,8600,9466,634,2480]],[[2481]],[[6231]],[[6235]],[[8602]],[[8603]],[[8604]],[[8605]],[[8665]],[[8667]],[[9741]]],"id":"53","properties":{"name":"Washington"}},{"type":"MultiPolygon","arcs":[[[3589,-6226,-7070,3823,-7069,8373,8454,8455,8456,6706,8095,8096,-8330,-8415,4714,4715,4716,9721,4718,9843,8109,7138,8034,6709,9811,6836,9099,7172,9722,7174,9855,6833,3952,6891,2450,9543,5493,8264,-6299,-6298,-5200,6867,5933,5852,-5082,-5081,-5708,-5707,-4895,-4894,3907,3908,6362,6363,4707,-1067,-1066,-1072,3946,3947,-7792,7718,7787,7788,7789,8246,-2136,-5646,8245,8244,-6176,-6175,-5600,5059,-4981,-4980,-6025,9675,6585,4713,4709,-7579,-4741,-4740,-4739,8802,7073,6872,6873,6874,3043,3044,812,813,-8016,-1283,-8015,-6227]],[[7170,9720]],[[9719]]],"id":"37","properties":{"name":"North Carolina"}},{"type":"MultiPolygon","arcs":[[[4598,-7508,-7507,9439,7084,8353,-8018,8351,8352,6204,3756,-171,3757,3758,-5485,6227,-9533,9538,9751,-9471,9752,9678,8984,1518,9760,5951,9792,1554,9793,9534,5104,7080,2283,8277,4570,9120,8092,7013,6243,5997,8327,8278,8222,9840,-4716,-4715,8414,8329,-8097,-8096,-6707,-8457,-8456,-8455,-8374,7068,-3824,7069,6225,-3590,6226,8014,1282,8015,-814,-813,-3045,-3044,-6875,-6874,-6873,-7074,-8803,-4738,-4737,6373,6155,6374,1632,1633,1634,-2708,-9822,-6829,-5552,-5551,6770,-5834,-5833,-5832,7063,-2448,-2447,-4933,-4932,-4931,-5680,7654,8346,7652,-3971,-3970,-2124,-2123]],[[9180,9181,9182,8029,9183]],[[9184]],[[9185,9186]]],"id":"51","properties":{"name":"Virginia"}},{"type":"MultiPolygon","arcs":[[[6002,-4366,-359,-358,8672,4587,4588,4582,-4080,-4079,6330,-5798,-5525,1504,1494,1495,9222,9223,6845,-5121,-5120,-5119,5774,-1428,-45,-44,-4960,-4555,-4554,-2561,7422,5780,5781,5782,-9702,-3915,-7146,-8314,5445,-472,-471,-7264,-8574]]],"id":"56","properties":{"name":"Wyoming"}},{"type":"MultiPolygon","arcs":[[[-314,-7951,-9489,2699,2700,8658,8659,8660,8661,8389,-7980,7244,7239,-338,-337,7245,7246,8300,8298,8297,8294,-9074,-9032,4949,4946,4792,4217,4218,4212,4213,-1093,-1092,7811,9281,-8991,-8990,-8997,-7959,4447,-4406,4448,4638,-4005,4639,-5802,-64,9247,7626,-3585,7627,4026,4027,8526,8527,8152,-3579,8153,8652,8653,8654,-9770,-7293,-7297,-7967,9146,9142,9143,-2872,-2871,-315]],[[8657]]],"id":"01","properties":{"name":"Alabama"}},{"type":"MultiPolygon","arcs":[[[-6363,-3909,-3908,4893,4894,5706,5707,5080,5081,-5853,-5934,-6868,5199,6297,6298,6299,5265,4891,6885,4975,4904,4905,4906,5516,5517,6020,6021,-8524,6120,6121,9594,-8731,5942,5943,5944,6050,4549,4550,-6527,7792,7793,7794,7795,7791,-3948,-3947,1071,1065,1066,-4708,-6364]]],"id":"45","properties":{"name":"South Carolina"}},{"type":"MultiPolygon","arcs":[[[1626,4919,4920,-4802,3755,-4801,6286,4926,5227,6097,-4041,6095,-620,-619,-166,-165,5966,-7144,-7222,4141,-3367,4142,4143,4144,7494,7495,-192,-191,8577,-6941,-6940,-1021,-1020,-510,-1719,-3153,-3793,8228,5028,5029,5030,4870,4871,4872,7629,7630]]],"id":"35","properties":{"name":"New Mexico"}},{"type":"MultiPolygon","arcs":[[[-996,-995,9080,-7575,-7574,9497,-8250,-8249,-3666,-4918,-4917,-5279,-5278,-8818,-9737,-9280,1636,1637,1638,-5986,-997]]],"id":"33","properties":{"name":"New Hampshire"}},{"type":"MultiPolygon","arcs":[[[2193]],[[2194]],[[2196,8716]]],"id":"60","properties":{"name":"American Samoa"}},{"type":"MultiPolygon","arcs":[[[9278,-1637,9279,9736,8817,5277,5278,4916,4917,-3665,-3664,-5332,8718,8717,6195,9624,-7725,-7724,-8768,8326,8324,5095,8725]]],"id":"50","properties":{"name":"Vermont"}},{"type":"MultiPolygon","arcs":[[[2660,2661,4626,-9284,8426,-4031,-1273,8427,-9139,8137,-2604,-980,8130,8131,-4128,-4127,-4360,-4359,6811,6812,-9065,-8200,-3375,-7037,-8505,-8507,-8454,-8503,4492,4493,4494,4495,-1,-12,-2004,-5045,-5044]]],"id":"32","properties":{"name":"Nevada"}},{"type":"MultiPolygon","arcs":[[[3553]],[[3554]],[[3555]],[[3557,7677]],[[3622]],[[8501]],[[8945]],[[8946]]],"id":"15","properties":{"name":"Hawaii"}},{"type":"MultiPolygon","arcs":[[[7573,7574,7575,3661,5787,4083,5784,4085,9798,9227,9797,4087,5540,-4131,5541,5542,5543,5788,-6494,-7681,8251,6185,6186,6187,5334,5335,5336,5330,5331,3663,3664,3665,8248,8249,-9498]],[[6063]],[[9225]]],"id":"25","properties":{"name":"Massachusetts"}},{"type":"MultiPolygon","arcs":[[[3975,7972]],[[5521]],[[7971]]],"id":"78","properties":{"name":"United States Virgin Islands"}},{"type":"MultiPolygon","arcs":[[[4130,4131]],[[4132]],[[4133]],[[6495,6437,9379,-7686,6439,6440,6496,6493,-5789,-5544,-5543,9848]],[[9378]]],"id":"44","properties":{"name":"Rhode Island"}},{"type":"MultiPolygon","arcs":[[[-6436,-9079,-9078,8398,-4987,-4986,4565,-4985,-5733,6365,-7458,-6856,-4913,-4912,-8170,7431,7432,7433,-4509,-4508,8835,8836,-9127,7500,7501,8937,7408,8196,8589,4501,9704,-5234,9702,-5238,-5237]]],"id":"34","properties":{"name":"New Jersey"}},{"type":"MultiPolygon","arcs":[[[5233,5234]],[[-999,7385,-5475,5240,5241,-5197,5235,5236,5237,5238,7383,9567,-9505,-4481,-5298,-1000]]],"id":"10","properties":{"name":"Delaware"}},{"type":"MultiPolygon","arcs":[[[5302,7312,8172,-7439,-8168,8170,9140,-5335,-6188,-6187,-6186,-8252,7680,-6497,-6441,-6440,7685,7686]]],"id":"09","properties":{"name":"Connecticut"}},{"type":"MultiPolygon","arcs":[[[6987]],[[8375]],[[8408]],[[8409]],[[8410]],[[8411]],[[8412]],[[9865]]],"id":"69","properties":{"name":"Commonwealth of the Northern Mariana Islands"}},{"type":"MultiPolygon","arcs":[[[8175]]],"id":"66","properties":{"name":"Guam"}},{"type":"MultiPolygon","arcs":[[[-5484,9531,9532,-6228]]],"id":"11","properties":{"name":"District of Columbia"}}]},"nation":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[1626,4919,7192,284,4797,5749,5810,9284,7207,9787,7202,3018,9234,1300,9829,9265,8474,9263,9066,9536,8472,9537,7310,8218,7930,8567,7932,7703,9830,4458,3277,7643,7645,6129,8494,9705,6967,7907,7101,8560,8566,8556,8564,8598,9867,641,8600,9466,634,2480,9169,9740,9168,6234,8666,4154,9833,8662,1724,1243,5357,2295,8777,9794,749,6301,9791,4572,7571,9441,9799,6876,9506,492,2190,3263,1641,2738,6106,5256,2256,9707,7479,2903,4122,3585,4123,2905,7915,4606,9438,7537,3683,9046,5405,9763,5407,4487,8941,5127,2269,7599,7602,7913,9682,1667,205,8831,9841,7109,8820,7111,871,9862,5591,8797,8074,4166,9544,8405,5875,9507,9838,9715,9298,9732,5842,1358,4850,1352,586,8308,9758,6279,2642,7462,8372,9451,9393,3681,8698,9000,3248,3669,8416,8495,482,7300,9248,7350,8379,3716,9588,9835,8886,9059,9650,9824,4883,8930,9485,7444,391,4118,757,9457,3710,6354,4517,7994,8766,8324,5095,8725,9278,1637,5986,9795,3690,327,746,3337,7343,3339,3653,7346,9684,5011,5993,993,9080,7575,3661,5787,4083,5784,4085,9798,9227,9797,4087,5540,4131,5541,9848,6495,6437,9379,7686,5302,7312,8172,7439,9193,9043,3735,6351,3733,9044,8847,4512,8835,9127,7501,8937,7408,8196,8589,4501,9704,5234,9702,5238,7383,9567,9505,9182,8029,9183,9501,4486,5298,5638,9188,5476,7298,9730,9805,5652,9660,9111,4838,9472,9752,9678,8984,1518,9760,5951,9792,1554,9793,9534,5104,7080,2283,8277,4570,9120,8092,7013,6243,5997,8327,8278,8222,9840,4716,9721,4718,9843,8109,7138,8034,6709,9811,6836,9099,7172,9722,7174,9855,6833,3952,6891,2450,9543,5493,8264,6299,5265,4891,6885,4975,4904,9768,7213,4473,9696,4813,9322,7605,9376,8562,2496,8068,9774,9054,3211,1834,4808,9746,9644,8508,9641,8510,9645,8516,9788,7260,7227,7262,7229,8903,9179,9868,7885,3042,7883,3040,7209,7818,7393,1768,9723,7881,9391,7869,7877,2463,2874,316,7951,9489,2700,8658,9562,8057,9822,9863,8284,7279,9861,8164,8369,8491,8366,8492,4343,4832,3872,4068,5428,4150,9698,4152,9114,9700,6902,9699,6904,6142,4634,3777,8719,9100,6501,7546,9385,7548,6503,9101,8721,3775,4635,6090,3779,4631,3781,6091,3783,8531,8722,9102,6505,7549,9386,8026,9270,3774,9007,9857,4372,9300,8870,5856,7021,7974,9318,7630],[5500]],[[4833]],[[7277]],[[7278]],[[8364]],[[8489]],[[8490]],[[9860]],[[6348]],[[6349]],[[6350]],[[6352]],[[6355]],[[51]],[[52]],[[53]],[[8793,2018,1446,8545,2087,9371,9203,9122,9375,2061,2074,2043,2069,762,2070,6389,4953,6391,4955,521,9520,1778,3593,2413,2809,2085,8544,1444,2019,9847,2016,8791,1429,1654,55,8542,3181,8543,57,1655,1431,8792,1433]],[[58]],[[59]],[[1434]],[[1436,8789]],[[1437]],[[1439]],[[1440]],[[1442,3206]],[[1652,3193]],[[2014]],[[2025]],[[2026]],[[2027]],[[2028]],[[2029]],[[2030]],[[2031]],[[2032]],[[2033]],[[2034]],[[2035]],[[2036]],[[2037]],[[2038]],[[2039]],[[2040]],[[2041]],[[2044]],[[2045]],[[2046]],[[2047]],[[2048]],[[2049]],[[2050]],[[2051]],[[2052]],[[2053]],[[2054]],[[2055]],[[2056]],[[2057]],[[2058]],[[2059]],[[2063]],[[2064]],[[2065]],[[2066]],[[2067]],[[2068]],[[2075]],[[2076]],[[2077]],[[2078]],[[2079]],[[2080]],[[2081]],[[2082]],[[3183]],[[3184]],[[3185]],[[3186]],[[3187]],[[3188]],[[3189]],[[3190]],[[3191]],[[3192]],[[3194,3204]],[[3205]],[[4956]],[[4957]],[[4958]],[[6387]],[[6388]],[[6390]],[[8538]],[[8539]],[[8540]],[[8541]],[[8790]],[[9204]],[[9324]],[[9325]],[[9326]],[[9327]],[[9328]],[[9329]],[[9330]],[[9331]],[[9332]],[[9333]],[[9334]],[[9335]],[[9336]],[[9337]],[[9338]],[[9339]],[[9340]],[[9341]],[[9342]],[[9343]],[[9344]],[[9345]],[[9346]],[[9347]],[[9348]],[[9349]],[[9350]],[[9351]],[[9352]],[[9353]],[[9354]],[[9355]],[[9356]],[[9357]],[[9358]],[[9359]],[[9360]],[[9361]],[[9362]],[[9363]],[[9364]],[[9365]],[[9366]],[[9367]],[[9368]],[[9369]],[[9370]],[[9372]],[[9373]],[[9374]],[[9519]],[[9521]],[[7463]],[[7464]],[[7465]],[[7466]],[[7601]],[[9681]],[[9756]],[[9757]],[[9759]],[[9764]],[[8054]],[[8055]],[[9560]],[[9561]],[[9587]],[[9834]],[[6944,8977,8706,9427,7770,6989,4348,8714,8712,2127,7094,9444,8968,8970,9820,9446,8376,9309,9713,6012,1755,9846,6848,141,8865,9445,4184,6879,8975,9859,7744,8696,2755,9450,3595,9277,2998,5603,9866,120,4173]],[[7800]],[[8715]],[[9396]],[[9858]],[[5295,9503]],[[5639]],[[9502,9185]],[[4605]],[[8818]],[[8819]],[[9431]],[[9432]],[[9433]],[[9434]],[[9435]],[[9436]],[[9437]],[[3007]],[[3008]],[[3009]],[[3010]],[[7199]],[[7203]],[[9785]],[[9786]],[[7261]],[[7866]],[[8511]],[[8512]],[[8513]],[[8517]],[[8518]],[[8519]],[[8520]],[[3332]],[[3333]],[[3334]],[[3335]],[[3650]],[[7344]],[[7345]],[[2481]],[[6231]],[[6235]],[[8602]],[[8603]],[[8604]],[[8605]],[[8665]],[[8667]],[[9741]],[[7170,9720]],[[9719]],[[9184]],[[8657]],[[2193]],[[2194]],[[2196,8716]],[[3553]],[[3554]],[[3555]],[[3557,7677]],[[3622]],[[8501]],[[8945]],[[8946]],[[6063]],[[9225]],[[3975,7972]],[[5521]],[[7971]],[[4132]],[[4133]],[[9378]],[[6987]],[[8375]],[[8408]],[[8409]],[[8410]],[[8411]],[[8412]],[[9865]],[[8175]]]}]}},"arcs":[[[18136,59828],[0,183]],[[18136,60011],[200,0],[121,0]],[[18457,60011],[101,0]],[[18558,60011],[2,-56],[-12,-70],[-10,-107]],[[18538,59778],[0,0]],[[18538,59778],[-2,-83]],[[18536,59695],[0,0]],[[18536,59695],[-6,-64],[5,-85],[-10,-51],[0,-50],[9,-35],[-6,-28],[6,-62],[-11,-64],[-16,-5],[-21,-74],[-20,-2],[-10,-33],[-22,-26],[-14,-1],[-29,-75],[-6,9],[-12,-27],[0,-35],[-9,-36],[-21,11],[-12,-57],[3,-76],[7,-27],[-5,-57],[7,-34],[-7,-74],[0,-340]],[[18336,58297],[0,-1409]],[[18336,56888],[-8,-27],[-48,17],[-14,-77],[-26,-38],[-17,35],[-28,-18],[-3,30],[-21,-2],[-30,12],[-15,46],[-14,5]],[[18112,56871],[-11,54],[-14,19],[-31,100],[-13,7],[2,58],[-26,239],[-23,63],[-7,69],[-16,57],[1,147]],[[17974,57684],[6,95],[-10,22],[21,43],[0,72],[-9,178],[-6,65],[-11,47],[-4,58],[6,36],[0,103],[-9,38],[3,39],[-7,31],[3,51],[-5,59],[4,56],[9,24],[-10,31],[-12,97],[4,43],[-7,80],[25,31],[9,29],[5,-14],[12,25],[17,-1],[2,-25],[24,19],[13,-3],[18,-71],[-2,-28],[21,-51],[24,11],[24,183],[5,15],[1,230],[-2,272],[0,254]],[[24679,53026],[5,0]],[[24684,53026],[56,0]],[[24740,53026],[0,-110],[9,-17],[15,-146],[2,-62]],[[24766,52691],[3,-76],[0,-332],[15,-59],[8,-89]],[[24792,52135],[-39,70],[-51,-21]],[[24702,52184],[-1,92],[-9,68],[-7,19],[-6,66],[0,190]],[[24679,52619],[0,407]],[[17985,67226],[61,1]],[[18046,67227],[184,0]],[[18230,67227],[0,-407],[-14,0],[0,-99],[-47,0]],[[18169,66721],[-32,0],[0,51],[-83,1],[-5,48],[-64,0]],[[17985,66821],[0,405]],[[22846,73017],[180,1]],[[23026,73018],[0,-178],[5,0],[0,-67]],[[23031,72773],[0,-135],[36,-1],[0,-101],[144,1],[0,101],[35,1],[0,101]],[[23246,72740],[36,-2]],[[23282,72738],[1,-303],[7,0],[0,-202]],[[23290,72233],[-143,-1]],[[23147,72232],[-219,0]],[[22928,72232],[-1,130],[-5,3],[-5,68]],[[22917,72433],[-7,36],[-6,77],[-8,17],[-11,101],[-3,58],[-11,34],[-5,121],[-8,22],[-12,118]],[[22690,71930],[71,-1]],[[22761,71929],[172,-1]],[[22933,71928],[1,-102]],[[22934,71826],[3,-40],[-1,-171],[11,-51],[6,11],[-6,-117],[-5,-17],[6,-112],[-5,-68],[2,-37]],[[22945,71224],[-2,-3],[-134,-1]],[[22809,71220],[-112,0]],[[22697,71220],[0,406],[-7,0],[0,304]],[[20921,68824],[34,9],[13,22],[12,-12],[6,20],[71,-1]],[[21057,68862],[-2,-405],[34,1],[0,-135]],[[21089,68323],[-168,0]],[[20921,68323],[0,46]],[[20921,68369],[0,455]],[[29114,66796],[24,-19],[30,-46],[46,12],[7,15]],[[29221,66758],[2,-46],[-13,-11],[9,-39],[24,-2],[1,20]],[[29244,66680],[5,-14],[-8,-115],[-14,-79],[4,-66],[-10,-86],[3,-14]],[[29224,66306],[3,-36],[-29,-25],[-9,21],[-18,-22]],[[29171,66244],[-49,81],[-26,109]],[[29096,66434],[23,126],[-10,145],[5,91]],[[12999,82714],[4,48],[9,-30],[-13,-18]],[[12979,82569],[2,29],[21,40],[21,-38],[-1,-22],[-24,-37],[-19,28]],[[12954,82690],[20,33],[17,52],[-5,-50],[-18,-75],[-14,40]],[[12982,82959],[22,19],[9,46],[25,1],[13,33],[7,54],[17,54],[27,-1]],[[13102,83165],[-2,-19],[71,-81],[-8,-61],[11,-57],[7,-119],[71,14],[33,-77],[82,-115],[23,-48]],[[13390,82602],[-5,-74],[18,-26],[11,-59],[-26,-77],[-42,-29],[-6,31],[-26,-57],[-22,-27],[19,-73],[-3,-67],[-31,4],[-32,82],[-23,5],[7,-32],[-47,-12],[-20,-89],[8,-28],[-4,-35],[-12,-9],[-20,-79],[19,-57],[-12,-55],[0,-66],[-28,8],[-7,-53],[-26,-27]],[[13080,81701],[-7,79],[-16,70],[21,-29],[7,75],[27,37],[12,147],[-8,102],[10,57],[6,-21],[12,42],[7,92],[-21,-11],[-4,-58],[-19,-30],[-21,-61],[13,-113],[-8,-42],[-33,3],[-12,-43],[3,-30],[-17,-14],[-7,34],[4,67],[-19,23],[-12,128],[-32,-17],[0,-48],[-28,118],[-3,123],[8,25],[25,1],[7,66],[13,49],[30,12],[16,-72],[7,63],[-15,168],[9,3],[30,-45],[4,-59],[11,-32],[6,23],[-9,77],[-22,35],[-19,48],[-3,53],[-11,13],[-12,-25],[-10,49],[-23,32],[-5,57],[10,37]],[[12850,82395],[7,53],[10,-24],[22,-97],[10,-68],[-13,-15],[-21,61],[-9,4],[-6,86]],[[12838,82543],[18,86],[21,30],[30,-20],[24,22],[28,-42],[4,-36],[-18,-53],[6,-82],[-16,-19],[-44,-22],[-23,65],[-24,29],[-6,42]],[[26122,56404],[49,-3],[0,8],[45,-2]],[[26216,56407],[4,0],[-1,-108]],[[26219,56299],[-3,1],[0,-114],[-16,-23],[-9,6],[-42,-56],[-13,1]],[[26136,56114],[-14,290]],[[26649,54717],[75,153]],[[26724,54870],[25,-187]],[[26749,54683],[-10,34],[-37,-129],[6,-20],[-17,-61]],[[26691,54507],[-42,151]],[[26649,54658],[0,59]],[[25761,62228],[0,102]],[[25761,62330],[102,-2]],[[25863,62328],[10,0],[2,-264]],[[25875,62064],[-10,-36],[0,-53]],[[25865,61975],[-104,-1]],[[25761,61974],[0,254]],[[26039,62491],[33,2],[35,73]],[[26107,62566],[-1,-329]],[[26106,62237],[-26,-1],[0,-34],[-10,0],[0,-34],[-10,0],[0,-34],[-20,-10]],[[26040,62124],[-14,19],[-18,-29]],[[26008,62114],[-1,304]],[[26007,62418],[0,71],[32,2]],[[26754,67376],[0,-51],[33,1],[1,-152]],[[26788,67174],[4,-303]],[[26792,66871],[-33,-6]],[[26759,66865],[-98,-9]],[[26661,66856],[-2,197],[0,202]],[[26659,67255],[0,11],[30,3],[0,101],[65,6]],[[25077,56605],[88,0]],[[25165,56605],[29,0]],[[25194,56605],[0,-306]],[[25194,56299],[-59,1],[0,-68],[-29,0],[0,-17]],[[25106,56215],[-44,-1]],[[25062,56214],[1,85],[14,1],[0,305]],[[26756,64659],[72,0],[7,4]],[[26835,64663],[29,-1]],[[26864,64662],[-1,-331]],[[26863,64331],[-36,1],[0,-9]],[[26827,64323],[-71,-2]],[[26756,64321],[0,338]],[[22851,67982],[67,0]],[[22918,67982],[121,2]],[[23039,67984],[0,-407]],[[23039,67577],[-40,0]],[[22999,67577],[-91,0]],[[22908,67577],[-57,-1]],[[22851,67576],[0,406]],[[22775,67577],[76,-1]],[[22908,67577],[0,-485]],[[22908,67092],[-66,0]],[[22842,67092],[0,101],[-66,-1]],[[22776,67192],[-1,385]],[[23272,52945],[51,149]],[[23323,53094],[0,-141],[15,-58],[-5,-35],[20,3]],[[23353,52863],[-9,-414]],[[23344,52449],[-1,5],[-66,1],[-64,141]],[[23213,52596],[-9,272]],[[23204,52868],[21,18],[19,37],[18,-21],[10,43]],[[31398,37874],[8,42],[-1,27]],[[31405,37943],[19,-7],[7,-24]],[[31431,37912],[-2,-46]],[[31429,37866],[-13,-44],[-18,52]],[[22383,68083],[133,3]],[[22516,68086],[2,-100]],[[22518,67986],[0,-317],[1,-94]],[[22519,67575],[-107,1]],[[22412,67576],[-25,0]],[[22387,67576],[-1,407],[-3,0],[0,100]],[[22462,48678],[81,-3]],[[22543,48675],[49,-1]],[[22592,48674],[20,-1],[0,-60]],[[22612,48613],[0,-498]],[[22612,48115],[-93,2]],[[22519,48117],[-29,1]],[[22490,48118],[2,316],[-14,-1],[0,102],[-7,0],[0,108],[-9,35]],[[31491,38138],[7,20],[7,88]],[[31505,38246],[7,11]],[[31512,38257],[6,-9]],[[31518,38248],[2,-92],[4,-22]],[[31524,38134],[-7,-47],[1,-26],[-9,-36]],[[31509,38025],[-4,41],[-8,24]],[[31497,38090],[-6,48]],[[31479,38421],[9,22]],[[31488,38443],[5,-39]],[[31493,38404],[-6,-16]],[[31487,38388],[-11,7]],[[31476,38395],[3,26]],[[31395,38326],[5,-1]],[[31400,38325],[13,1],[6,-32]],[[31419,38294],[3,-13]],[[31422,38281],[-4,-46]],[[31418,38235],[-3,-24],[-18,-18]],[[31397,38193],[-2,133]],[[21479,64015],[0,300]],[[21479,64315],[197,0]],[[21676,64315],[1,-404]],[[21677,63911],[-198,-2]],[[21479,63909],[0,106]],[[31360,38347],[12,18]],[[31372,38365],[3,-63]],[[31375,38302],[-16,-15]],[[31359,38287],[1,60]],[[20190,60480],[53,-5],[125,2]],[[20368,60477],[0,-51],[83,0]],[[20451,60426],[-3,-16],[9,-62],[-7,-49],[5,-78],[-6,-53],[3,-37],[-9,-72],[15,-53]],[[20458,60006],[-80,-1]],[[20378,60005],[-131,-2]],[[20247,60003],[-32,171],[-2,63],[-23,40],[0,203]],[[28085,63180],[68,0]],[[28153,63180],[175,-3]],[[28328,63177],[-11,-42],[5,-9],[-8,-42],[-14,-24],[-8,-92],[-7,-39],[2,-44],[-17,-169]],[[28270,62716],[-12,-3]],[[28258,62713],[-10,14],[6,63],[-5,43],[-9,12],[-3,54],[-8,15]],[[28229,62914],[0,41],[-10,-18],[-8,51],[16,15],[0,37],[-14,-4],[-17,23],[-18,-20],[-4,21]],[[28174,63060],[-21,68],[-24,20],[-23,-89],[-19,20]],[[28087,63079],[-2,46],[8,20],[-8,35]],[[22001,63504],[154,1]],[[22155,63505],[0,-506]],[[22155,62999],[-149,0]],[[22006,62999],[-5,-1]],[[22001,62998],[0,506]],[[25266,64221],[63,1],[-4,438]],[[25325,64660],[32,4]],[[25357,64664],[4,-593],[51,-3]],[[25412,64068],[1,-100]],[[25413,63968],[-147,-1]],[[25266,63967],[0,254]],[[21203,57896],[244,0]],[[21447,57896],[0,-508]],[[21447,57388],[-100,0]],[[21347,57388],[-144,0]],[[21203,57388],[0,241]],[[21203,57629],[0,267]],[[26389,54346],[0,38]],[[26389,54384],[69,-9],[0,83]],[[26458,54458],[13,-3],[0,-49],[14,7],[16,-24]],[[26501,54389],[-2,-21],[12,-67],[8,-75]],[[26519,54226],[11,-97],[0,-44]],[[26530,54085],[-116,8],[0,-50]],[[26414,54043],[-29,109]],[[26385,54152],[4,194]],[[25276,70164],[102,-11],[0,79]],[[25378,70232],[17,17],[9,-43],[24,-4],[9,-38]],[[25437,70164],[10,-13],[8,-44],[-12,-13],[14,-75],[-8,-69],[3,-47],[-6,-40],[-13,-34],[3,-38],[-7,-24],[7,-47]],[[25436,69720],[0,0]],[[25436,69720],[27,10],[16,47],[11,-25],[2,-34],[-11,-48],[-15,-118],[2,-29],[13,-28],[8,-47],[19,-14]],[[25508,69434],[-10,-58],[-1,-80],[-37,-13]],[[25460,69283],[1,29],[-51,3],[0,32],[-50,3],[1,101],[-20,2],[1,100],[-34,5],[1,201],[-34,3]],[[25275,69762],[1,402]],[[16021,59887],[4,21],[13,-15]],[[16038,59893],[6,-2],[20,100],[10,6],[10,-32],[56,0]],[[16140,59965],[-5,-40],[10,-14],[13,-57],[3,-34],[58,-98],[4,-14]],[[16223,59708],[88,-293],[2,-186],[-18,-15],[-5,-56]],[[16290,59158],[-19,50],[8,-59],[3,-65],[-15,-1],[-29,104],[-17,19],[-8,-39],[-9,20],[-7,-30]],[[16197,59157],[0,0]],[[16197,59157],[-7,9],[-1,41],[-10,51],[-43,144],[-3,33],[-20,-4],[5,31],[-9,30],[2,65],[-12,53],[-29,34],[-5,32],[9,12],[-7,46],[-12,10],[-21,77],[-7,10],[-6,56]],[[26268,55577],[3,37],[98,-2]],[[26369,55612],[1,-44]],[[26370,55568],[-6,-72],[-5,-131],[3,-45]],[[26362,55320],[0,-67],[5,-36]],[[26367,55217],[-17,-43],[-37,-1]],[[26313,55173],[-14,29],[-30,4]],[[26269,55206],[-1,113],[0,258]],[[24125,66578],[132,0]],[[24257,66578],[0,-202],[5,0],[0,-199]],[[24262,66177],[-65,0]],[[24197,66177],[-66,-1]],[[24131,66176],[0,201],[-6,0],[0,101]],[[24125,66478],[0,100]],[[23731,67292],[132,0]],[[23863,67292],[-1,-404]],[[23862,66888],[-131,-1]],[[23731,66887],[0,405]],[[23031,72773],[215,1],[0,-34]],[[22527,65226],[53,0],[0,17],[17,1],[0,17],[43,1],[16,17]],[[22656,65279],[35,1],[0,-154]],[[22691,65126],[-1,-99],[-53,-2],[0,-17],[-44,0],[-13,-34],[-49,0],[1,151],[-4,0]],[[22528,65125],[-1,0]],[[22527,65125],[0,101]],[[28588,64149],[27,-69]],[[28615,64080],[80,-210]],[[28695,63870],[-43,-70],[-36,-20],[-36,-48]],[[28580,63732],[-17,166],[-14,157],[39,94]],[[21322,56315],[148,-1]],[[21470,56314],[3,-506]],[[21473,55808],[-145,-2]],[[21328,55806],[-6,509]],[[22159,55304],[39,0]],[[22198,55304],[105,0]],[[22303,55304],[0,-515]],[[22303,54789],[-5,0]],[[22298,54789],[-139,0]],[[22159,54789],[0,515]],[[21698,53674],[112,7],[1,166],[10,-11]],[[21821,53836],[164,-3]],[[21985,53833],[1,-129],[34,-2]],[[22020,53702],[-1,-574]],[[22019,53128],[-160,-1]],[[21859,53127],[-1,509],[-160,5]],[[21698,53641],[0,33]],[[22631,55859],[120,0]],[[22751,55859],[29,-4]],[[22780,55855],[-3,-287],[-1,-224]],[[22776,55344],[-41,3]],[[22735,55347],[-105,9]],[[22630,55356],[1,503]],[[22784,68386],[67,1]],[[22851,68387],[67,0]],[[22918,68387],[0,-405]],[[22851,67982],[-67,1]],[[22784,67983],[0,403]],[[22142,69204],[28,-1]],[[22170,69203],[73,0]],[[22243,69203],[-1,-407],[4,0],[0,-410]],[[22246,68386],[-77,-3]],[[22169,68383],[-24,29]],[[22145,68412],[0,385],[-4,0]],[[22141,68797],[1,407]],[[21907,56884],[28,-1]],[[21935,56883],[117,-2]],[[22052,56881],[0,-102]],[[22052,56779],[-4,21],[-10,-14],[-1,-459]],[[22037,56327],[-131,0]],[[21906,56327],[1,557]],[[19139,53877],[0,-136],[-2,0],[-1,-168],[1,-160]],[[19137,53413],[-172,0],[-81,109]],[[18884,53522],[0,111],[57,0],[0,238],[86,1],[0,6],[112,-1]],[[24101,64854],[65,1]],[[24166,64855],[64,1]],[[24230,64856],[0,-306]],[[24230,64550],[-128,-1]],[[24102,64549],[-1,305]],[[24456,65668],[0,102]],[[24456,65770],[131,-2]],[[24587,65768],[0,-203]],[[24587,65565],[-1,-203]],[[24586,65362],[-130,1]],[[24456,65363],[0,305]],[[19834,71964],[0,0]],[[19834,71964],[-1,97],[14,61],[0,54]],[[19847,72176],[13,6],[0,67],[13,38],[15,2],[9,28],[10,67],[22,2],[2,19],[25,-6],[6,-22],[16,2],[7,77]],[[19985,72456],[37,-13],[9,-22],[38,9],[29,-7],[36,17],[5,69],[36,-3],[6,44],[16,21],[14,-6],[11,65],[15,44],[-6,29],[12,34],[-3,30],[15,28],[8,-29]],[[20263,72766],[16,-1],[1,-103],[27,0],[0,-395],[-11,0],[0,-204],[36,1],[0,-202],[23,0]],[[20355,71862],[0,-374]],[[20355,71488],[0,-16]],[[20355,71472],[-176,-1],[0,17],[-209,-1],[0,-9],[-118,0]],[[19852,71478],[-13,31],[8,106],[7,36],[-11,53],[-10,95],[9,47],[-11,99],[3,19]],[[23706,61217],[3,207]],[[23709,61424],[137,-15],[9,7]],[[23855,61416],[8,-10],[-2,-146]],[[23861,61260],[-2,-186],[-16,1],[-2,-101]],[[23841,60974],[-15,2]],[[23826,60976],[-51,6],[1,68],[-72,9]],[[23704,61059],[2,158]],[[25733,53023],[27,-3]],[[25760,53020],[83,-1]],[[25843,53019],[-2,-716]],[[25841,52303],[-66,20],[-46,-11]],[[25729,52312],[4,711]],[[25579,59593],[22,502]],[[25601,60095],[2,-37],[37,5],[18,18]],[[25658,60081],[-2,-486]],[[25656,59595],[-15,-1]],[[25641,59594],[-62,-1]],[[31021,70115],[-68,-47]],[[30953,70068],[-59,-41],[1,-8],[-43,-29],[-6,6],[2,341],[-3,200],[0,395],[-72,0],[0,15],[-35,1]],[[30738,70948],[0,205],[-251,2]],[[30487,71155],[-84,0]],[[30403,71155],[7,141],[215,890],[13,-3],[27,-38],[11,4],[-3,-58],[1,-141],[4,-18],[37,-73],[25,43],[26,30],[28,2],[11,52],[30,11],[25,-12],[0,62],[16,23],[25,-6],[23,-36],[4,-32],[33,-68],[36,-132],[0,-15],[28,-51],[0,-545],[3,-693],[-1,-71],[9,-30],[-15,-39],[14,-70],[-15,-34],[1,-133]],[[27922,63180],[33,0]],[[27955,63180],[119,0]],[[28074,63180],[11,0]],[[28087,63079],[-13,-8],[-1,-24],[-14,11],[11,-32],[-13,1],[7,-49],[-14,-38]],[[28050,62940],[-28,4],[-7,18],[-18,-1]],[[27997,62961],[-19,34],[-2,26],[-13,18],[13,14],[-13,10],[-38,-158],[-11,-54],[-31,40]],[[27883,62891],[39,289]],[[25139,54862],[147,1]],[[25286,54863],[-9,-314]],[[25277,54549],[-3,-94]],[[25274,54455],[-134,-4]],[[25140,54451],[-1,411]],[[22328,70417],[1,399]],[[22329,70816],[139,0],[131,0]],[[22599,70816],[7,0]],[[22606,70816],[0,-403]],[[22606,70413],[-113,0],[-87,3]],[[22406,70416],[-78,1]],[[23510,69703],[106,0],[0,-51],[34,1]],[[23650,69653],[1,-354]],[[23651,69299],[-68,0],[0,-101]],[[23583,69198],[-72,-1]],[[23511,69197],[-1,506]],[[21463,67449],[246,-1]],[[21709,67448],[0,-456]],[[21709,66992],[-111,-2],[-127,4]],[[21471,66994],[0,151],[-8,0],[0,304]],[[18808,64433],[8,14],[16,-36],[10,13],[0,32],[11,46],[-14,71],[1,40],[-15,5],[-4,41],[24,81],[17,22],[18,6],[4,50],[28,16]],[[18912,64834],[9,-1],[37,75],[15,52]],[[18973,64960],[0,-296],[93,-2],[133,-1],[52,3]],[[19251,64664],[14,0]],[[19265,64664],[0,-214]],[[19265,64450],[-28,-7],[-17,15],[-37,15],[-13,-12],[-9,-40],[-31,-11],[-11,-21],[-23,-5],[-5,14],[-9,-34],[-26,9],[-15,-41],[-25,16],[-2,-56]],[[19014,64292],[-9,3],[-12,-102],[-14,-18],[-15,20],[-11,-5],[-9,-49],[-32,45],[-17,42],[-11,7],[-8,72],[-22,-55],[-4,-52],[-18,12]],[[18832,64212],[-14,67],[3,37],[-16,87],[3,30]],[[28469,67010],[70,13]],[[28539,67023],[-7,-81],[6,-135],[-7,-57],[3,-89],[13,-50],[5,-55]],[[28552,66556],[13,-66],[9,-19],[-31,-4]],[[28543,66467],[-55,-6]],[[28488,66461],[0,142],[-11,61],[-3,57],[-7,-1]],[[28467,66720],[-3,108],[5,19],[0,163]],[[23020,61275],[46,-1],[0,101]],[[23066,61375],[111,-2]],[[23177,61373],[0,-152]],[[23177,61221],[-1,-356]],[[23176,60865],[0,-152]],[[23176,60713],[-157,4]],[[23019,60717],[1,558]],[[21859,61989],[123,-2]],[[21982,61987],[1,-507]],[[21983,61480],[-123,2]],[[21860,61482],[-1,507]],[[25940,67539],[1,405]],[[25941,67944],[132,0]],[[26073,67944],[0,-404]],[[26073,67540],[0,-203]],[[26073,67337],[-63,-1]],[[26010,67336],[-69,0],[-1,203]],[[22531,64315],[126,1]],[[22657,64316],[0,-405]],[[22657,63911],[-125,-1]],[[22532,63910],[-1,0]],[[22531,63910],[0,405]],[[28051,67427],[26,6],[38,-9],[36,8],[31,-12]],[[28182,67420],[-1,-270]],[[28181,67150],[-130,-5]],[[28051,67145],[0,282]],[[22527,73042],[108,0]],[[22635,73042],[0,-203],[6,0],[0,-405]],[[22641,72434],[-29,0]],[[22612,72434],[-143,0]],[[22469,72434],[-7,0],[0,202]],[[22462,72636],[0,80]],[[22462,72716],[0,124],[28,0],[1,202],[36,0]],[[22431,59038],[119,0]],[[22550,59038],[1,-377],[-1,-135]],[[22550,58526],[-29,0],[0,-202]],[[22521,58324],[-86,0]],[[22435,58324],[-3,0],[0,304]],[[22432,58628],[-1,101],[0,309]],[[22010,54799],[144,-3],[0,-7]],[[22154,54789],[0,-504]],[[22154,54285],[-23,1]],[[22131,54286],[-122,0]],[[22009,54286],[1,513]],[[21599,57895],[149,-1]],[[21748,57894],[-1,-505]],[[21747,57389],[-106,-1]],[[21641,57388],[-44,1]],[[21597,57389],[2,506]],[[21599,58911],[149,0]],[[21748,58911],[0,-501]],[[21748,58410],[-149,-1]],[[21599,58409],[0,502]],[[21859,53127],[-76,-5]],[[21783,53122],[-87,-4]],[[21696,53118],[2,523]],[[24949,68445],[104,-3]],[[25053,68442],[94,-1]],[[25147,68441],[0,-302]],[[25147,68139],[-78,0]],[[25069,68139],[-120,-1]],[[24949,68138],[0,307]],[[26290,59549],[2,0]],[[26292,59549],[65,-9],[79,-5]],[[26436,59535],[3,-67],[-10,-35],[-12,6],[-6,-50],[4,-91],[2,-120],[-13,-29],[1,-50]],[[26405,59099],[-9,-49],[-10,-13]],[[26386,59037],[-9,47],[-27,38],[-1,35],[-11,4],[-25,117]],[[26313,59278],[12,28],[-9,47],[-11,104]],[[26305,59457],[-15,92]],[[24405,70670],[87,1],[87,-4]],[[24579,70667],[0,-202],[69,1]],[[24648,70466],[0,-400]],[[24648,70066],[-240,-1]],[[24408,70065],[-1,402],[-2,1],[0,202]],[[26205,67942],[135,2]],[[26340,67944],[-1,-407]],[[26339,67537],[-66,0]],[[26273,67537],[-67,0]],[[26206,67537],[-1,405]],[[25021,52921],[56,0]],[[25077,52921],[71,1]],[[25148,52922],[0,-204]],[[25148,52718],[0,-68]],[[25148,52650],[-99,0],[-2,-34],[-27,0]],[[25020,52616],[1,55],[0,250]],[[24974,56707],[73,-1]],[[25047,56706],[1,-102],[29,1]],[[25062,56214],[0,-19],[-88,-1]],[[24974,56194],[0,170]],[[24974,56364],[0,343]],[[21815,65933],[161,-2]],[[21976,65931],[1,-403]],[[21977,65528],[-124,0]],[[21853,65528],[-37,1]],[[21816,65529],[-1,404]],[[21724,54800],[0,4]],[[21724,54804],[143,-2]],[[21867,54802],[-1,-512]],[[21866,54290],[-44,1]],[[21822,54291],[-101,1]],[[21721,54292],[3,508]],[[20140,64670],[150,-4]],[[20290,64666],[36,-2]],[[20326,64664],[1,-70],[14,-42],[3,-37],[22,-76],[28,-189],[10,-88],[1,-59],[11,6],[4,-40]],[[20420,64069],[-12,-20],[-1,-69],[-12,-29],[-4,-42],[-19,26],[-31,-47],[-8,14],[-18,-21],[-8,38],[-10,-2],[-1,-30],[-16,32],[-10,-14],[-18,15],[-10,58],[-11,-49],[-22,14],[-4,58],[-7,20]],[[20198,64021],[-1,75],[-13,77],[-1,47],[10,94],[-1,47],[10,88],[-15,86],[-12,-17],[-13,40],[-6,-11],[-13,32],[-7,53],[4,38]],[[24126,67577],[29,0]],[[24155,67577],[103,1]],[[24258,67578],[-1,-335]],[[24257,67243],[-132,0]],[[24125,67243],[1,334]],[[26754,67376],[4,0],[-4,405]],[[26754,67781],[143,18]],[[26897,67799],[2,-117],[17,-178],[4,-247],[6,-66]],[[26926,67191],[-138,-17]],[[26169,63944],[3,0],[2,219]],[[26174,64163],[37,1]],[[26211,64164],[74,5]],[[26285,64169],[0,-256]],[[26285,63913],[0,-49]],[[26285,63864],[-116,-4]],[[26169,63860],[0,84]],[[21488,73755],[0,223]],[[21488,73978],[146,1]],[[21634,73979],[0,-326],[13,0],[0,-202],[109,-1]],[[21756,73450],[0,-101]],[[21756,73349],[-218,1],[0,303],[-50,1],[0,101]],[[16297,70181],[17,11],[30,-61],[22,6],[34,26],[20,5],[11,42],[28,27],[20,32]],[[16479,70269],[-2,-344],[0,-302],[35,-1],[-1,-102],[35,0],[-1,-102],[-8,-16]],[[16537,69402],[-44,-2],[-152,2]],[[16341,69402],[-3,18]],[[16338,69420],[13,39],[-6,87],[-14,16],[-7,55],[8,175],[12,18],[-2,58],[12,19],[10,-18],[-2,36],[15,-5],[-12,74],[0,41],[-9,36],[-7,-7],[-6,39],[-17,20],[-29,78]],[[23550,59739],[153,-22]],[[23703,59717],[1,-11],[-3,-279]],[[23701,59427],[-151,1]],[[23550,59428],[0,196]],[[23550,59624],[0,115]],[[21199,55806],[129,0]],[[21328,55806],[0,-500]],[[21328,55306],[-131,1]],[[21197,55307],[2,350],[0,149]],[[21935,57388],[116,-1]],[[22051,57387],[1,-216]],[[22052,57171],[0,-290]],[[21935,56883],[0,505]],[[26257,56263],[7,-7],[43,16],[0,21]],[[26307,56293],[28,-2],[13,-71]],[[26348,56220],[-21,-70],[-1,-24],[-27,-38],[-16,-66]],[[26283,56022],[-27,0],[1,241]],[[4612,90593],[59,-1],[0,-100],[53,0],[0,-101],[53,0],[0,-101],[319,0]],[[5096,90290],[-24,-15],[0,-117],[-15,0],[0,-403],[-14,0],[0,-403],[36,0],[0,-303],[107,0]],[[5186,89049],[18,-89],[41,-27],[19,13],[18,-26],[-4,-29],[-41,10],[-31,-22],[-38,-46],[-49,-25],[-27,-29],[-44,-70],[-27,-63],[-90,-36],[-42,-41],[-27,-4],[-57,-58],[-31,-4],[-32,24],[-56,24],[-20,-22],[-21,6],[2,45],[-11,16],[-59,-23],[-10,7],[-30,-57],[-56,-16],[-30,-36],[-34,8],[-18,21],[-20,-14],[-16,-34],[5,-28],[-17,-9],[2,-54],[-37,-22],[-36,36],[-58,6],[-4,-57],[9,-23],[-2,-70],[16,6],[1,-44],[-27,-21],[-29,-76],[-22,28],[-8,-35],[5,-45],[18,-9],[-2,-61],[-24,-41],[-42,-17],[-38,-37],[-21,3],[-4,42],[-50,4],[-54,-40],[-3,18],[-35,-50]],[[3906,87856],[-19,62],[22,49],[27,-6],[19,23],[0,45],[-17,-21],[-30,32],[-16,54],[2,23],[-20,7],[-13,35],[-10,-14],[-12,-99],[-14,-6],[-38,16],[-10,21],[-10,66],[1,129],[-11,19],[-43,10],[-18,37],[-10,98],[42,44],[6,38],[-17,46],[-30,31],[-45,-27],[0,-46],[-21,23],[-9,88],[8,147],[6,11],[-2,-107],[92,47],[0,19],[-35,20],[-20,28],[-24,82],[2,18],[36,19],[55,-8],[33,25],[-29,134],[-4,46],[3,84],[21,77],[101,278],[4,29],[27,77],[29,61],[5,70],[18,67],[21,34],[19,-4],[9,23],[-11,115],[26,188],[18,70],[38,61],[-18,24],[4,22],[58,133],[60,46],[48,11],[42,-45],[43,-11],[32,-84],[24,-6],[6,-26],[54,-88],[73,24],[61,124],[4,47],[44,29],[19,49]],[[23781,65263],[97,-5],[8,-18],[24,-2]],[[23910,65238],[0,-384]],[[23910,64854],[-64,0]],[[23846,64854],[-65,1]],[[23781,64855],[0,408]],[[22435,57513],[147,0]],[[22582,57513],[1,-202]],[[22583,57311],[-14,0],[0,-203]],[[22569,57108],[-29,1],[0,-51],[-14,-17],[-59,0],[0,-33],[-29,0],[-14,-17]],[[22424,56991],[0,118],[-46,0],[0,101]],[[22378,57210],[0,304],[57,-1]],[[22051,58174],[118,-1],[0,102],[59,0]],[[22228,58275],[0,-51]],[[22228,58224],[1,-406]],[[22229,57818],[-13,-2]],[[22216,57816],[-9,-7],[-96,9],[0,-101],[-29,1]],[[22082,57718],[-31,0]],[[22051,57718],[0,177]],[[22051,57895],[0,279]],[[22246,68386],[104,2]],[[22350,68388],[0,-305]],[[22350,68083],[-120,-1]],[[22230,68082],[1,71],[-24,60],[-20,10],[-13,43],[5,68],[-10,49]],[[22245,52444],[95,-2]],[[22340,52442],[103,2]],[[22443,52444],[1,-420]],[[22444,52024],[-92,-1]],[[22352,52023],[-106,-5],[-1,178]],[[22245,52196],[0,248]],[[21761,56325],[145,2]],[[21906,56327],[1,-510]],[[21907,55817],[-145,0]],[[21762,55817],[-1,508]],[[22219,50280],[166,8]],[[22385,50288],[0,-1]],[[22385,50287],[0,-518],[-1,-168]],[[22384,49601],[-163,-32],[-1,203]],[[22220,49772],[-1,56],[0,452]],[[27676,62607],[35,46],[49,-63],[6,-25]],[[27766,62565],[5,-18],[45,36],[5,-24],[-12,-48],[-6,-72],[16,-15],[-12,-121],[-5,-6]],[[27802,62297],[-14,11],[-28,2],[-77,72],[3,46],[-14,45]],[[27672,62473],[-4,18],[8,116]],[[15783,64879],[293,1]],[[16076,64880],[32,1]],[[16108,64881],[0,-324],[3,0],[-2,-536]],[[16109,64021],[-47,0]],[[16062,64021],[-42,-12],[-11,21],[-13,-19],[-33,7],[-25,-32],[-19,13],[-23,-16]],[[15896,63983],[0,0]],[[15896,63983],[-12,-17],[-59,-31],[-32,5],[-17,17],[-37,-72],[-27,42],[-29,-25],[-5,6],[-12,-48],[-5,6]],[[15661,63866],[0,0]],[[15661,63866],[-14,0]],[[15647,63866],[0,0]],[[15647,63866],[-22,-29]],[[15625,63837],[-1,56],[13,38],[8,59],[26,33],[16,69],[12,7],[9,50],[19,19],[-3,65],[-12,69],[13,44],[-4,20],[17,51],[-2,48],[17,74],[1,95],[21,57],[4,77],[14,12],[4,72],[-14,27]],[[25197,61015],[0,51]],[[25197,61066],[93,1]],[[25290,61067],[0,-359]],[[25290,60708],[-11,1]],[[25279,60709],[-82,-1]],[[25197,60708],[0,307]],[[25886,68762],[116,-6]],[[26002,68756],[-1,-406]],[[26001,68350],[-62,3]],[[25939,68353],[-95,14]],[[25844,68367],[12,82],[21,112],[9,201]],[[22268,65933],[128,1]],[[22396,65934],[1,-405]],[[22397,65529],[-127,0]],[[22270,65529],[-2,0]],[[22268,65529],[0,404]],[[21981,65528],[69,-2],[88,2]],[[22138,65528],[130,1]],[[22270,65529],[0,-403],[3,-1]],[[22273,65125],[-1,-404]],[[22272,64721],[-61,0]],[[22211,64721],[-223,0]],[[21988,64721],[-3,0],[0,404],[-4,0]],[[21981,65125],[0,403]],[[22650,68386],[134,0]],[[22784,67983],[-67,0]],[[22717,67983],[-67,1]],[[22650,67984],[0,402]],[[22613,69501],[136,-2]],[[22749,69499],[1,-404]],[[22750,69095],[0,-303]],[[22750,68792],[-101,1]],[[22649,68793],[-1,101],[-34,0]],[[22614,68894],[1,304],[-2,0],[0,303]],[[24547,58095],[0,105]],[[24547,58200],[31,-3],[89,8],[0,-9],[30,1]],[[24697,58197],[-1,-307],[1,-40]],[[24697,57850],[-61,5],[-89,0]],[[24547,57855],[0,240]],[[19966,60502],[99,1]],[[20065,60503],[0,-36],[116,5],[0,9]],[[20181,60481],[9,-1]],[[20247,60003],[-110,-1],[-2,9],[-152,-1]],[[19983,60010],[-17,0]],[[19966,60010],[0,492]],[[27188,48409],[82,-1],[0,103],[28,1],[-1,102],[63,1]],[[27360,48615],[9,-42],[11,-23],[-4,-228]],[[27376,48322],[-16,-221],[-173,1]],[[27187,48102],[1,307]],[[22181,67577],[66,-1]],[[22247,67576],[-4,-36],[15,-36],[25,-3],[27,-133],[25,-72],[23,-14],[6,-23],[0,-55],[6,-29],[23,-10],[23,-81],[20,-3],[26,-40],[7,-48]],[[22469,66993],[-210,0]],[[22259,66993],[-78,0]],[[22181,66993],[0,584]],[[21599,59428],[150,0]],[[21749,59428],[-1,-515]],[[21748,58913],[0,-2]],[[21599,58911],[0,517]],[[15728,71772],[16,37],[0,33],[13,16],[8,79],[10,53],[-2,30],[25,-58],[10,25],[-10,14],[7,23]],[[15805,72024],[23,-73],[54,-1],[9,-56],[18,-43],[13,1],[17,-40],[9,18],[17,-12],[14,35],[30,-28],[7,12],[20,-46],[28,-5],[12,-36],[18,3]],[[16094,71753],[2,-36],[-9,-67],[-11,-22],[-3,-66],[-19,-59],[8,-12],[11,-92]],[[16073,71399],[-84,0],[-21,-62],[-27,12],[-7,17],[-24,-15],[-45,24]],[[15865,71375],[-19,5],[-10,26],[1,45],[-41,28],[-11,18],[-1,44],[-19,33],[-1,38],[-20,14],[-10,42],[-10,82],[4,22]],[[15698,72062],[0,59]],[[15698,72121],[71,0]],[[15769,72121],[3,-32],[-10,-57],[7,-49],[-15,-79],[-27,78],[8,96],[-16,-42],[-6,-63],[30,-83],[-10,-16],[1,-48],[-11,-26],[-16,46],[-20,105],[12,37],[-1,74]],[[26272,55950],[64,-1],[3,-10]],[[26339,55939],[-5,-74],[11,-94],[15,-26],[10,-91]],[[26370,55654],[-1,-42]],[[26268,55577],[0,38],[-21,1]],[[26247,55616],[-21,234]],[[26226,55850],[8,36],[13,-23],[8,37],[15,29],[2,21]],[[26638,56479],[10,25],[39,61]],[[26687,56565],[28,-48]],[[26715,56517],[-4,-66],[9,-44],[-10,-66]],[[26710,56341],[-13,8],[-27,84],[-24,5],[-8,41]],[[25882,63076],[83,6]],[[25965,63082],[-1,-297],[1,-42]],[[25965,62743],[-37,-4]],[[25928,62739],[-47,-3]],[[25881,62736],[1,340]],[[22783,61884],[123,0]],[[22906,61884],[0,-101],[31,0]],[[22937,61783],[0,-203],[-5,0],[-1,-306]],[[22931,61274],[-87,3]],[[22844,61277],[0,101],[-61,-1]],[[22783,61377],[0,507]],[[23858,70178],[104,-5]],[[23962,70173],[0,-200],[33,-1],[1,-170]],[[23996,69802],[-21,3],[-116,1]],[[23859,69806],[0,167]],[[23859,69973],[-1,205]],[[22525,66339],[129,1]],[[22654,66340],[0,-405]],[[22654,65935],[1,-202]],[[22655,65733],[-129,-1]],[[22526,65732],[0,194],[-2,8]],[[22524,65934],[1,405]],[[27018,64741],[1,85],[26,0],[1,73],[27,0],[1,88],[26,0]],[[27100,64987],[54,2]],[[27154,64989],[-1,-336]],[[27153,64653],[-123,4]],[[27030,64657],[-12,0],[0,84]],[[26061,58301],[14,2]],[[26075,58303],[27,16],[10,24]],[[26112,58343],[-3,-31],[9,-57],[24,-87],[25,-73]],[[26167,58095],[-5,-41],[-40,-200]],[[26122,57854],[-4,88],[-12,46],[-31,53],[-1,13]],[[26074,58054],[15,45],[6,56],[-14,30],[0,64],[-20,52]],[[21448,58404],[151,0]],[[21599,58404],[0,-509]],[[21599,57895],[-152,1]],[[21447,57896],[1,508]],[[22809,53352],[133,282]],[[22942,53634],[57,-351]],[[22999,53283],[-65,-134]],[[22934,53149],[0,6],[-67,-145]],[[22867,53010],[-58,342]],[[22612,72434],[1,-8],[-1,-395],[7,0],[0,-100]],[[22619,71931],[-141,0]],[[22478,71931],[0,100],[-9,0]],[[22469,72031],[0,304]],[[22469,72335],[0,99]],[[22519,67575],[57,0]],[[22576,67575],[1,-16],[1,-335]],[[22578,67224],[-159,205],[-8,-3],[1,150]],[[22479,53822],[86,184],[-15,88]],[[22550,54094],[57,117]],[[22607,54211],[66,-402]],[[22673,53809],[-115,-243]],[[22558,53566],[-25,-55]],[[22533,53511],[-54,311]],[[23846,64548],[128,0]],[[23974,64548],[0,-366]],[[23974,64182],[-77,-4]],[[23897,64178],[-51,0]],[[23846,64178],[0,370]],[[20924,71117],[68,-1],[0,104],[53,0]],[[21045,71220],[106,0]],[[21151,71220],[84,0]],[[21235,71220],[1,-405]],[[21236,70815],[-20,-1]],[[21216,70814],[-101,-1],[-191,0]],[[20924,70813],[0,304]],[[21985,54286],[24,0]],[[22131,54286],[-3,-589]],[[22128,53697],[-108,5]],[[21985,53833],[0,453]],[[18558,60011],[331,1]],[[18889,60012],[167,2]],[[19056,60014],[0,-3189]],[[19056,56825],[-11,53],[-16,-51],[-14,43],[-14,18],[-20,53],[-22,39],[-14,-25],[-1,22],[-16,17],[-11,52],[-17,-30],[-12,16],[-13,-15],[-5,-60],[-5,81],[-8,-43],[-24,11],[22,45],[-23,16]],[[18832,57067],[0,385],[-62,1],[0,207],[-9,-5],[-147,-4],[0,204],[-30,1],[1,130],[-9,-26],[-29,6],[-33,79],[-17,-6],[-11,19],[-42,35],[-8,47],[-31,70],[-17,29],[-8,33],[-24,27],[-20,-2]],[[17303,72077],[64,0],[0,17],[21,6],[0,-17],[30,0],[0,34],[12,17],[71,-1]],[[17501,72133],[0,-456]],[[17501,71677],[-35,0],[0,17],[-105,-5],[-17,53],[-14,-13],[-9,26],[3,30],[-20,14]],[[17304,71799],[-1,154]],[[17303,71953],[0,124]],[[22326,60558],[153,1]],[[22479,60559],[0,-101],[32,0]],[[22511,60458],[0,-450]],[[22511,60008],[-55,1]],[[22456,60009],[-127,1]],[[22329,60010],[0,448],[-3,0]],[[22326,60458],[0,100]],[[23039,67984],[108,-1]],[[23147,67983],[4,0]],[[23151,67983],[0,-406]],[[23151,67577],[-112,0]],[[30951,69617],[32,18],[-5,99],[-25,334]],[[31021,70115],[23,-21],[3,20],[10,-57],[19,-28],[30,-23],[14,19],[8,-62],[1,-56],[-13,8],[-11,-22],[7,-68],[16,-63],[-9,-73],[-10,-41],[23,-116],[0,-23],[18,-40],[13,28],[1,46],[18,-30],[19,-3],[13,-56],[6,-51],[-8,-14],[10,-32],[12,-98],[15,-38],[1,-118],[-12,-50],[-10,2],[-4,-32],[-32,-113],[-24,-25],[4,-22],[-15,-8],[6,42],[-4,85],[-27,-30],[12,-58],[-12,-43],[-11,13],[-13,-58],[-13,18],[-10,-12],[2,-35],[16,-40],[-22,-57],[-13,46],[-6,57],[-13,-10],[-3,-38],[-8,3],[-7,59],[-7,-62],[-9,-14],[-8,-74],[-7,19],[-6,-48],[-4,42],[-12,-18]],[[30978,68642],[-7,68],[-9,135],[6,3],[-6,99],[-5,-3],[-20,308],[34,20],[-11,218],[-9,127]],[[18872,73071],[38,0],[0,808],[1,97]],[[18911,73976],[147,2]],[[19058,73978],[0,-99],[-4,-808]],[[19054,73071],[-20,0],[0,-101],[-162,-1]],[[18872,72969],[0,102]],[[22614,70412],[209,0]],[[22823,70412],[0,-439]],[[22823,69973],[-38,0],[-2,34],[-169,1]],[[22614,70008],[0,404]],[[28354,67318],[31,0],[43,12],[21,-19],[23,-1],[14,25],[30,20],[20,40]],[[28536,67395],[6,-307],[-3,-65]],[[28469,67010],[-47,-1],[-1,32],[-66,-6]],[[28355,67035],[-1,283]],[[6173,85487],[189,0],[0,-313],[-263,0]],[[6099,85174],[50,106],[4,57],[19,93],[1,57]],[[27050,48612],[0,152]],[[27050,48764],[137,2]],[[27187,48766],[1,-357]],[[27188,48409],[-117,2],[-21,-4]],[[27050,48407],[0,205]],[[26217,56630],[1,137],[5,0],[1,155],[5,0],[-1,53]],[[26228,56975],[15,-10],[0,18],[61,-3],[0,19],[23,0]],[[26327,56999],[0,-216],[-2,-29],[0,-145]],[[26325,56609],[-22,2]],[[26303,56611],[-51,3]],[[26252,56614],[-35,1],[0,15]],[[23937,66074],[64,0]],[[24001,66074],[65,1]],[[24066,66075],[0,-404]],[[24066,65671],[-129,0]],[[23937,65671],[0,403]],[[22171,61073],[0,203]],[[22171,61276],[61,0],[0,-101],[91,0]],[[22323,61175],[0,-204],[3,0]],[[22326,60971],[0,-107]],[[22326,60864],[-152,2]],[[22174,60866],[-3,207]],[[26405,68749],[135,2]],[[26540,68751],[1,-404]],[[26541,68347],[-79,0]],[[26462,68347],[-56,-1]],[[26406,68346],[-1,403]],[[22401,65126],[126,-1]],[[22528,65125],[0,-404]],[[22528,64721],[-121,0]],[[22407,64721],[-7,0]],[[22400,64721],[1,405]],[[26542,64862],[128,-1]],[[26670,64861],[0,-204]],[[26670,64657],[-10,0],[0,-50],[-6,0],[0,-51],[-10,0],[0,-101]],[[26644,64455],[-102,2]],[[26542,64457],[0,117]],[[26542,64574],[0,288]],[[26302,61585],[33,91],[12,49]],[[26347,61725],[6,23]],[[26353,61748],[9,-69],[19,-70],[7,-86],[-3,-19]],[[26385,61504],[12,-88]],[[26397,61416],[-61,-91],[-2,-15]],[[26334,61310],[-7,33],[1,37],[-16,-4],[-5,26]],[[26307,61402],[-5,183]],[[26112,58343],[44,179],[3,52]],[[26159,58574],[60,7],[3,-30],[28,26],[3,-8]],[[26253,58569],[-36,-167],[-17,-55],[2,-43],[-13,-50],[9,-18],[-6,-20]],[[26192,58216],[-9,-3],[-16,-118]],[[27615,59478],[88,-1]],[[27703,59477],[56,-1]],[[27759,59476],[-5,-339]],[[27754,59137],[-1,-10]],[[27753,59127],[-140,19]],[[27613,59146],[2,332]],[[21469,56883],[25,0]],[[21494,56883],[121,-1]],[[21615,56882],[0,-561]],[[21615,56321],[-145,-7]],[[21470,56314],[-1,569]],[[27916,61255],[12,36],[11,-5],[-2,-64],[-14,-11],[-7,44]],[[19952,67578],[118,-1]],[[20070,67577],[0,-9],[185,0],[103,2]],[[20358,67570],[1,-25],[0,-808],[-1,-1],[0,-401]],[[20358,66335],[-153,-3],[-250,4]],[[19955,66336],[-5,0],[-1,405],[12,-1],[0,404],[-4,0],[0,401],[-5,33]],[[23353,52863],[4,44],[17,10],[2,-46],[12,-49]],[[23388,52822],[19,-50],[-4,-79],[10,-25],[2,-40],[14,26],[13,-86],[-6,-32],[18,-3],[36,-53],[-9,-23],[5,-20]],[[23486,52437],[2,-8],[-90,-165]],[[23398,52264],[-17,-30],[6,33],[-9,36],[-22,39],[-12,107]],[[25053,68952],[173,-3],[-1,-103]],[[25225,68846],[-36,0],[-1,-404]],[[25188,68442],[-41,-1]],[[25053,68442],[0,510]],[[27250,63752],[1,105],[17,-1],[1,151]],[[27269,64007],[92,-10]],[[27361,63997],[21,-2],[-5,-307]],[[27377,63688],[-94,16],[-1,-3]],[[27282,63701],[-32,2],[0,49]],[[26265,52709],[7,52],[17,34],[9,109],[1,170],[6,33]],[[26305,53107],[24,-2],[0,14],[28,-1]],[[26357,53118],[10,-1]],[[26367,53117],[37,1]],[[26404,53118],[-1,-453]],[[26403,52665],[-135,25]],[[26268,52690],[-3,19]],[[24104,52422],[38,-1]],[[24142,52421],[70,0],[0,-51],[19,1],[0,-102],[9,-59]],[[24240,52210],[-9,-34],[0,-33],[-21,-44],[1,-21],[-11,-44]],[[24200,52034],[-25,-95],[-13,-20],[-23,35],[-14,43],[-19,-28]],[[24106,51969],[-1,49],[10,56],[-10,56],[2,128],[-3,45],[10,48],[-10,71]],[[23719,69298],[68,-1]],[[23787,69297],[0,-101],[68,1],[1,-102]],[[23856,69095],[-22,-25],[-9,-52],[4,-35],[-14,-15],[-8,-30],[-20,-34]],[[23787,68904],[0,39],[-33,0],[0,51],[-34,0]],[[23720,68994],[-1,304]],[[25198,61320],[1,153]],[[25199,61473],[92,-1]],[[25291,61472],[-1,-404]],[[25290,61068],[0,-1]],[[25197,61066],[1,254]],[[23373,69803],[34,0]],[[23407,69803],[103,1],[0,-101]],[[23511,69197],[-136,-1]],[[23375,69196],[0,304]],[[23375,69500],[-2,101],[0,202]],[[25382,68439],[43,0],[1,101],[33,0]],[[25459,68540],[63,0]],[[25522,68540],[0,-40],[8,-61],[-2,-71],[-12,-41],[-23,-46],[-3,-62],[-8,-37],[-13,-149]],[[25469,68033],[-86,0]],[[25383,68033],[-1,102],[0,304]],[[25713,54146],[114,3]],[[25827,54149],[0,-307],[-1,-53],[-14,0],[0,-151]],[[25812,53638],[-56,-2]],[[25756,53636],[-38,1],[-8,25],[-11,100],[0,141]],[[25699,53903],[0,90]],[[25699,53993],[-1,153],[15,0]],[[26560,55508],[75,46]],[[26635,55554],[33,16]],[[26668,55570],[4,-93],[16,-209]],[[26688,55268],[-14,-32]],[[26674,55236],[-30,-62]],[[26644,55174],[-24,50],[-16,0],[-11,33],[-4,42]],[[26589,55299],[-10,129],[-19,80]],[[23862,66888],[132,-1]],[[23994,66887],[0,-408]],[[23994,66479],[-132,1]],[[23862,66480],[0,408]],[[26048,65276],[128,3]],[[26176,65279],[1,-305]],[[26177,64974],[-33,0]],[[26144,64974],[-64,3],[1,33],[-33,0]],[[26048,65010],[0,165]],[[26048,65175],[0,101]],[[21664,63000],[181,0]],[[21845,63000],[5,0]],[[21850,63000],[0,-506]],[[21850,62494],[-25,0]],[[21825,62494],[-162,2]],[[21663,62496],[1,504]],[[26206,68350],[65,-3]],[[26271,68347],[68,-1]],[[26339,68346],[1,-402]],[[26205,67942],[1,408]],[[26273,69158],[132,-4]],[[26405,69154],[0,-405]],[[26405,68749],[-28,4],[-105,1]],[[26272,68754],[1,404]],[[23981,60494],[0,84],[61,-4]],[[24042,60574],[46,-3]],[[24088,60571],[-1,-254],[4,0],[-2,-229]],[[24089,60088],[-61,5]],[[24028,60093],[0,17],[-45,4]],[[23983,60114],[1,211],[-4,0],[1,169]],[[21498,65531],[156,1]],[[21654,65532],[5,0]],[[21659,65532],[0,-405]],[[21659,65127],[-161,-1]],[[21498,65126],[0,405]],[[22656,64869],[17,71],[30,82],[17,14],[0,18]],[[22720,65054],[21,34],[20,8],[23,32]],[[22784,65128],[0,-407]],[[22784,64721],[-127,0]],[[22657,64721],[-1,148]],[[22749,69499],[75,1]],[[22824,69500],[95,-2],[1,-202]],[[22920,69296],[-1,-201]],[[22919,69095],[-169,0]],[[22384,49601],[131,0]],[[22515,49601],[28,0]],[[22543,49601],[0,-926]],[[22462,48678],[1,91],[-19,18],[-58,-5]],[[22386,48782],[-2,819]],[[21448,58911],[151,0]],[[21599,58409],[0,-5]],[[21448,58404],[0,9]],[[21448,58413],[0,498]],[[21435,54799],[2,0]],[[21437,54799],[143,3]],[[21580,54802],[-1,-510]],[[21579,54292],[-23,-1]],[[21556,54291],[-121,0]],[[21435,54291],[0,508]],[[26858,63910],[28,-6],[1,239],[5,0]],[[26892,64143],[69,1],[11,5]],[[26972,64149],[33,15]],[[27005,64164],[11,6],[-2,-136]],[[27014,64034],[-3,-253]],[[27011,63781],[-78,8],[0,22],[-76,14]],[[26857,63825],[1,85]],[[31366,38241],[0,-65],[9,-49],[-3,-44]],[[31372,38083],[-1,-12]],[[31371,38071],[-1,-1]],[[31370,38070],[-11,24],[-16,-16]],[[31343,38078],[6,102],[6,-9],[2,53],[9,17]],[[22906,53851],[59,124]],[[22965,53975],[62,-22]],[[23027,53953],[72,-446]],[[23099,53507],[-24,-46],[1,-19]],[[23076,53442],[-77,-159]],[[22942,53634],[-36,217]],[[24389,66580],[132,3]],[[24521,66583],[1,-408]],[[24522,66175],[-65,1]],[[24457,66176],[-65,0]],[[24392,66176],[0,201],[-3,0],[0,203]],[[22784,64721],[128,-1]],[[22912,64720],[0,-405],[-1,0]],[[22911,64315],[-127,1]],[[22784,64316],[0,405]],[[22020,50798],[194,6]],[[22214,50804],[2,-524]],[[22216,50280],[-197,8]],[[22019,50288],[1,510]],[[16198,63083],[16,37],[5,81],[17,41],[16,-38],[7,-39],[10,11],[20,-48],[12,33],[137,1]],[[16438,63162],[36,2],[4,16]],[[16478,63180],[0,-323]],[[16478,62857],[-139,1],[-9,20],[-6,59],[-9,11],[-25,-6],[-18,-66],[-16,-28],[-16,-4]],[[16240,62844],[0,0]],[[16240,62844],[-6,-5]],[[16234,62839],[0,0]],[[16234,62839],[-33,-20],[-7,-25]],[[16194,62794],[-3,143],[-7,27],[9,25],[5,94]],[[25004,66413],[10,0]],[[25014,66413],[118,-6]],[[25132,66407],[0,-399]],[[25132,66008],[-65,-2],[0,63],[-62,-3]],[[25005,66066],[-1,347]],[[30134,67917],[8,-8],[20,25],[29,9]],[[30191,67943],[5,-26],[19,15],[12,-20],[3,-38],[-4,-63],[22,-16],[9,30],[25,-82],[-10,-42],[39,-83]],[[30311,67618],[-9,-45],[6,-67],[-8,-43],[-10,-15],[3,-33],[-14,-24],[-14,4],[-10,-25],[-11,-98],[5,-19],[-14,-80],[1,-22],[-14,-74],[-9,-13]],[[30213,67064],[-32,74]],[[30181,67138],[-3,76],[6,42],[-41,128],[-9,53],[8,101],[-1,87]],[[30141,67625],[-3,34],[-4,258]],[[28752,62244],[2,67],[14,49],[12,62],[3,43],[25,40]],[[28808,62505],[7,-364]],[[28815,62141],[4,-227]],[[28819,61914],[-15,59],[-10,-11],[-11,32],[-30,-35]],[[28753,61959],[-20,64],[14,59],[19,38],[-14,84],[0,40]],[[26407,69554],[33,0]],[[26440,69554],[102,4]],[[26542,69558],[0,-199],[-3,-1],[1,-202]],[[26540,69156],[-135,-2]],[[26405,69154],[2,400]],[[22945,71224],[2,-4]],[[22947,71220],[9,-55],[4,-119],[5,-49],[20,-98],[13,-27],[1,-129],[11,-188],[-5,-43]],[[23005,70512],[3,-100]],[[23008,70412],[-185,0]],[[22823,70412],[0,66],[-9,6],[1,332],[-6,0]],[[22809,70816],[0,404]],[[27478,64246],[0,248]],[[27478,64494],[101,4]],[[27579,64498],[3,-210]],[[27582,64288],[1,-71],[-10,-5],[-50,-153]],[[27523,64059],[-45,-1]],[[27478,64058],[0,188]],[[21199,55806],[1,212]],[[21200,56018],[2,296]],[[21202,56314],[120,1]],[[26339,68346],[67,0]],[[26462,68347],[0,-192]],[[26462,68155],[0,-199]],[[26462,67956],[-55,3],[-1,-17],[-66,2]],[[21018,63200],[1,304]],[[21019,63504],[65,0],[0,406],[1,101]],[[21085,64011],[22,-1],[169,3]],[[21276,64013],[0,-102],[-3,1],[0,-406],[-3,0],[0,-506]],[[21270,63000],[-98,-3]],[[21172,62997],[-154,1]],[[21018,62998],[0,202]],[[24257,66578],[132,2]],[[24392,66176],[-65,3]],[[24327,66179],[-65,-2]],[[23599,66582],[131,-1]],[[23730,66581],[1,-101]],[[23731,66480],[-1,-100],[12,0],[0,-305]],[[23742,66075],[-65,0]],[[23677,66075],[-65,-1]],[[23612,66074],[0,308],[-13,0],[0,99]],[[23599,66481],[0,101]],[[21988,61074],[183,-1]],[[22174,60866],[1,-311]],[[22175,60555],[-61,0],[-93,8]],[[22021,60563],[-30,1]],[[21991,60564],[0,409],[-3,0],[0,101]],[[26540,69156],[0,-405]],[[25027,55275],[84,-1],[24,-14],[4,9]],[[25139,55269],[0,-407]],[[25139,54862],[-112,-1]],[[25027,54861],[0,414]],[[22150,64300],[17,-9],[39,1],[7,-8]],[[22213,64284],[24,0],[24,-14],[19,2]],[[22280,64272],[0,-361]],[[22280,63911],[-126,0]],[[22154,63911],[-3,0]],[[22151,63911],[-1,389]],[[22881,65936],[55,0]],[[22936,65936],[75,-1],[0,-86]],[[23011,65849],[0,-319]],[[23011,65530],[-98,1]],[[22913,65531],[-32,1]],[[22881,65532],[0,404]],[[26906,57850],[32,40],[7,-9],[12,52],[10,-27]],[[26967,57906],[39,5]],[[27006,57911],[-3,-403],[22,-75]],[[27025,57433],[-25,-231],[0,-60],[-22,-60]],[[26978,57082],[-28,80],[-3,51],[-8,33],[-3,93],[4,83],[-10,50]],[[26930,57472],[-2,88],[-6,36],[-6,105],[-16,-9],[-1,38],[8,39],[-20,-17],[-10,6],[-20,-20],[-4,24]],[[26853,57762],[30,59],[23,29]],[[21868,55312],[38,-1]],[[21906,55311],[105,-3]],[[22011,55308],[-1,-509]],[[22010,54799],[-143,3]],[[21867,54802],[1,510]],[[28042,59050],[21,-12],[12,82],[11,-1],[9,37]],[[28095,59156],[37,-12],[11,-11],[9,-43],[16,7],[10,-15]],[[28178,59082],[-69,-447]],[[28109,58635],[-14,91],[-13,17],[0,23],[-12,7],[-9,44],[-33,55]],[[28028,58872],[1,68],[13,110]],[[26285,65163],[128,1]],[[26413,65164],[32,1],[0,-305]],[[26445,64860],[-32,-1]],[[26413,64859],[0,51],[-32,0],[0,52],[-96,-1]],[[26285,64961],[0,21]],[[26285,64982],[0,181]],[[25615,58187],[13,2],[9,24],[27,-28],[11,-28],[9,11]],[[25684,58168],[10,-17],[5,-103],[13,-18],[4,26],[5,-67]],[[25721,57989],[-3,-316]],[[25718,57673],[-104,8]],[[25614,57681],[-4,1]],[[25610,57682],[3,144],[5,46],[-7,12],[2,63],[0,179],[2,61]],[[22197,56325],[146,0]],[[22343,56325],[-1,-508]],[[22342,55817],[-144,2]],[[22198,55819],[-1,389]],[[22197,56208],[0,117]],[[23586,54649],[14,-37],[16,5],[9,-47],[86,77]],[[23711,54647],[0,-229]],[[23711,54418],[0,-237],[8,-12]],[[23719,54169],[-1,-2],[-138,-7]],[[23580,54160],[-25,-1],[0,124],[6,93],[0,50],[6,54],[8,27],[10,98],[1,44]],[[16763,71956],[284,-2]],[[17047,71954],[-3,-457],[-9,-22],[-3,-74],[-9,-20],[-14,13],[-18,-37],[-14,-10]],[[16977,71347],[-65,-2],[-257,1]],[[16655,71346],[0,203],[107,-1],[1,408]],[[23742,66075],[65,-1]],[[23807,66074],[0,-402]],[[23807,65672],[-33,0]],[[23774,65672],[-97,0]],[[23677,65672],[0,403]],[[22491,55815],[0,83]],[[22491,55898],[123,0]],[[22614,55898],[0,-39],[17,0]],[[22630,55356],[-37,2]],[[22593,55358],[-104,5]],[[22489,55363],[2,452]],[[31436,38070],[20,33]],[[31456,38103],[7,-43]],[[31463,38060],[-2,-56]],[[31461,38004],[-9,-22]],[[31452,37982],[-18,58],[2,30]],[[22937,61783],[130,-1]],[[23067,61782],[-1,-407]],[[23020,61275],[-89,-1]],[[22673,53809],[22,45],[23,-144]],[[22718,53710],[52,-311]],[[22770,53399],[-136,-292]],[[22634,53107],[-76,459]],[[26275,67133],[131,-1]],[[26406,67132],[1,-398]],[[26407,66734],[0,-7],[-66,0]],[[26341,66727],[-66,1]],[[26275,66728],[0,405]],[[23177,61221],[122,-2]],[[23299,61219],[-1,-356]],[[23298,60863],[-122,2]],[[25132,66008],[66,2]],[[25198,66010],[32,0]],[[25230,66010],[0,-102],[-3,0],[0,-404]],[[25227,65504],[-1,-102]],[[25226,65402],[-93,-4]],[[25133,65398],[-1,307]],[[25132,65705],[1,201],[-1,102]],[[23591,64550],[127,-3]],[[23718,64547],[0,-376]],[[23718,64171],[-60,-3]],[[23658,64168],[-67,-1]],[[23591,64167],[0,383]],[[23289,65672],[129,0]],[[23418,65672],[0,-304],[15,0],[0,-114]],[[23433,65254],[-32,1]],[[23401,65255],[-96,1]],[[23305,65256],[0,112],[-17,0],[1,304]],[[16328,60062],[9,-43],[16,-112],[-1,-56],[24,-61],[0,-30],[39,-18],[42,65],[14,-12],[12,30],[12,-8],[16,29],[20,-10],[6,53],[16,59],[-2,28],[11,40],[9,5],[5,38],[9,-17],[4,51],[12,-5],[7,45],[-8,12],[4,34],[7,-19],[10,12],[2,-33],[15,62],[12,-16],[16,69],[-2,121],[6,45],[81,272]],[[16751,60692],[13,-33],[17,-8],[18,-87],[15,15],[6,-30]],[[16820,60549],[4,-32],[-7,-57],[2,-59],[24,-41],[7,-50],[-5,-32],[11,-105],[14,-2],[18,-32],[26,-65],[5,-73],[15,-113],[0,-64],[-7,-8],[9,-103]],[[16936,59713],[-174,-3],[0,-99],[-89,4],[-1,-101],[-44,2],[-30,-101]],[[16598,59415],[-26,-81],[-2,14],[-21,-17],[-2,-17],[-57,-1],[0,-255],[-99,-320]],[[16391,58738],[-12,66],[-21,6],[-13,48],[-17,31],[-14,41],[-3,35],[-13,7],[-6,66],[12,45],[-15,56],[1,19]],[[16223,59708],[73,248],[18,-1],[-2,54],[16,53]],[[23591,64850],[64,0]],[[23655,64850],[64,-1]],[[23719,64849],[-1,-302]],[[23591,64550],[0,300]],[[24938,64840],[48,0]],[[24986,64840],[38,-1],[-8,-52],[54,1]],[[25070,64788],[32,1],[0,-209]],[[25102,64580],[-26,2],[-92,-7]],[[24984,64575],[7,61],[-53,0]],[[24938,64636],[0,204]],[[25187,63567],[0,51],[16,0],[0,50],[31,162]],[[25234,63830],[32,1]],[[25266,63831],[-1,-68],[0,-401]],[[25265,63362],[0,-102],[-3,0]],[[25262,63260],[-76,1]],[[25186,63261],[1,306]],[[23464,64851],[63,0]],[[23527,64851],[64,-1]],[[23591,64550],[-127,1]],[[23464,64551],[0,300]],[[25322,62161],[87,3]],[[25409,62164],[11,0]],[[25420,62164],[-1,-326]],[[25419,61838],[-12,0]],[[25407,61838],[-54,-1]],[[25353,61837],[0,34],[-29,1]],[[25324,61872],[-13,41],[7,33],[-3,80],[7,0],[0,135]],[[25160,58180],[7,0],[39,72],[17,93],[0,22]],[[25223,58367],[14,-1],[5,-45],[11,-43],[26,-34],[14,12],[1,-86]],[[25294,58170],[-1,-44]],[[25293,58126],[-57,1],[-20,-24],[-7,-49],[-7,-11],[-8,-73],[-18,1]],[[25176,57971],[-3,95],[-13,64],[0,50]],[[26148,65914],[130,1]],[[26278,65915],[1,-364]],[[26279,65551],[-104,0]],[[26175,65551],[-26,0]],[[26149,65551],[-1,363]],[[27610,58754],[141,-24]],[[27751,58730],[0,-66]],[[27751,58664],[-4,-382]],[[27747,58282],[-59,-4]],[[27688,58278],[-84,-7]],[[27604,58271],[6,483]],[[21481,62494],[158,1]],[[21639,62495],[-2,-505]],[[21637,61990],[-23,-1]],[[21614,61989],[-133,-2]],[[21481,61987],[0,406]],[[21481,62393],[0,101]],[[26174,63508],[109,1]],[[26283,63509],[-1,-103]],[[26282,63406],[0,-222]],[[26282,63184],[-62,3],[0,-16]],[[26220,63171],[-42,0],[1,85],[-11,0]],[[26168,63256],[1,99],[5,1],[0,152]],[[28304,59677],[10,-1],[3,-35],[-13,-9],[0,45]],[[21899,59428],[151,0]],[[22050,59428],[1,0],[0,-517]],[[22051,58911],[-151,1]],[[21900,58912],[-1,0]],[[21899,58912],[0,516]],[[25873,59251],[3,13],[1,110],[8,-2],[3,42]],[[25888,59414],[10,-6],[7,-44],[52,-22]],[[25957,59342],[-1,-35],[-15,-16],[-12,-31],[-16,-69]],[[25913,59191],[-19,54],[-11,-7],[-1,-36],[-9,49]],[[19085,60640],[9,28],[3,43],[11,38],[18,28],[4,54],[15,77],[-9,1],[-4,34],[12,15],[9,78],[28,10],[5,-27],[4,37],[14,-6],[4,54],[20,78],[16,-6],[3,47],[13,75],[8,-7],[17,60]],[[19285,61351],[12,42],[-10,43],[9,8],[-11,33],[-1,28],[-15,86],[2,36],[-10,-28],[-5,24],[8,36],[0,75],[-6,23]],[[19258,61757],[153,-1],[116,1]],[[19527,61757],[0,-262],[5,-142]],[[19532,61353],[0,-317]],[[19532,61036],[0,-408],[-1,-53]],[[19531,60575],[0,-566]],[[19531,60009],[-162,-1],[-104,0]],[[19265,60008],[-131,0],[-6,7],[-72,-1]],[[18889,60012],[18,42],[-5,34],[18,-50],[-1,47],[7,-8],[10,49],[10,-12],[45,29],[8,41],[14,30],[5,89],[7,9],[-1,37],[7,33],[-8,35],[17,-31],[13,12],[10,39],[-8,36],[15,37],[-11,19],[6,42],[15,-4],[5,73]],[[24037,65259],[32,0]],[[24069,65259],[96,1]],[[24165,65260],[1,-405]],[[24101,64854],[-64,0]],[[24037,64854],[0,405]],[[17306,73978],[171,1],[103,1]],[[17580,73980],[0,-580]],[[17580,73400],[-205,-2],[-1,404],[-68,-1]],[[17306,73801],[0,177]],[[24948,63875],[94,6]],[[25042,63881],[0,-51],[32,1]],[[25074,63831],[1,-272]],[[25075,63559],[1,-152],[-21,-1]],[[25055,63406],[-52,1],[0,17],[-22,1],[0,51],[-26,-1]],[[24955,63475],[-1,135],[-6,35]],[[24948,63645],[0,230]],[[23304,62035],[124,-1]],[[23428,62034],[-2,-51],[0,-355]],[[23426,61628],[-124,1]],[[23302,61629],[0,51]],[[23302,61680],[0,304],[2,51]],[[23897,54668],[38,-1],[0,52],[25,1],[-7,83],[-2,68]],[[23951,54871],[83,0]],[[24034,54871],[1,-152],[28,-1]],[[24063,54718],[1,-253],[-7,-30],[-4,-74]],[[24053,54361],[-35,1]],[[24018,54362],[-69,1]],[[23949,54363],[-7,51],[0,51],[-60,0]],[[23882,54465],[6,56],[-6,29],[7,69],[-6,34],[14,15]],[[16193,61766],[24,24],[4,-16],[23,47],[22,-2],[38,-58],[28,7],[42,41],[18,1],[22,58],[6,39],[21,17],[4,62],[14,7]],[[16459,61993],[0,-225]],[[16459,61768],[-23,-18],[-13,7],[-22,-29],[-29,-16],[-9,14],[-12,-31],[-11,1],[-8,-29],[-24,-38],[-5,-52],[-49,-68],[-25,-77],[-28,5]],[[16201,61437],[-8,87]],[[16193,61524],[0,242]],[[16478,62417],[1,-79],[26,-77]],[[16505,62261],[8,-74],[-24,-109],[-30,-85]],[[16193,61766],[-26,243],[-6,-6]],[[16161,62003],[11,86],[0,35],[11,35],[6,81],[28,24],[0,31],[23,-12],[13,56],[23,4],[24,-69],[19,-35],[17,19],[12,40],[10,74],[54,-6],[16,9],[11,42],[39,0]],[[24236,59150],[130,-9]],[[24366,59141],[5,-52],[-2,-51],[-1,-191],[-7,0],[-1,-68]],[[24360,58779],[-11,1],[-27,-88]],[[24322,58692],[-13,18],[-16,57],[-15,-14],[-11,28],[-9,-19],[-10,11],[8,34],[-4,46],[12,34],[-16,35],[-7,55],[-14,-8],[-2,32]],[[24225,59001],[-5,49],[15,-1],[1,101]],[[27795,60874],[14,21],[2,-19],[-13,-56],[-3,54]],[[27806,59476],[-35,0]],[[27771,59476],[3,42],[-17,31],[5,17],[22,-20],[7,50],[9,-42],[9,-7],[8,-37],[-9,2],[-2,-36]],[[27363,59628],[4,26],[11,-1],[-10,-50]],[[27368,59603],[-5,25]],[[27925,61684],[13,49],[10,-31],[2,-38],[-15,-10],[-9,-25],[-1,55]],[[27650,59643],[6,32],[12,-9],[2,-67],[-8,4],[-12,40]],[[25821,64866],[109,2]],[[25930,64868],[0,-103],[16,2],[0,-52],[21,2]],[[25967,64717],[-1,-51]],[[25966,64666],[-61,-4],[-1,-100]],[[25904,64562],[-83,0]],[[25821,64562],[0,304]],[[23527,65254],[128,-1]],[[23655,65253],[0,-403]],[[23527,64851],[1,201],[-1,202]],[[15974,59837],[7,40],[24,40],[16,-30]],[[16391,58738],[11,-1],[10,-47],[-5,-24],[10,-30],[2,-35]],[[16419,58601],[-251,5],[-64,2]],[[16104,58608],[-19,70],[-14,35],[-6,99],[-5,35],[-20,29],[-15,104],[-25,94],[-33,64],[-11,45],[-8,80],[1,42],[-11,101],[2,92],[-11,16],[10,74],[18,-38],[9,30],[7,61],[8,141],[-7,55]],[[24485,62330],[21,-1],[0,-69],[22,-1],[-1,-69],[43,-2]],[[24570,62188],[-2,-376]],[[24568,61812],[-12,17],[-13,54],[-22,-12],[-26,27],[0,25],[-25,76],[-14,-10]],[[24456,61989],[-14,12]],[[24442,62001],[1,157],[42,-1],[0,173]],[[27380,59121],[34,32],[18,6],[9,-19],[8,40],[9,-20],[12,19],[4,-30],[19,0],[4,-22]],[[27497,59127],[4,-119],[-22,-53],[6,-54]],[[27485,58901],[-55,5]],[[27430,58906],[-53,5]],[[27377,58911],[3,210]],[[26339,67537],[67,0]],[[26406,67537],[0,-393]],[[26406,67144],[0,-12]],[[26275,67133],[1,202],[-3,0],[0,202]],[[26535,60642],[20,109],[3,34],[21,58],[7,1]],[[26586,60844],[4,0]],[[26590,60844],[25,-57],[27,-33]],[[26642,60754],[-16,-154]],[[26626,60600],[-12,5],[-4,34],[-12,-33],[-15,11],[-3,-31],[-24,-9],[-15,36]],[[26541,60613],[-6,29]],[[23298,60863],[121,0]],[[23419,60863],[0,-67]],[[23419,60796],[0,-339]],[[23419,60457],[-120,0]],[[23299,60457],[-1,0]],[[23298,60457],[0,406]],[[26143,67133],[132,0]],[[26275,66728],[-66,0]],[[26209,66728],[-65,-1]],[[26144,66727],[-1,406]],[[26017,66320],[62,1]],[[26079,66321],[68,-2]],[[26147,66319],[1,-405]],[[26148,65914],[-131,-3]],[[26017,65911],[0,409]],[[25535,60764],[24,42]],[[25559,60806],[41,-72],[46,-64],[16,-7]],[[25662,60663],[-18,-93],[1,-75]],[[25645,60495],[-20,-3],[-11,-38],[-24,13]],[[25590,60467],[-15,38],[-3,74],[3,35],[-7,60]],[[25568,60674],[-6,22],[-24,14],[-3,54]],[[23315,68387],[99,-1]],[[23414,68386],[2,-101],[67,0]],[[23483,68285],[0,-303]],[[23483,67982],[-165,0]],[[23318,67982],[-3,0]],[[23315,67982],[0,405]],[[26001,68350],[72,1]],[[26073,68351],[0,-407]],[[25941,67944],[-2,409]],[[25941,67944],[-110,5]],[[25831,67949],[0,42],[-9,134],[-14,90],[4,32],[20,51],[12,69]],[[26073,67944],[132,-2]],[[26206,67537],[-133,3]],[[25823,67545],[117,-6]],[[26010,67336],[0,-102]],[[26010,67234],[-33,1],[0,-102],[-101,0]],[[25876,67133],[-35,230],[-11,94],[-7,88]],[[23821,67982],[67,0]],[[23888,67982],[99,0]],[[23987,67982],[0,-406]],[[23987,67576],[-124,0]],[[23863,67576],[-42,0]],[[23821,67576],[0,406]],[[25046,62371],[0,221],[31,0]],[[25077,62592],[93,-2]],[[25170,62590],[-1,-354],[32,3]],[[25201,62239],[0,-103]],[[25201,62136],[-94,-4],[-30,2],[0,-102]],[[25077,62032],[-32,6]],[[25045,62038],[-1,300],[2,33]],[[25170,62590],[93,-1]],[[25263,62589],[0,-51],[31,0]],[[25294,62538],[-1,-303]],[[25293,62235],[-92,4]],[[23788,70280],[2,-306]],[[23790,69974],[-109,0]],[[23681,69974],[-15,70],[1,57],[-20,124]],[[23647,70225],[-23,55],[164,0]],[[21748,57894],[153,2]],[[21901,57896],[-1,-507]],[[21900,57389],[-112,0]],[[21788,57389],[-41,0]],[[23230,70612],[173,-1]],[[23403,70611],[0,-202],[2,-186]],[[23405,70223],[0,-17]],[[23405,70206],[-172,2]],[[23233,70208],[0,202],[-3,0],[0,202]],[[22550,59038],[29,0]],[[22579,59038],[120,0]],[[22699,59038],[0,-511]],[[22699,58527],[-149,-1]],[[25073,59085],[53,-4],[1,25]],[[25127,59106],[18,-54],[15,-62],[21,-13],[20,-58]],[[25201,58919],[-3,-310],[-1,-6]],[[25197,58603],[-58,7]],[[25139,58610],[-14,35],[-40,41],[-6,44],[-1,79],[-15,37]],[[25063,58846],[7,31],[3,208]],[[25335,58986],[10,32],[11,83],[15,48],[-5,59],[2,57],[29,1]],[[25397,59266],[3,-8]],[[25400,59258],[7,-48],[1,-81]],[[25408,59129],[10,-96],[-1,-35],[-23,-119],[-6,-72],[3,-23],[24,-13],[-4,-81],[-6,-29]],[[25405,58661],[-3,-29]],[[25402,58632],[-16,-6],[0,34],[-41,7]],[[25345,58667],[-11,1],[1,318]],[[27282,55866],[10,-33],[30,-42],[39,-83],[26,-76],[3,-41],[11,-31]],[[27401,55560],[-27,-60],[3,-45],[-6,-31],[-9,50],[-40,-89]],[[27322,55385],[-12,31],[-19,76]],[[27291,55492],[-10,49],[2,53],[2,223],[-3,49]],[[22384,50990],[111,-159]],[[22495,50831],[60,-270]],[[22555,50561],[26,-111]],[[22581,50450],[-66,-203]],[[22515,50247],[0,42],[-130,-2]],[[22385,50288],[-1,515]],[[22384,50803],[0,187]],[[22576,67575],[42,1]],[[22618,67576],[100,1]],[[22718,67577],[57,0]],[[22776,67192],[-67,-1]],[[22709,67191],[-122,0]],[[22587,67191],[-9,33]],[[20920,69320],[5,4],[0,247]],[[20925,69571],[133,0],[169,0]],[[21227,69571],[0,-202]],[[21227,69369],[-2,-507],[-168,0]],[[20921,68824],[0,353],[-1,143]],[[12690,84293],[118,338]],[[12808,84631],[28,-176],[57,-182],[32,-161],[30,-111]],[[12955,84001],[-1,-27],[-20,-12],[-28,5],[-18,38],[13,56],[-16,30],[2,47],[-17,22],[-15,-35],[-18,30],[-10,-17],[-22,16],[-27,62],[-19,-25],[-19,16],[-20,42],[-17,-57]],[[12703,84192],[-5,100],[-8,1]],[[12663,84216],[17,48]],[[12680,84264],[-1,-52],[-16,4]],[[12611,83642],[15,25],[14,-33],[-27,-31],[-2,39]],[[12379,84716],[-16,-66],[-3,-82],[24,-75],[19,34],[14,-8],[11,51],[19,-4],[15,23],[67,51]],[[12529,84640],[-3,-87],[25,-75],[2,-52],[21,-52],[14,-87],[17,-55],[2,-142],[21,-60],[4,-65],[-9,-2],[-5,47],[-38,120],[-10,115],[-19,37],[-9,53],[-21,0],[26,-101],[4,-34],[-13,-23],[35,-121],[23,-49],[-2,-62],[24,-113],[-19,6],[15,-102],[0,-27],[-25,-62],[-20,26],[-17,-1],[4,-34],[-21,-104],[-38,-83],[-24,-25],[-2,-33],[-31,-65],[-29,3],[-9,89],[-4,135],[21,80],[15,23],[-16,31],[-1,69],[14,6],[12,-39],[6,23],[-40,141],[-1,58],[-18,60],[-5,82],[-11,43],[8,125],[-12,81],[-3,95],[-11,91],[4,44],[-20,93],[-17,45],[-9,77],[-6,101],[4,49],[42,-103],[7,-47],[14,-9],[4,-58]],[[12097,84881],[16,18],[19,-7],[16,-52],[-29,-6],[-22,47]],[[12043,86098],[0,0]],[[11978,85151],[9,14],[7,-59],[-16,45]],[[11978,84786],[30,41],[3,-53],[-16,-19],[-17,31]],[[12270,84186],[-31,-11],[-16,17],[-42,82],[-29,43],[-52,57],[-52,83],[-21,-129],[-13,-60],[-96,-8]],[[11918,84260],[-25,26],[-7,49],[-25,36],[5,174],[16,33],[8,-9],[29,60],[3,51],[-12,92],[32,-2],[0,-54],[12,-60],[28,61],[29,-6],[17,-20],[17,49],[36,50],[14,-55],[41,-30],[25,-53],[-12,-78],[-31,-76],[4,-49],[12,-5],[8,60],[32,108],[15,12],[34,-55],[46,-10],[11,-32],[29,-16],[15,-79],[-4,-67],[-22,-44],[-37,49],[-10,-8],[12,-40],[18,-18],[33,-75],[-44,-43]],[[11480,85398],[116,116]],[[11596,85514],[22,1],[51,108],[111,158],[11,23],[68,8],[26,110]],[[11885,85922],[32,-12],[6,-21],[46,-19],[12,-34],[11,33],[17,-43],[41,-1],[19,-42],[13,0],[21,-43],[-4,-35],[7,-53],[36,-75],[-10,-70],[20,-23],[-15,-25],[-27,-15],[-8,-27],[-10,-112],[14,3],[41,-43],[5,-44],[35,-45],[-1,-44],[25,-86],[-10,-18],[-22,25],[-17,-30],[13,-102]],[[12175,84921],[-18,-16],[-33,50],[-27,-37],[-50,-19],[3,81],[-25,16],[-4,19],[30,39],[-10,69],[5,53],[-28,109],[0,36],[-22,84],[13,24],[-2,90],[-19,64],[-12,10],[15,-131],[-12,-125],[-27,-5],[-42,70],[-26,30],[-15,150],[-11,-68],[-13,-22],[-44,54],[-14,-20],[-10,50],[-12,-18],[-3,-54],[45,-35],[7,7],[45,-44],[33,-66],[30,-104],[-11,-44],[-24,-44],[6,-11],[33,44],[7,30],[27,1],[7,-105],[26,-78],[16,-157],[-19,-44],[-43,-32],[-11,10],[9,47],[-18,16],[-12,-17],[7,-39],[-10,-37],[-43,22],[-11,-23],[5,-60],[-8,-35],[-29,5],[-8,78],[-36,35],[3,15],[-28,74],[-17,19],[-29,-19],[-35,70],[-16,15],[-56,107],[-51,75],[-2,50],[-30,70],[-30,47],[-11,51]],[[22243,69203],[166,0]],[[22409,69203],[3,0],[0,-306]],[[22412,68897],[1,-509]],[[22413,68388],[-63,0]],[[22750,68792],[101,-1]],[[22851,68791],[0,-404]],[[22650,68386],[-1,0]],[[22649,68386],[0,407]],[[25489,58392],[20,51],[11,-27],[25,-18],[33,52]],[[25578,58450],[-3,-87],[9,-41],[9,-9],[3,-68],[-5,-45]],[[25591,58200],[-9,14],[-34,1],[0,-43],[-17,-7],[-2,-19],[-16,0]],[[25513,58146],[-9,44],[-11,7],[0,36],[-20,12]],[[25473,58245],[7,26],[2,49],[9,24],[-2,48]],[[24825,69767],[0,202]],[[24825,69969],[171,0],[1,-102]],[[24997,69867],[0,-405]],[[24997,69462],[-172,1]],[[24825,69463],[-1,256],[1,48]],[[25096,58489],[14,-26],[35,132],[-6,15]],[[25197,58603],[28,-2]],[[25225,58601],[-2,-234]],[[25160,58180],[-66,5]],[[25094,58185],[2,304]],[[28035,61205],[10,50],[10,-12],[-1,-43],[-18,-13],[-1,18]],[[19361,70742],[70,1],[0,315],[4,0],[0,236]],[[19435,71294],[0,68],[106,-1]],[[19541,71361],[0,-151],[6,-50],[23,-1],[0,-102],[12,-44],[0,-102],[9,-16],[-1,-34],[15,-51],[0,-169]],[[19605,70641],[-40,0]],[[19565,70641],[-137,0],[-1,-102]],[[19427,70539],[-52,0],[0,102],[-14,0],[0,101]],[[20358,67570],[16,1]],[[20374,67571],[93,1],[169,3]],[[20636,67575],[50,1]],[[20686,67576],[0,-828],[2,-6],[0,-202]],[[20688,66540],[-110,-4],[1,-203]],[[20579,66333],[-14,0],[-8,-64],[1,-67],[-5,-34],[-42,-1],[-24,18],[0,85],[11,0],[5,62],[-144,3]],[[20359,66335],[-1,0]],[[26876,59349],[5,12],[17,-22],[42,24],[13,-8],[10,-39],[19,-8]],[[26982,59308],[0,-30],[-11,-137]],[[26971,59141],[-8,-48],[-19,-67],[-25,-6],[-19,-62]],[[26900,58958],[-15,59],[5,317],[-20,-10]],[[26870,59324],[6,25]],[[24579,69663],[0,102],[69,-2]],[[24648,69763],[61,-1],[116,5]],[[24825,69463],[-43,0],[0,-101],[-33,0]],[[24749,69362],[-33,-3],[-136,0]],[[24580,69359],[-1,304]],[[18974,69325],[72,1],[22,-12],[85,2],[11,8],[45,-5],[25,8],[87,-2]],[[19321,69325],[194,5],[11,-7],[123,0]],[[19649,69323],[0,-150],[8,0],[0,-408],[5,0],[0,-410],[7,0]],[[19669,68355],[0,-104]],[[19669,68251],[-68,1],[1,-104],[-35,0],[1,-100],[-50,0],[-1,-101],[-61,-5]],[[19456,67942],[-15,34],[-9,48],[-21,75],[-10,-11],[-14,18],[-18,-33],[-13,-65],[2,-24],[-19,-20],[-15,-33],[-18,23],[-1,29],[10,10],[-1,34],[-12,47],[3,32],[-39,-5],[-10,61],[-6,6]],[[19250,68168],[0,119],[-20,37],[5,45],[-11,124],[-15,38]],[[19209,68531],[0,1]],[[19209,68532],[0,0]],[[19209,68532],[-8,65],[-19,64],[6,102],[-5,33],[-24,18],[0,24],[-80,-1],[0,97],[-108,0]],[[18971,68934],[-1,234],[1,156],[3,1]],[[23148,68388],[131,-2]],[[23279,68386],[36,1]],[[23315,67982],[-164,1]],[[23147,67983],[1,405]],[[25245,67223],[33,-2]],[[25278,67221],[99,-3]],[[25377,67218],[-2,-204],[0,-202]],[[25375,66812],[-66,-1]],[[25309,66811],[-66,1]],[[25243,66812],[0,205],[2,206]],[[23039,68388],[104,0]],[[23143,68388],[5,0]],[[23039,67984],[0,404]],[[28379,61581],[13,-20],[22,16],[6,26],[15,0],[12,38],[9,-30],[-6,-74],[10,-39]],[[28460,61498],[-14,-20],[0,-70],[-4,-45]],[[28442,61363],[-15,-14]],[[28427,61349],[-21,29],[-7,26],[-11,-9],[1,47],[7,14],[-28,4]],[[28368,61460],[-5,19],[6,98],[10,4]],[[18166,70122],[9,14],[-1,55],[13,42],[11,-36],[37,108],[8,-10],[21,18],[18,36],[3,67]],[[18285,70416],[6,-3],[18,-123],[-1,-28],[11,-47],[9,-10],[7,65],[17,5],[13,57],[14,21],[22,-4],[4,-24]],[[18405,70325],[27,-61],[17,-8],[7,-25],[22,-7],[18,-30],[7,-72],[9,-12],[4,-60]],[[18516,70050],[0,-64],[-5,-42],[4,-58],[18,-50],[14,-13],[20,16],[11,-58],[2,-355],[35,0],[0,-102],[39,0],[1,-103],[6,0],[0,-100],[28,-1],[0,-49],[80,-3],[0,-84],[83,0]],[[18852,68984],[4,-34],[-16,-98],[15,-64],[-32,26],[-9,-16]],[[18814,68798],[-24,13],[-3,-19],[-30,-40],[-13,63],[-22,-8],[-13,-25],[-10,13],[-21,-30],[-8,22],[-14,-8],[-12,35],[-16,7],[-9,-35],[-9,0],[-2,-61],[-8,-45],[-24,38],[-8,-20],[-11,24],[-33,2],[-17,22],[-17,-23],[-15,-72],[6,-53]],[[18481,68598],[-9,-22],[-11,44],[-18,24],[-15,40],[-6,53],[5,34],[-21,81],[9,48],[-5,50],[-18,109],[-32,58],[-26,-44],[-4,40],[-28,53],[-11,97],[14,13],[2,55],[-4,61],[-19,39],[2,26],[-17,15],[-7,73],[-24,73],[-1,35],[-14,54],[2,70],[-8,19],[-6,57],[6,30],[-1,46],[-19,0],[7,95],[-15,25],[-12,-2],[2,26],[-13,49]],[[19189,71314],[17,-2],[6,20],[17,-8],[4,23],[18,12],[6,-15],[16,19],[42,-69],[21,1]],[[19336,71295],[99,-1]],[[19361,70742],[-175,2]],[[19186,70744],[0,313],[3,0],[0,257]],[[23832,60125],[151,-11]],[[24028,60093],[-2,-305]],[[24026,59788],[-110,9]],[[23916,59797],[-10,1],[1,204],[-76,4]],[[23831,60006],[1,119]],[[23987,62255],[1,51],[31,108]],[[24019,62414],[6,-51],[17,-45],[17,-12],[21,14],[34,-19],[10,3]],[[24124,62304],[17,-56]],[[24141,62248],[-33,-265],[0,-17],[-62,5]],[[24046,61971],[-62,10]],[[23984,61981],[3,274]],[[22627,63100],[157,0]],[[22784,63100],[0,-101]],[[22784,62999],[0,-304]],[[22784,62695],[-156,0]],[[22628,62695],[0,303],[-1,0]],[[22627,62998],[0,102]],[[28476,61264],[17,55],[15,-69],[18,-38],[-2,-36],[31,-22],[6,-18]],[[28561,61136],[22,-41],[2,-73],[11,-35]],[[28596,60987],[-16,-2],[-6,-30],[-15,-22]],[[28559,60933],[-11,39],[-12,12],[-21,103],[-11,11],[-4,45],[-15,30]],[[28485,61173],[-9,91]],[[25020,58708],[18,6],[20,89],[5,43]],[[25096,58489],[-13,7],[-15,43],[-28,22],[-11,21],[-13,52]],[[25016,58634],[4,74]],[[25758,63413],[103,1]],[[25861,63414],[-1,-238],[1,-102]],[[25861,63074],[-39,-2],[0,-34],[-54,1]],[[25768,63039],[5,33],[-13,0],[0,273],[-2,0]],[[25758,63345],[0,68]],[[21982,61987],[26,-1]],[[22008,61986],[155,-1]],[[22163,61985],[4,0]],[[22167,61985],[0,-404]],[[22167,61581],[0,-101]],[[22167,61480],[-179,0]],[[21988,61480],[-5,0]],[[25227,65504],[94,6]],[[25321,65510],[3,-304]],[[25324,65206],[-96,-7]],[[25228,65199],[-2,203]],[[25692,64942],[17,33],[24,24],[12,42],[11,94],[16,35],[33,1]],[[25805,65171],[16,0]],[[25821,65171],[0,-305]],[[25821,64866],[-129,1]],[[25692,64867],[0,75]],[[25965,63082],[0,68]],[[25965,63150],[89,2]],[[26054,63152],[1,-286]],[[26055,62866],[-1,-120],[-15,0]],[[26039,62746],[-74,-3]],[[24041,61053],[66,-4],[6,-60],[14,-47],[13,32],[14,-4],[12,41]],[[24166,61011],[-1,-169],[45,-77],[0,-51]],[[24210,60714],[0,-153]],[[24210,60561],[-122,10]],[[24042,60574],[2,276],[-4,0],[1,203]],[[23789,63456],[111,9]],[[23900,63465],[0,-307],[27,0]],[[23927,63158],[-6,-26],[7,-68],[-4,-9]],[[23924,63055],[-134,-5]],[[23790,63050],[0,202]],[[23790,63252],[-1,204]],[[26270,69459],[34,-2],[0,101]],[[26304,69558],[103,-4]],[[26273,69158],[-3,200],[0,101]],[[21682,63506],[0,405]],[[21682,63911],[152,-2]],[[21834,63909],[6,0]],[[21840,63909],[-1,-203],[1,-201]],[[21840,63505],[-158,1]],[[26271,68347],[-1,320],[2,87]],[[23551,60771],[151,-16]],[[23702,60755],[0,-68]],[[23702,60687],[-2,-270]],[[23700,60417],[-149,17]],[[23551,60434],[0,337]],[[21788,57389],[-1,-507]],[[21787,56882],[-26,0]],[[21761,56882],[-120,0]],[[21641,56882],[0,506]],[[26472,66325],[52,-1],[78,9]],[[26602,66333],[31,4]],[[26633,66337],[3,-201],[1,-206]],[[26637,65930],[-65,-3]],[[26572,65927],[-66,-5],[-34,-8]],[[26472,65914],[0,411]],[[26078,66725],[66,2]],[[26209,66728],[1,-407]],[[26210,66321],[-63,-2]],[[26079,66321],[-1,404]],[[19931,54895],[86,0]],[[20017,54895],[1,-449],[0,-508]],[[20018,53938],[-254,0]],[[19764,53938],[-2,94]],[[19762,54032],[0,251],[-4,0],[0,509],[85,0],[0,102],[88,1]],[[26851,59778],[6,38],[14,-19],[12,33],[6,39],[65,7],[-1,-9]],[[26953,59867],[14,-113],[6,-82]],[[26973,59672],[11,-132]],[[26984,59540],[-88,-2]],[[26896,59538],[-62,0]],[[26834,59538],[-43,0]],[[26791,59538],[11,95],[34,67],[-1,16],[16,62]],[[29917,68632],[16,6],[14,39],[7,45],[16,22],[-6,59],[11,13],[2,73],[-10,38],[-11,102],[15,52],[4,64],[18,75],[-13,89],[11,30]],[[29991,69339],[3,68],[18,64],[-3,15],[11,74],[-13,36],[18,11],[4,26],[22,42],[15,-61],[28,-5],[13,70]],[[30107,69679],[15,-757],[6,-431]],[[30128,68491],[-10,-2],[1,-54],[-59,8],[-14,-124],[-2,-53],[-9,0],[-4,86],[-16,54]],[[30015,68406],[-8,43],[-18,16],[-19,-10],[-3,59],[-31,31],[-19,87]],[[22183,73978],[147,1]],[[22330,73979],[0,-328],[8,0],[0,-202]],[[22338,73449],[0,-203],[-64,1]],[[22274,73247],[-82,0]],[[22192,73247],[0,202]],[[22192,73449],[0,202],[-9,0],[0,327]],[[23550,60009],[0,68]],[[23550,60077],[156,-11]],[[23706,60066],[-1,-135]],[[23705,59931],[-2,-214]],[[23550,59739],[0,270]],[[12766,83305],[62,-7],[30,-74],[14,-82],[3,-56],[9,-23],[23,-11],[16,-48],[5,-46],[33,-52],[9,-64],[15,-34],[-31,-38],[-20,-42],[-26,-24],[-16,16],[-31,4],[-43,24],[5,-48],[-23,-51],[-40,25],[-18,29]],[[12742,82703],[2,30],[-12,61],[7,21],[-4,52],[-10,11],[-8,79],[-20,57],[22,-15],[-6,57],[10,58],[-6,36],[35,19],[32,45],[-18,91]],[[12955,84001],[25,-123],[53,-180],[32,-155],[-33,-140],[89,-52],[-19,-186]],[[12982,82959],[-2,50],[-22,28],[-37,66],[-13,69],[-15,33],[-13,79],[29,43],[-11,58],[-18,-47],[-19,18],[-2,-27],[-23,58],[-31,8],[-11,56],[-27,-28],[-54,76],[-8,75],[15,73],[18,-22],[33,4],[9,48],[-22,3],[-32,36],[2,35],[-18,125],[13,81],[-24,-10],[-15,19],[-16,53],[7,103],[20,2],[16,-36],[33,-24],[63,-89],[5,15],[-25,58],[-20,19],[-64,125]],[[22784,65937],[97,-1]],[[22881,65532],[-65,0]],[[22816,65532],[-32,0]],[[22784,65532],[0,405]],[[22784,66240],[98,0]],[[22882,66240],[0,-101],[54,-1]],[[22936,66138],[0,-202]],[[22784,65937],[0,303]],[[25437,70164],[42,1],[0,204],[22,0],[0,102]],[[25501,70471],[69,-1]],[[25570,70470],[0,-101],[12,0],[0,-404],[17,-1]],[[25599,69964],[-17,-146],[-19,-65],[-20,-112],[-41,-174],[6,-33]],[[22670,50311],[57,170]],[[22727,50481],[43,130],[22,-35],[10,-36]],[[22802,50540],[0,-22],[20,23],[13,-38],[7,-66],[-6,-192],[8,-47],[-2,-20]],[[22842,50178],[-60,-192]],[[22782,49986],[-15,28],[-8,-6],[-6,31],[-20,19],[-2,74],[-18,18],[-6,-10],[-14,24],[-10,102],[-13,45]],[[22599,71221],[98,-1]],[[22809,70816],[-203,0]],[[22599,70816],[0,405]],[[21748,58403],[152,0]],[[21900,58403],[1,-507]],[[21748,57894],[0,509]],[[27623,65237],[12,27],[18,71],[18,33],[0,23],[60,-6],[0,8]],[[27731,65393],[28,1]],[[27759,65394],[0,-186],[-3,-28],[12,-1],[1,-62]],[[27769,65117],[-1,-60],[-17,1],[0,-18],[-18,1],[0,-52],[-13,-27],[1,-42],[-13,-52]],[[27708,64868],[-85,-1]],[[27623,64867],[0,370]],[[21900,57389],[35,-1]],[[21907,56884],[-120,-2]],[[23831,59921],[0,85]],[[23916,59797],[-3,-370]],[[23913,59427],[-75,0]],[[23838,59427],[3,374],[-11,1],[1,119]],[[26494,63329],[31,-8],[0,-18],[32,-7],[-1,-29],[51,-29]],[[26607,63238],[-2,-65]],[[26605,63173],[-4,-194]],[[26601,62979],[-86,22]],[[26515,63001],[-38,10]],[[26477,63011],[0,57],[6,246],[11,15]],[[23662,63662],[126,-5]],[[23788,63657],[1,-201]],[[23790,63252],[-125,5]],[[23665,63257],[1,286],[-4,0]],[[23662,63543],[0,119]],[[24182,64198],[48,4]],[[24230,64202],[66,6]],[[24296,64208],[-2,-355]],[[24294,63853],[-111,2]],[[24183,63855],[-1,51]],[[24182,63906],[0,292]],[[22275,54282],[21,1]],[[22296,54283],[55,-2]],[[22351,54281],[71,-439]],[[22422,53842],[-26,-15],[-5,-90],[-59,-147]],[[22332,53590],[-8,-17],[-6,24],[-14,-34]],[[22304,53563],[-31,7]],[[22273,53570],[2,712]],[[21328,55306],[108,0]],[[21436,55306],[1,-507]],[[21435,54799],[-238,-1]],[[21197,54798],[0,509]],[[22770,53399],[21,-89],[18,42]],[[22867,53010],[-52,-112],[-16,-160]],[[22799,52738],[-86,137],[-57,42]],[[22656,52917],[-23,150]],[[22633,53067],[1,40]],[[17195,73980],[111,-2]],[[17306,73801],[-1,-113],[0,-441],[-2,-379]],[[17303,72868],[-110,2]],[[17193,72870],[0,102],[-18,0],[0,607],[-36,0],[0,101],[19,0],[0,109],[18,0],[0,101],[19,0],[0,90]],[[26606,53687],[0,33],[42,-2]],[[26648,53718],[0,-28],[22,-20],[7,-25],[5,-58],[11,-7]],[[26693,53580],[-9,-13],[0,-74],[-18,-59]],[[26666,53434],[-7,-28],[-15,1]],[[26644,53407],[-39,4]],[[26605,53411],[1,276]],[[21783,52684],[236,5]],[[22019,52689],[0,-489]],[[22019,52200],[-163,-2]],[[21856,52198],[-73,-1]],[[21783,52197],[0,487]],[[27602,60502],[8,24],[10,79],[12,39],[-17,93],[2,27]],[[27617,60764],[29,63],[28,116],[40,-44]],[[27714,60899],[-4,-33],[5,-71],[-4,-14],[31,-77],[-1,-18],[22,-55]],[[27763,60631],[-19,-53],[-6,-44],[-13,8],[-7,33],[-9,-10],[-18,-59],[-16,-26],[10,-25],[-3,-36],[-16,-48]],[[27666,60371],[-6,22],[-54,93],[-4,16]],[[23611,53787],[86,-39],[30,-59]],[[23727,53689],[0,-120],[-17,-66],[6,-53],[-7,-79],[5,-65],[-2,-124]],[[23712,53182],[-1,-18],[-25,-22]],[[23686,53142],[-17,43],[-16,60],[-21,43]],[[23632,53288],[-4,45],[7,48],[-4,64],[1,47],[6,25],[-5,27],[6,95],[-3,73],[-11,21],[-14,54]],[[31524,38134],[13,26]],[[31537,38160],[6,-37],[1,-63]],[[31544,38060],[0,-27]],[[31544,38033],[-2,-31],[-12,1],[-9,-22]],[[31521,37981],[-1,24],[-11,16]],[[31509,38021],[0,4]],[[31426,38459],[10,-13]],[[31436,38446],[4,-59],[-1,-47]],[[31439,38340],[-4,-19]],[[31435,38321],[-10,-8],[-3,-32]],[[31419,38294],[7,165]],[[23984,71379],[212,-2],[2,-118]],[[24198,71259],[0,-286]],[[24198,70973],[-212,2]],[[23986,70975],[0,186],[-3,115],[1,103]],[[26672,51474],[13,-1],[8,110],[5,21],[0,52]],[[26698,51656],[111,1]],[[26809,51657],[0,-34],[-8,-47],[3,-62],[-9,-89],[5,-45],[5,6]],[[26805,51386],[-11,-58],[-2,-82],[-12,-59],[1,-24],[-12,-31],[1,-27],[-16,-38],[-6,8],[-7,-41]],[[26741,51034],[-3,65],[-7,58],[-11,45],[-15,6],[-5,44],[-24,48],[0,111],[-4,63]],[[26598,56049],[48,257]],[[26646,56306],[8,-18],[9,-93],[11,-28]],[[26674,56167],[10,-49],[7,-65],[21,-78],[-3,-58]],[[26709,55917],[-70,-57]],[[26639,55860],[-42,107]],[[26597,55967],[1,82]],[[3834,96137],[247,0],[0,201],[246,0],[249,0],[0,101],[195,0],[0,-101],[130,0],[0,101],[130,0],[0,-101],[259,1],[0,100],[130,0],[0,-100],[206,0],[216,0],[285,0],[0,-101],[256,0],[0,-101],[256,0],[0,-41]],[[6639,96096],[0,-160],[-14,0],[0,-101],[63,0],[0,-101],[63,0],[0,-101],[63,0],[0,-101],[-16,0],[0,-302],[124,0],[0,-101],[43,0],[0,-403],[-17,0],[0,-101],[-182,0],[0,-201],[-181,0],[0,-101],[-12,0],[0,-202],[-119,0],[0,101],[-60,0],[0,101],[-119,0],[0,-202],[-119,0],[0,202],[-238,0],[0,-403],[-297,0],[0,-202],[-176,0],[0,-202],[3,0],[0,-302]],[[5448,93214],[-58,0],[0,-101],[-232,0],[-230,0],[-243,0],[-137,0],[-260,0],[0,202],[-58,0],[0,201],[-78,0],[0,404],[-21,0],[0,403],[-21,0],[0,122]],[[4110,94445],[134,15],[52,-11],[34,-31],[-41,-11],[7,-38],[-10,-71],[-31,-77],[1,-70],[12,-56],[-21,-59],[-49,-33],[-4,-20],[49,7],[42,-151],[40,-3],[36,32],[42,-1],[49,-30],[47,21],[69,15],[32,-58],[50,21],[18,-34],[52,32],[18,26],[84,-65],[18,59],[26,44],[37,150],[18,26],[40,-9],[8,-39],[32,-12],[31,27],[26,0],[-32,110],[-71,55],[-45,24],[-48,-1],[-60,-60],[13,112],[-3,83],[-62,114],[-22,91],[-26,35],[-59,14],[-8,56],[-32,90],[7,50],[27,18],[10,43],[16,-37],[24,28],[27,-89],[36,-91],[24,-10],[-19,-101],[3,-55],[28,-50],[57,-123],[53,-68],[39,18],[30,28],[9,49],[-45,2],[-10,45],[-56,70],[-53,112],[10,52],[0,60],[14,23],[1,57],[33,93],[30,-32],[22,3],[1,28],[-38,55],[-25,-8],[-28,57],[-87,-29],[-32,-37],[-34,0],[-39,-19],[-34,17],[-20,43],[-17,-16],[-21,23],[-4,-51],[-36,39],[-91,42],[-54,31],[-48,15],[-22,30],[1,98],[-22,163],[-52,216],[-20,58],[-36,62],[-91,101],[-145,228],[-21,24],[-51,87],[-20,21]],[[21029,72034],[158,0]],[[21187,72034],[19,0],[0,-406]],[[21206,71628],[-55,0],[0,-408]],[[21045,71220],[0,408],[-16,0],[0,406]],[[23785,71422],[0,264]],[[23785,71686],[201,-4]],[[23986,71682],[-2,-303]],[[23986,70975],[0,-304]],[[23986,70671],[-64,2],[-41,-7]],[[23881,70666],[0,108],[-102,-4]],[[23779,70770],[-4,9],[0,388],[9,6],[1,249]],[[19529,62918],[0,189]],[[19529,63107],[44,0],[0,-11],[95,-1],[0,51],[171,1],[0,152],[68,6],[73,-2],[0,104],[32,-3],[0,204],[78,1]],[[20090,63609],[2,-103],[-1,-98]],[[20091,63408],[-22,0],[0,-643]],[[20069,62765],[-88,0]],[[19981,62765],[-273,0],[-179,0]],[[19529,62765],[0,153]],[[23426,61628],[0,-152],[-3,0],[-1,-258]],[[23422,61218],[-123,1]],[[23299,61219],[1,257],[3,0],[-1,153]],[[22037,56327],[15,0]],[[22052,56327],[1,-510]],[[22053,55817],[-146,0]],[[22225,58628],[207,0]],[[22435,58324],[-1,-101]],[[22434,58223],[-206,1]],[[22228,58275],[-3,50],[0,303]],[[26670,64302],[32,0],[0,18],[54,1]],[[26827,64323],[-1,-68],[-27,-12],[0,-169],[-16,-7],[-2,-59]],[[26781,64008],[-63,11]],[[26718,64019],[0,74],[-47,-2]],[[26671,64091],[-1,211]],[[24715,64741],[0,102]],[[24715,64843],[126,-2]],[[24841,64841],[0,-204]],[[24841,64637],[0,-305]],[[24841,64332],[-128,3]],[[24713,64335],[2,406]],[[26559,56667],[15,-73],[42,-21],[14,-18],[8,-76]],[[26638,56479],[-31,-70]],[[26607,56409],[-8,13],[-24,-26],[-10,41]],[[26565,56437],[-11,63],[-9,23],[14,144]],[[25228,65199],[3,-406]],[[25231,64793],[-96,-3],[0,-207]],[[25135,64583],[-33,-3]],[[25070,64788],[0,240]],[[25070,65028],[-1,320]],[[25069,65348],[0,51],[64,-1]],[[25897,53538],[0,105],[14,9],[0,93]],[[25911,53745],[99,0]],[[26010,53745],[0,-490]],[[26010,53255],[-112,-5]],[[25898,53250],[-1,288]],[[27434,48610],[110,0],[0,67],[24,-1]],[[27568,48676],[10,-82],[6,-94],[7,-46],[10,-119]],[[27601,48335],[-17,1],[0,-17],[-208,3]],[[27376,48322],[58,189],[0,99]],[[23731,66480],[131,0]],[[23862,66480],[0,-101],[10,0],[0,-305]],[[23872,66074],[-65,0]],[[23994,66479],[0,-100],[6,0],[1,-305]],[[23937,66074],[-65,0]],[[17924,69100],[4,-16],[-6,-55],[30,-113],[14,14],[18,-50],[-2,-26],[10,-25],[15,33],[18,9],[4,46],[14,25],[4,43],[-9,35],[14,22],[3,41],[18,34],[4,31],[19,15],[-2,-98],[-4,-37],[23,-19],[14,30],[22,-141],[9,-18],[43,-145],[36,-31],[8,-21],[20,-8],[24,-25],[15,35],[12,-81],[18,-77],[6,-97]],[[18340,68430],[-27,1],[0,-203],[-11,0],[3,-169],[-3,-43],[13,-20],[9,-59],[-18,-1],[-2,-39],[-22,-65],[-65,-112],[-10,-63]],[[18207,67657],[-5,36],[-17,59],[-27,67],[-9,67],[-7,9],[-11,-45],[-13,7],[-7,39],[-37,66],[-5,66],[-19,-16],[-14,25],[-27,4],[-6,-62],[-15,7],[-6,49],[-21,40],[-37,0],[0,76],[-17,0],[-27,-64]],[[17880,68087],[-6,13]],[[17874,68100],[7,38],[-4,34],[-19,31],[14,56],[-13,40],[8,24],[-18,41],[-7,-7],[-17,38],[2,43],[-5,66],[-30,33],[-2,17]],[[17790,68554],[13,55],[6,111],[-4,35],[-12,9],[-6,64],[6,39],[23,19],[9,27],[8,76],[-3,19],[17,47],[37,-57],[13,42],[27,60]],[[26280,53609],[1,139]],[[26281,53748],[45,0],[2,27],[17,-26],[11,0]],[[26356,53749],[27,1]],[[26383,53750],[-2,-41],[13,-151],[-5,-24]],[[26389,53534],[-5,21],[-12,-31],[-41,7]],[[26331,53531],[-42,3],[-2,76],[-7,-1]],[[23237,66484],[99,1]],[[23336,66485],[0,-102],[18,0],[0,-307]],[[23354,66076],[-97,1]],[[23257,66077],[1,306],[-21,1],[0,100]],[[20186,60983],[30,-1],[0,-101],[153,1]],[[20369,60882],[-1,-405]],[[20181,60481],[0,303],[5,0],[0,199]],[[23910,65258],[127,1]],[[24037,64854],[-63,0]],[[23974,64854],[-64,0]],[[23910,65238],[0,20]],[[21053,64112],[32,0],[0,-101]],[[21019,63504],[-124,0]],[[20895,63504],[0,609],[158,-1]],[[24066,65671],[131,0]],[[24197,65671],[-1,-101],[1,-310]],[[24197,65260],[-32,0]],[[24069,65259],[0,108],[-3,0],[0,304]],[[24873,64100],[16,33],[43,30],[0,40],[14,59],[-2,14],[16,42],[1,55]],[[24961,64373],[63,1],[0,-155],[16,1],[1,-26]],[[25041,64194],[1,-313]],[[24948,63875],[-32,-1],[0,136],[-58,0]],[[24858,64010],[15,90]],[[20752,62997],[264,1]],[[21016,62998],[-2,-510],[1,-304],[-94,2]],[[20921,62186],[1,302],[-170,1]],[[20752,62489],[0,508]],[[23807,65672],[97,-1]],[[23904,65671],[0,-305],[6,0],[0,-108]],[[23781,65263],[0,103],[-7,0],[0,306]],[[26388,63915],[0,28],[26,1],[0,119],[94,2]],[[26508,64065],[0,-198],[-3,-46]],[[26505,63821],[-3,-104]],[[26502,63717],[-54,18],[-60,-3]],[[26388,63732],[0,183]],[[23655,65253],[96,-1],[30,11]],[[23781,64855],[-62,-6]],[[27154,64989],[33,1],[-9,85],[57,-3]],[[27235,65072],[0,-419]],[[27235,64653],[-7,0],[-1,-95],[-63,9]],[[27164,64567],[0,86],[-11,0]],[[27051,49122],[137,1]],[[27188,49123],[-1,-357]],[[27050,48764],[1,358]],[[26285,64654],[112,1]],[[26397,64655],[1,-101],[16,0],[0,-51]],[[26414,64503],[0,-50],[-16,-1],[0,-152]],[[26398,64300],[-16,0]],[[26382,64300],[0,50],[-97,0]],[[26285,64350],[0,227]],[[26285,64577],[0,77]],[[26407,63025],[70,-14]],[[26515,63001],[-8,-366]],[[26507,62635],[-71,19]],[[26436,62654],[0,20],[-26,5]],[[26410,62679],[4,140],[2,158],[-9,-5],[0,53]],[[22020,51423],[27,1]],[[22047,51424],[115,4]],[[22162,51428],[53,0]],[[22215,51428],[-1,-624]],[[22020,50798],[0,625]],[[26675,56748],[13,31]],[[26688,56779],[16,47],[7,-18],[28,-12],[17,41]],[[26756,56837],[10,-58]],[[26766,56779],[-7,-59],[9,-22],[9,-64],[17,-65]],[[26794,56569],[-20,-32],[-21,37],[-27,-55],[-11,-2]],[[26687,56565],[-7,12],[8,77],[-2,55],[-11,39]],[[27145,63680],[13,-2],[0,84],[13,-2]],[[27171,63760],[79,-8]],[[27282,63701],[-3,-255]],[[27279,63446],[-42,-1],[0,-34],[-21,3],[-1,-34],[-32,4],[0,-69],[-32,4]],[[27151,63319],[1,103],[-11,1],[4,257]],[[22495,50831],[74,376],[2,5]],[[22571,51212],[3,-73],[79,-2]],[[22653,51137],[-5,-28],[36,-153]],[[22684,50956],[-129,-395]],[[26781,64008],[0,-18],[27,-4],[-1,-66],[51,-10]],[[26857,63825],[-3,-176]],[[26854,63649],[-114,20]],[[26740,63669],[-1,118],[-21,0],[0,232]],[[27236,65330],[26,0],[0,83],[54,0],[0,85],[27,1]],[[27343,65499],[1,-248]],[[27344,65251],[0,-179]],[[27344,65072],[-109,0]],[[27235,65072],[1,258]],[[22216,57816],[11,-31],[1,-33],[10,-21],[-1,-113],[9,-24],[-2,-77],[17,-42]],[[22261,57475],[-1,-11],[-44,1],[1,-52],[-9,1],[4,-51],[-68,-1]],[[22144,57362],[0,34],[-15,17],[0,103],[-3,101],[-44,0],[0,101]],[[23855,68792],[68,0]],[[23923,68792],[0,-84],[67,0]],[[23990,68708],[0,-320]],[[23990,68388],[-2,0]],[[23988,68388],[-100,-1]],[[23888,68387],[-33,0]],[[23855,68387],[0,405]],[[24186,56588],[29,3]],[[24215,56591],[78,2]],[[24293,56593],[0,-101],[-7,0],[0,-216]],[[24286,56276],[1,-102]],[[24287,56174],[-99,4]],[[24188,56178],[-3,41],[2,61]],[[24187,56280],[-1,38],[-16,68],[-2,32],[-15,68],[-6,0],[1,99],[38,3]],[[26501,54389],[17,90],[19,38],[14,12]],[[26551,54529],[65,-3]],[[26616,54526],[2,0],[0,-198]],[[26618,54328],[-1,-105]],[[26617,54223],[-98,3]],[[22019,53128],[0,-439]],[[21783,52684],[0,438]],[[23483,68285],[137,0]],[[23620,68285],[0,-303]],[[23620,67982],[-135,0]],[[23485,67982],[-2,0]],[[22406,64306],[1,10]],[[22407,64316],[122,-1]],[[22529,64315],[2,0]],[[22531,63910],[-125,1]],[[22406,63911],[0,395]],[[27253,58842],[18,34],[20,14],[37,-7],[8,17]],[[27336,58900],[8,-57],[-1,-45],[-10,-117],[-19,-95]],[[27314,58586],[-9,60],[-54,-37]],[[27251,58609],[1,97],[-3,51],[4,85]],[[23702,60755],[0,135],[2,169]],[[23826,60976],[-1,-101],[6,-1],[-1,-197]],[[23830,60677],[-128,10]],[[21494,57389],[103,0]],[[21641,56882],[-26,0]],[[21494,56883],[0,506]],[[18433,72761],[19,-134],[-2,-90],[6,-35],[-2,-45],[15,-72],[21,-37],[15,22],[45,23],[40,-44],[5,-55],[17,-3],[18,-50],[18,-4],[19,15],[27,0]],[[18694,72252],[1,-376],[19,-11],[10,-47],[19,-17],[23,0],[0,-250],[37,-1]],[[18803,71550],[14,-24],[-11,-57],[13,-42],[29,-20],[0,-32]],[[18848,71375],[-30,18],[-10,-47],[0,-181],[2,-15],[-43,0]],[[18767,71150],[-65,-1],[-18,-61],[-14,7],[-20,-26],[9,-51],[-11,-7],[-15,-41],[-12,7]],[[18621,70977],[1,104],[4,24],[-7,51],[7,35],[-8,60],[-25,0],[0,50],[-35,0],[0,157],[-72,-3],[0,402],[-73,3],[0,359],[-16,3],[-8,122]],[[18389,72344],[4,77],[-10,80],[24,23],[4,31],[1,127],[-7,38],[18,10],[10,31]],[[23859,61822],[1,161],[4,225],[-1,47]],[[23863,62255],[0,17]],[[23863,62272],[124,-17]],[[23984,61981],[-2,-190]],[[23982,61791],[-62,7],[0,-34],[-62,7]],[[23858,61771],[1,51]],[[21761,56325],[0,557]],[[18058,71256],[140,0]],[[18198,71256],[7,-36],[-17,-160],[2,-85],[11,-14],[10,-52],[3,-50],[-4,-39],[10,-26],[-8,-42],[-11,-14],[7,-75],[11,-44],[-14,-86],[14,8],[18,-13],[7,-64],[25,-48],[16,1]],[[18285,70417],[0,-1]],[[18166,70122],[-12,21],[-9,-13],[2,-41],[-15,-35],[-19,-82],[-19,-26],[-13,12],[-3,-58],[-24,-42],[-5,36],[-14,22],[-13,60],[-27,5]],[[17995,69981],[6,48],[-8,36],[18,37],[1,48],[-19,74],[18,89],[25,1],[7,44],[-13,54],[6,49],[-19,27],[-4,54],[9,58],[-17,33],[2,49],[19,7],[-1,79],[-6,30],[13,24],[1,116],[13,65],[-7,69],[12,3],[10,123],[-3,58]],[[17129,57476],[10,-1],[0,732],[-1,234],[5,34],[-10,0],[5,34],[0,101]],[[17138,58610],[274,-2],[255,-2],[0,18],[24,1]],[[17691,58625],[66,-215],[70,-234],[147,-492]],[[18112,56871],[1,-49],[-25,-65],[-1,-19],[-17,-21],[-10,-40],[-27,-38],[-4,-28]],[[18029,56611],[-245,-2],[0,-51],[-333,-1],[-117,1],[0,-34],[-79,-1],[-3,17],[-41,1],[-1,17],[-51,-1],[0,-52],[-14,-20],[-1,-54],[-12,-1],[-5,-62]],[[17127,56368],[-31,88]],[[17096,56456],[-5,34],[10,55],[10,-2],[15,169],[9,143],[-2,58],[-4,255],[0,308]],[[26932,56099],[15,13]],[[26947,56112],[-4,-15],[8,-59],[-7,-44],[15,-23],[-5,-16],[5,-57],[13,-55],[-1,-17],[13,-59]],[[26984,55767],[-17,-49]],[[26967,55718],[-8,-1]],[[26959,55717],[-19,34],[-16,1],[-10,38],[-2,48],[-9,40],[-18,185]],[[26885,56063],[9,4],[9,44],[11,-13],[11,24],[7,-23]],[[12202,85643],[15,-71],[0,-46],[-10,29],[-5,88]],[[12100,86471],[95,-444],[97,-5]],[[12292,86022],[18,-76],[73,-38],[5,-66],[32,-73],[24,0],[29,-108],[-6,-69],[20,-15]],[[12487,85577],[-204,4],[21,-108],[-5,-68]],[[12299,85405],[-7,-39],[1,-58],[-35,132],[-8,177],[-8,92],[-21,135],[-32,116],[-36,37],[-5,-16],[28,-38],[4,-41],[17,-39],[20,-131],[-15,11],[-34,140],[-22,36],[-22,10],[41,-92],[13,-85],[17,-29],[-7,-97],[9,-88],[13,-23],[-5,-24],[27,-124],[3,-55],[25,-139],[2,-32],[-14,11],[27,-204],[9,-85],[1,-69],[-12,8],[-1,-61],[12,-64],[-29,23],[-19,32],[-14,-4],[-18,43],[-29,150]],[[11885,85922],[6,29],[-2,209],[30,-19],[18,19],[19,71],[-1,39],[-32,47],[45,48],[68,28],[64,78]],[[24997,69462],[56,-1],[0,-104]],[[25053,69357],[0,-405]],[[25053,68952],[-74,5],[-99,-1]],[[24880,68956],[-131,0]],[[24749,68956],[0,406]],[[5524,80844],[-1,36],[13,24],[20,-25],[-9,-59],[-19,-15],[-4,39]],[[5485,80904],[12,85],[-11,46],[31,-2],[4,-99],[-27,-38],[-9,8]],[[5450,80763],[21,-45],[-1,-34],[-23,-4],[3,83]],[[5429,81185],[17,-21],[5,49],[17,46],[5,-22],[-8,-58],[9,-13],[1,-44],[-10,-61],[13,-30],[-7,-19],[-17,22],[-2,-21],[-20,8],[-3,164]],[[5385,80755],[21,25],[11,-30],[-20,-26],[-12,31]],[[5377,81028],[9,39],[23,41],[5,-36],[-23,-38],[-9,-58],[-5,52]],[[5303,81352],[14,11],[5,-42],[-19,31]],[[5265,80882],[33,98],[15,27],[-5,18],[-22,0],[-4,76],[22,50],[27,-44],[-1,38],[-13,52],[30,-13],[18,114],[12,-23],[-2,-43],[-9,-2],[-5,-75],[12,-18],[0,33],[13,1],[-4,-60],[-11,-37],[-22,12],[-1,-45],[-28,-71],[-18,-24],[-31,-141],[-6,77]],[[5238,81460],[22,42],[36,-14],[-1,-78],[-50,12],[-7,38]],[[5096,81334],[16,74],[25,25],[18,-23],[-2,-46],[10,5],[12,47],[15,-32],[26,-26],[26,25],[7,-66],[-9,-60],[-14,40],[-22,3],[-14,23],[-3,40],[-10,-12],[0,-69],[11,-20],[11,-87],[-11,-60],[-36,35],[-10,59],[-18,-18],[-18,-90],[4,58],[-10,43],[0,104],[-4,28]],[[4937,81216],[27,3],[-4,-71],[-26,47],[3,21]],[[4863,81217],[10,31],[36,8],[-9,-51],[-37,-10],[0,22]],[[4804,81100],[4,51],[17,20],[25,-19],[12,-29],[35,-42],[6,-41],[-30,44],[-23,-57],[-28,74],[-11,-38],[-7,37]],[[4656,80881],[30,66],[26,-27],[0,-83],[-11,-53],[-13,-21],[-27,58],[-5,60]],[[4545,80324],[1,51],[68,-54],[19,-39],[26,0],[18,-28],[-20,-23],[-10,-33],[-22,40],[-17,-9],[-31,37],[-18,-29],[-22,57],[8,30]],[[4451,81463],[14,-1],[-5,-38],[-9,39]],[[3979,80040],[12,22],[16,-18],[-21,-37],[-7,33]],[[5643,83066],[0,-60],[-44,0],[0,-101],[-63,0],[0,-101],[-87,0],[0,-101],[-87,0],[0,-202],[27,0],[0,-404],[-18,0],[0,-101],[86,0],[1,-289]],[[5458,81707],[-17,-50],[-32,-30],[2,52],[24,4],[-1,40],[-10,4],[2,111],[18,72],[-29,39],[-28,12],[-13,-18],[3,-45],[-12,-21],[-13,22],[-25,-13],[-9,-82],[-35,-74],[-26,-20],[-37,28],[-6,-29],[11,-44],[-20,-81],[1,-31],[-21,-37],[-12,105],[-10,13],[-14,-37],[-11,14],[-18,-31],[31,-13],[-2,-68],[-32,-10],[-16,25],[5,39],[-13,24],[-22,-22],[-19,-90],[-61,-85],[-26,2],[-11,29],[-26,-29],[-13,4],[10,156],[29,96],[1,46],[-15,16],[-31,-2],[-24,-29],[-24,-101],[4,-129],[-40,-140],[-7,-12],[-14,-85],[-21,36],[-19,-12],[13,-65],[10,-17],[1,-56],[-25,-38],[-19,33],[0,45],[-16,15],[-13,-60],[10,-49],[-17,-47],[-14,27],[-32,-8],[-16,18],[-14,74],[32,6],[-21,47],[-8,104],[-21,56],[-11,7],[-16,-33],[-10,-65],[7,-27],[14,0],[18,-70],[-11,-46],[14,-95],[0,-52],[-22,30],[-20,-19],[3,-26],[-17,-30],[-18,-7],[-22,28],[-16,59],[4,36],[-13,56],[-21,37],[-31,-25],[-10,-56],[49,-85],[4,-31],[-50,-111],[-24,-21],[-20,-33],[16,-56],[27,2],[9,24],[22,-50],[13,-83],[-26,6],[8,34],[-17,6],[-10,-28],[-16,22],[-17,62],[-25,-39],[2,-69],[-18,-1],[-28,-50],[-23,18],[-37,10],[-45,-5],[-34,-14],[-41,-40],[-29,-71],[-4,-69],[-29,-53],[-51,-33],[-29,3],[-28,28],[-9,30],[-9,74],[-10,30],[-1,55],[8,29],[44,41],[14,25],[23,110],[19,110],[-1,29],[22,54],[14,13],[25,-46],[38,39],[25,49],[25,0],[37,81],[34,20],[36,-14],[31,5],[1,-37],[28,-72],[9,-61],[-5,-50],[27,24],[-8,52],[2,37],[30,-30],[-15,42],[2,77],[-10,109],[32,46],[26,21],[42,-15],[21,14],[10,69],[-16,4],[4,28],[18,10],[7,38],[18,-4],[26,99],[3,-32],[15,-20],[21,48],[-5,83],[-20,-9],[27,68],[64,206],[33,52],[23,62],[19,13],[27,42],[25,68],[27,14],[35,39],[37,20],[89,70],[30,-9],[10,18],[45,5],[10,-10],[-20,-27],[-1,-47],[14,-2],[-3,-49],[-29,-18],[-3,-85],[38,-98],[11,22],[27,-39],[4,19],[-29,53],[-3,85],[-6,32],[26,-28],[57,3],[7,-86],[23,7],[26,-36],[7,22],[-14,40],[27,15],[-56,89],[-32,36],[1,58],[-16,-7],[39,166],[15,123],[11,56],[23,44],[36,96],[18,13],[40,74],[30,81],[82,96],[41,74],[35,39],[68,106],[17,42],[18,-52]],[[3880,79918],[22,34],[33,-11],[24,18],[5,-24],[-9,-45],[-26,-13],[-47,27],[-2,14]],[[3807,79887],[60,24],[9,-35],[-15,-32],[-13,37],[-34,-4],[-7,10]],[[3781,79848],[17,29],[7,-36],[-18,-14],[-6,21]],[[3751,80090],[13,56],[14,-15],[18,18],[12,-21],[-22,-33],[13,-48],[30,0],[1,-41],[-23,3],[-18,-79],[-23,24],[-2,78],[16,35],[-9,20],[-16,-21],[-4,24]],[[3635,79967],[5,36],[28,54],[30,-6],[3,-58],[20,6],[14,-15],[8,-44],[13,13],[-2,-41],[-26,-36],[-12,11],[-18,-45],[-6,28],[-25,1],[-17,-20],[-18,91],[3,25]],[[3608,79782],[7,15],[27,-33],[-32,-11],[-2,29]],[[7594,84711],[8,45],[20,-13],[-8,-73],[-15,-17],[-5,58]],[[7543,85532],[12,28],[21,-40],[-33,-2],[0,14]],[[7464,85521],[14,55],[18,-28],[23,-4],[-33,-33],[-22,10]],[[7168,84530],[29,89],[15,6],[26,-66],[5,20],[-21,65],[6,54],[9,10],[27,-25],[21,19],[-29,54],[16,56],[29,-31],[15,4],[-14,56],[12,17],[20,-20],[14,45],[-18,6],[-13,33],[20,3],[22,67],[34,18],[-12,35],[-3,68],[27,66],[7,-31],[53,51],[7,-7],[-12,-118],[-13,-18],[-26,-103],[5,-84],[36,11],[2,69],[22,-9],[21,-71],[20,48],[12,-33],[-17,-117],[9,-22],[9,72],[27,47],[7,-25],[-3,-115],[-30,-89],[-32,23],[-11,81],[-21,-26],[13,-99],[-22,-20],[-39,13],[-16,-54],[-8,36],[2,74],[-10,2],[-9,-114],[-8,-24],[-31,-17],[2,-37],[-16,-22],[-45,-13],[-86,76],[-21,-13],[-15,29]],[[6962,82933],[31,45],[8,-48],[-37,-9],[-2,12]],[[6905,82759],[20,62],[19,20],[11,-11],[25,17],[5,-40],[19,-37],[36,16],[-2,-37],[-19,-31],[-46,-6],[-32,-13],[-32,25],[-4,35]],[[6789,83718],[20,17],[4,76],[18,75],[25,34],[5,44],[15,-8],[34,70],[33,36],[39,-15],[29,1],[0,-112],[26,-57],[4,45],[17,53],[-18,48],[6,25],[53,-14],[-3,35],[-52,44],[-19,-4],[-1,127],[31,61],[29,29],[20,-12],[22,-56],[6,-133],[15,13],[9,77],[-5,55],[35,-38],[7,47],[-37,36],[-21,58],[7,44],[17,-6],[51,-87],[9,4],[30,-41],[11,10],[-31,75],[-20,34],[-7,44],[17,0],[30,-58],[29,12],[41,-29],[7,49],[36,15],[-8,-63],[-39,-106],[-7,-83],[19,-36],[0,95],[16,43],[16,-49],[5,46],[17,32],[5,41],[14,10],[10,-31],[22,72],[17,8],[-4,-45],[28,-16],[-11,-38],[-11,20],[-18,-15],[19,-36],[-5,-49],[19,22],[11,-51],[27,1],[-24,-53],[-16,33],[-24,2],[-15,-48],[16,-9],[-8,-53],[26,-8],[-26,-89],[23,17],[13,47],[5,-35],[47,-4],[-3,-41],[-36,-78],[-13,-110],[-38,13],[-2,39],[-10,-41],[-23,42],[-17,-6],[-23,49],[-15,-13],[-24,19],[-8,-46],[27,1],[15,-17],[45,-87],[-8,-70],[-23,-52],[-11,36],[-19,-50],[-19,30],[-6,38],[-21,18],[-20,-12],[-17,-37],[29,2],[20,-49],[-38,-53],[-34,12],[-4,-20],[25,-34],[14,13],[35,1],[22,-43],[-11,-28],[-24,-8],[-34,-33],[-8,11],[-19,-29],[3,-49],[-27,-50],[-13,20],[7,34],[-23,50],[7,47],[27,62],[-8,24],[-15,-21],[-34,-105],[-3,-24],[-22,32],[-22,-10],[-5,-35],[26,-6],[10,-63],[-16,-61],[-25,-20],[1,-70],[-25,-41],[-12,13],[-23,-82],[-19,-30],[-18,21],[-31,-20],[22,116],[11,11],[26,71],[24,31],[-2,37],[-33,-23],[3,52],[22,102],[29,52],[-7,30],[-15,-45],[-34,-61],[-26,-112],[-24,-59],[-14,-11],[-5,-44],[-19,-30],[-4,84],[-26,58],[-33,27],[3,100],[-4,106],[-13,83],[-11,32],[-23,20],[-27,5],[14,30],[-15,37],[5,23]],[[6782,82633],[27,101],[51,97],[21,-4],[16,-54],[-12,-23],[-55,-73],[-29,-79],[-19,35]],[[6519,81925],[26,41],[5,38],[13,22],[8,-32],[-6,-43],[5,-68],[-7,-33],[-36,13],[-8,62]],[[6240,82171],[5,47],[14,25],[13,-59],[-13,-63],[-19,50]],[[6921,85216],[136,0],[0,101],[50,0],[0,134],[106,0]],[[7213,85451],[-26,-13],[-14,-118],[-12,-39],[-30,-25],[-11,-55],[-24,-33],[-48,0],[-15,-17],[-4,-94],[-12,-33],[-27,1],[-5,-20],[10,-79],[11,-32],[-27,-36],[-20,15],[-2,-45],[20,-46],[-11,-81],[-21,-30],[-6,-33],[9,-24],[-23,0],[-14,-52],[-26,66],[-9,-7],[5,-57],[-4,-40],[-21,-3],[-12,-43],[-17,16],[0,27],[-20,-1],[-4,-39],[-22,-24],[-23,31],[-28,-17],[-35,-69],[15,-52],[-9,-51],[-40,-44],[-28,-2],[1,-53],[14,-25],[-6,-40],[-20,-16],[-36,59],[-10,30],[-20,-20],[-5,-63],[1,-69],[-26,-27],[-3,-97],[-65,-7],[-21,24],[-2,-74],[8,-71],[-20,0],[-12,37],[-21,3],[-4,-39],[-32,-27],[-39,-92],[-15,-12],[-5,-44],[13,-11],[47,64],[4,-50],[-6,-53],[-15,-7],[0,-31],[18,-38],[-6,-26]],[[6350,83478],[-32,-5],[-78,8],[0,85],[22,-1],[0,68],[14,-1],[1,50],[22,-2],[-4,36],[14,-2],[-2,84],[14,-1],[0,52],[24,17],[1,34],[45,0],[21,-15],[0,34],[17,20],[0,33],[33,16],[0,-52],[9,1],[14,53],[14,0],[-7,34],[-15,-1],[0,46],[37,1],[5,83],[16,-1],[-1,69],[43,2],[1,30],[25,1],[0,52],[33,6],[-1,200],[14,-1],[1,71],[-15,-1],[0,100],[31,0],[0,50],[46,0],[-1,33],[15,0],[-1,30],[39,0],[0,17],[39,-1],[0,33],[44,0],[0,33],[29,0],[10,68],[22,-2],[-1,50],[15,0],[-1,224]],[[6225,82357],[9,35],[3,-82],[-10,-1],[-2,48]],[[6080,82757],[21,48],[48,-3],[25,-54],[-35,23],[-16,-26],[-43,-6],[0,18]],[[5919,82533],[19,25],[11,-57],[-9,-11],[-21,43]],[[5642,81925],[8,64],[19,12],[27,-58],[-8,-18],[-21,37],[-25,-37]],[[5573,81984],[16,-49],[-27,12],[11,37]],[[5506,81836],[8,67],[10,10],[11,-62],[-29,-15]],[[5643,83066],[30,-30],[31,19],[8,59],[-13,47],[-2,46],[15,122],[29,108],[41,130],[24,62],[22,37],[40,41],[21,52],[22,87],[14,15],[26,62],[30,25],[8,-74],[18,-15],[4,41],[-10,105],[-23,-2],[-6,34],[2,95],[9,59],[25,409],[14,42],[38,16],[12,53],[-20,-9],[-34,77],[-3,62],[9,97],[20,106],[27,33],[28,97]],[[6173,85487],[4,64],[13,38],[-20,0],[-11,-32],[-8,-68],[-36,-49]],[[6115,85440],[1,280],[-22,0],[0,202],[47,0],[0,101],[93,0],[0,101],[27,0],[0,101],[47,0],[0,100],[95,0],[0,101],[46,0],[0,1413]],[[6449,87839],[293,0],[192,0],[228,0]],[[7162,87839],[0,-101],[12,0],[0,-404],[-36,0],[0,-403],[-36,0],[0,-404],[-35,0],[0,-101],[-48,0],[0,-201],[-47,0],[0,-101],[-81,0],[0,-202],[-93,0],[0,-202],[15,0],[0,-403],[14,0],[0,-101],[94,0]],[[6350,83478],[-22,-38],[-2,-49],[-26,-44],[-8,-32],[2,-42],[-32,14],[-31,-28],[-4,-70],[-12,-12],[-19,75],[-8,-53],[-27,-42],[-11,-53],[-24,-6],[5,-50],[-17,-27],[-25,43],[-24,67],[-22,-16],[0,-51],[11,-5],[1,-36],[-29,-10],[-13,-67],[6,-32],[18,-6],[5,-52],[-36,-4],[-24,-15],[-17,77],[-51,-38],[-18,-51],[-16,-3],[-9,-49],[19,-1],[27,25],[20,-17],[6,-54],[-16,-47],[-43,44],[-23,11],[-5,-70],[-33,6],[-23,21],[-20,-33],[-27,-88],[2,-44],[47,-20],[32,-36],[-3,-29],[-32,-42],[1,-23],[18,-4],[25,31],[16,-7],[-55,-78],[-23,-63],[1,-52],[-13,50],[-10,-17],[16,-66],[-6,-50],[-7,39],[-10,-2],[-2,-53],[-25,80],[0,95],[-19,-60],[8,-73],[-4,-67],[-24,-6],[3,58],[-35,1],[-16,-80],[-25,-9],[-75,-43],[-29,-22],[-7,-22],[-3,-74],[-17,46],[5,80],[-23,-19],[10,-30],[1,-104],[-16,-71],[6,-46],[-7,-31]],[[9331,87212],[28,-14],[12,-44],[-27,-9],[-13,67]],[[9232,87245],[16,14],[58,-26],[-3,-31],[-21,-10],[-50,53]],[[8867,87809],[26,35],[27,3],[15,-16],[-18,-53],[-50,31]],[[8817,87545],[4,86],[28,16],[21,-89],[-11,-44],[-37,-10],[-5,41]],[[8816,87079],[2,14],[43,47],[1,-36],[-40,-59],[-6,34]],[[8698,86532],[8,21],[3,71],[23,12],[-3,42],[21,54],[16,7],[-3,41],[30,34],[9,30],[43,75],[22,118],[27,44],[-3,40],[10,71],[27,34],[4,-43],[24,2],[-17,-51],[9,-17],[24,28],[8,-22],[-11,-37],[-62,-118],[-49,-129],[-8,-80],[-33,-60],[30,-57],[-19,-42],[-23,-8],[-22,15],[-17,-57],[-9,6],[-45,-47],[-14,23]],[[8692,87068],[44,270],[11,-41],[12,13],[-4,66],[44,84],[0,-54],[-12,-32],[-3,-82],[-20,-37],[20,-42],[-24,-97],[2,-46],[-17,-104],[-24,45],[-3,25],[-25,7],[-1,25]],[[8672,87628],[15,31],[17,-19],[17,-48],[-24,-45],[-25,81]],[[8549,88444],[115,0],[235,0],[0,52],[73,0],[0,403],[-5,0],[0,404],[-5,0],[0,101],[155,0],[-4,302],[0,404],[-3,117],[-13,0],[0,246]],[[9097,90473],[43,25],[56,-7],[8,39],[267,0],[0,-101],[160,0],[0,-17],[143,0],[260,0],[2,-88],[7,-39],[27,-14],[-10,-31],[2,-43],[-18,-61],[-31,-59],[43,-68],[12,-5],[-25,-76],[-4,-42],[-16,-16],[19,-42],[25,0],[19,-23],[5,19],[27,-12],[11,62],[14,4],[6,65],[60,-35],[53,0],[0,-101],[52,0],[0,-101],[42,0],[0,-403],[-11,0],[0,-54],[51,-1],[0,-248],[231,0]],[[10627,89000],[2,-971],[-1,-789]],[[10628,87240],[-59,0],[0,51],[-161,0],[0,100],[-301,0],[-90,0],[-195,-579],[0,-44]],[[9822,86768],[-39,39],[-45,-26],[-64,-120],[-46,-115],[6,65],[36,103],[62,117],[46,2],[-16,66],[-49,48],[-8,25],[-10,-82],[-26,84],[-26,30],[-17,-9],[-16,27],[-71,19],[9,28],[38,23],[-42,33],[-19,-6],[-2,25],[37,156],[-15,15],[-13,-36],[-29,-22],[-1,-57],[-20,-66],[-39,12],[-70,97],[1,31],[-26,36],[-39,26],[-41,-35],[-22,27],[13,29],[31,32],[25,74],[-14,10],[-18,-49],[-79,-93],[-29,-23],[-38,5],[1,-54],[60,27],[11,-24],[2,-53],[-17,2],[-28,-37],[-18,6],[-41,-38],[-41,-77],[-12,2],[-12,48],[47,77],[-37,-12],[-17,11],[-1,54],[23,83],[13,27],[18,2],[20,-31],[24,17],[22,41],[38,13],[57,58],[42,20],[-9,25],[-19,-2],[1,71],[-11,-49],[-19,-20],[1,30],[25,65],[1,21],[-33,-58],[-45,-47],[-19,-3],[-4,30],[63,112],[-6,38],[-29,-60],[-38,-14],[-12,26],[-15,-49],[-20,-14],[-54,13],[-10,58],[27,19],[11,-9],[18,25],[40,16],[29,28],[23,65],[-25,2],[-14,-46],[-23,-19],[-45,-2],[-18,68],[-12,3],[-17,-69],[-21,-8],[-4,59],[16,26],[17,-6],[-11,44],[-3,55],[13,34],[26,114],[96,6],[-7,38],[-91,-5],[-21,-63],[-27,-26],[-21,-77],[-31,-48],[-23,12],[20,36],[-10,113],[-12,53],[18,30],[-22,10],[-14,-23],[-1,-51],[12,-63],[-14,-63],[1,-41],[-13,-15],[-26,48],[-2,-67],[-27,-45],[-21,22],[0,52],[-11,19],[-7,-73],[-9,15],[4,129],[9,62],[-15,11],[-17,-130],[9,-111],[-4,-29],[-19,-9],[1,49],[-27,34],[-7,-46],[16,-65],[-13,-8],[-38,16],[-34,-48],[-28,9],[-5,31],[14,95],[42,151],[1,53],[49,123],[16,81],[-6,18],[-73,-211],[-1,-35],[-18,-58],[-8,8],[-8,69],[-12,-1],[-3,-81],[-11,-54],[-18,-42],[-3,-64],[-16,-68],[-21,27],[-7,-44],[24,-28],[-5,-91],[10,-8],[19,85],[37,6],[11,-22],[4,-91],[-14,-45],[-31,-32],[-22,-76],[1,-63],[21,20],[17,75],[30,44],[30,-89],[0,-44],[10,-43],[-23,-192],[-26,0],[-9,52],[-19,9],[1,-36],[-27,-44],[0,-17],[28,14],[23,-27],[61,-124],[26,-85],[-15,-77],[-13,-26],[-34,-35],[-17,16],[-14,-18],[-29,-6],[9,51],[-26,67],[9,60],[-17,63],[-16,-126],[0,-62],[-12,-41],[-19,69],[-20,-75]],[[8515,86711],[6,220],[0,336],[-28,0],[2,67],[0,303],[-25,0]],[[8470,87637],[2,135],[74,0],[0,370],[3,302]],[[22518,67986],[99,-1]],[[22617,67985],[1,-409]],[[16570,69317],[142,2]],[[16712,69319],[180,-1]],[[16892,69318],[22,-13],[1,-26],[20,33],[18,-34],[15,-3]],[[16968,69275],[5,-22],[0,-85],[-19,-3],[-6,-32],[9,-78],[-3,-27],[-20,1],[-28,-49],[-14,0],[4,-46],[45,-41],[10,-52],[-19,-68],[3,-64],[-16,-25],[-4,-51],[7,-41],[-17,-46],[-8,-72],[5,-18],[69,1]],[[16971,68457],[2,-252]],[[16973,68205],[-101,1],[-64,9],[0,-102],[-234,-2]],[[16574,68111],[1,405]],[[16575,68516],[1,601],[-6,0],[0,200]],[[26717,63148],[2,136]],[[26719,63284],[117,-20]],[[26836,63264],[-5,-272],[31,-8]],[[26862,62984],[-3,-100]],[[26859,62884],[-71,13],[1,31],[-76,12]],[[26713,62940],[4,208]],[[27344,65072],[0,-249]],[[27344,64823],[0,-171],[-24,1]],[[27320,64653],[-85,0]],[[26404,53118],[72,-1]],[[26476,53117],[0,-126],[11,-74],[-2,-268]],[[26485,52649],[-55,11]],[[26430,52660],[-27,5]],[[31239,38121],[12,14],[22,-23]],[[31273,38112],[17,-20]],[[31290,38092],[-5,-37],[-20,14]],[[31265,38069],[-14,-8]],[[31251,38061],[-20,35]],[[31231,38096],[8,25]],[[27523,61437],[2,139],[6,-11],[24,62]],[[27555,61627],[36,99],[24,-17],[46,108],[17,183],[8,35],[12,-33],[-3,-33],[17,-21],[5,29],[10,-29]],[[27727,61948],[2,-51],[-8,-34]],[[27721,61863],[-14,-121],[3,-65],[-12,-60],[-22,-87],[4,-45]],[[27680,61485],[-10,-20],[-25,-81],[-7,-56],[6,-29],[-10,-50]],[[27634,61249],[-41,-9],[-17,-23],[-27,12],[-27,79],[1,129]],[[31178,38330],[16,-72]],[[31194,38258],[-12,-19]],[[31182,38239],[-13,76],[9,15]],[[23087,71221],[30,0],[0,102]],[[23117,71323],[206,-3],[75,2]],[[23398,71322],[3,-102],[0,-304]],[[23401,70916],[2,-100],[0,-205]],[[23230,70612],[-139,1]],[[23091,70613],[1,203],[-5,0],[0,405]],[[26336,57669],[83,0]],[[26419,57669],[54,-1]],[[26473,57668],[-14,-41],[20,-76],[-10,-39],[1,-54],[13,-7],[-3,-86],[-15,-92]],[[26465,57273],[-9,-53]],[[26456,57220],[-2,18]],[[26454,57238],[1,24],[-17,30],[0,62],[-17,104],[-30,58],[-55,-2]],[[26336,57514],[0,155]],[[23026,73018],[144,-3],[109,1]],[[23279,73016],[0,-177],[3,0]],[[23282,72839],[0,-101]],[[25055,63285],[21,-14],[1,-170],[31,-1]],[[25108,63100],[1,-359],[-32,4]],[[25077,62745],[-109,0],[-1,204]],[[24967,62949],[0,136],[15,0],[0,50],[15,-1],[0,92],[8,-24],[12,35],[14,5],[16,58],[8,-15]],[[25967,64717],[72,4]],[[26039,64721],[1,-52],[11,0]],[[26051,64669],[1,-406]],[[26052,64263],[-63,-2]],[[25989,64261],[-21,-1],[-2,406]],[[19527,61757],[189,0],[1,195]],[[19717,61952],[244,1]],[[19961,61953],[0,-427],[-37,0]],[[19924,61526],[0,35],[-139,-1],[8,-20],[5,-68],[21,0],[20,-43],[-2,-77],[-5,0]],[[19832,61352],[-263,3],[-37,-2]],[[24684,53433],[80,1]],[[24764,53434],[1,-407]],[[24765,53027],[-25,-1]],[[24684,53026],[0,407]],[[21756,73450],[0,101],[182,0],[0,-102],[36,0]],[[21974,73449],[0,-202],[11,0],[0,-406],[11,0],[0,-203]],[[21996,72638],[-108,0]],[[21888,72638],[-108,1]],[[21780,72639],[1,202],[-13,1],[0,406],[-12,0],[0,101]],[[24230,64550],[128,2]],[[24358,64552],[0,-102]],[[24358,64450],[1,-251]],[[24359,64199],[-4,18],[-59,-9]],[[24230,64202],[0,348]],[[24670,63258],[32,-1],[0,-41],[32,0],[-1,-102],[10,-1],[0,-33],[10,0],[0,-136]],[[24753,62944],[-78,2]],[[24675,62946],[3,20],[-10,115],[-11,76],[13,101]],[[26539,55178],[50,121]],[[26644,55174],[7,-25],[-25,-100],[-7,4],[-2,-61],[4,-29]],[[26621,54963],[-19,12],[-10,21]],[[26592,54996],[-10,2],[-20,42],[-23,104],[0,34]],[[31463,38060],[24,-12],[10,42]],[[31509,38021],[0,-3]],[[31509,38018],[-14,-3],[-7,-19],[-3,-60],[-8,16]],[[31477,37952],[-10,-5],[-6,57]],[[26462,67956],[0,-299]],[[26462,67657],[-1,-101],[-55,-1],[0,-18]],[[22165,62493],[151,0]],[[22316,62493],[3,1]],[[22319,62494],[0,-323],[-1,-185]],[[22318,61986],[-151,-1]],[[22163,61985],[2,508]],[[21634,73979],[103,-1],[263,0]],[[22000,73978],[0,-326],[10,0],[0,-202]],[[22010,73450],[-36,-1]],[[2682,386],[26,11],[1,-51],[-9,8],[-8,-28],[-10,60]],[[2636,452],[21,8],[-4,-21],[-13,-12],[-4,25]],[[2341,307],[11,-49]],[[2352,258],[-15,-50],[-11,47],[-13,16],[13,35],[15,1]],[[26177,64974],[108,8]],[[26285,64961],[0,-307]],[[26285,64577],[-76,-6]],[[26209,64571],[-73,-1]],[[26136,64570],[1,103]],[[26137,64673],[-1,202],[8,0],[0,99]],[[23155,62998],[69,-1],[0,102]],[[23224,63099],[63,0]],[[23287,63099],[-2,-102],[0,-171]],[[23285,62826],[-5,0],[0,-236]],[[23280,62590],[-125,1]],[[23155,62591],[1,67],[-1,340]],[[24358,64552],[1,304]],[[24359,64856],[64,0]],[[24423,64856],[32,-2],[0,-101]],[[24455,64753],[0,-304],[-11,0]],[[24444,64449],[-86,1]],[[25758,63711],[95,-1],[31,3]],[[25884,63713],[1,-296]],[[25885,63417],[-24,-3]],[[25758,63413],[0,298]],[[16062,64021],[7,-109],[25,-13],[11,-36],[-10,-13],[8,-26],[-5,-74],[-11,-25],[-9,5],[0,-51]],[[16078,63679],[-4,-34],[-16,-25],[-21,0],[-3,-50],[-11,-37],[-3,-51],[-16,2],[-12,-53],[-1,-37],[-15,-26],[-67,-1],[-7,-50],[7,-50]],[[15909,63267],[-249,1]],[[15660,63268],[-6,54],[3,73],[8,11],[-4,71]],[[15661,63477],[-5,24],[-2,118],[-8,53],[5,48],[-2,64],[-20,31],[-4,22]],[[25989,64261],[0,-100]],[[25989,64161],[-84,-3]],[[25905,64158],[-1,404]],[[22074,71224],[130,-2]],[[22204,71222],[115,-1]],[[22319,71221],[0,-404]],[[22319,70817],[-234,-1]],[[22085,70816],[-11,1],[0,407]],[[23386,58933],[25,0],[0,102],[30,0]],[[23441,59035],[59,-1]],[[23500,59034],[0,-303],[-2,0],[0,-305]],[[23498,58426],[-90,0]],[[23408,58426],[1,202],[-39,1]],[[23370,58629],[11,57],[-15,49],[0,70],[15,52],[5,76]],[[22068,68386],[15,-76],[32,7],[32,-40],[16,26],[-10,45],[-17,12],[-4,24],[13,28]],[[22230,68082],[1,-48],[13,-38],[-16,-79],[-13,-20],[1,-81],[-14,-22],[0,-36],[23,1],[9,-47],[1,-41],[16,-58],[-4,-36]],[[22247,67577],[0,-1]],[[22181,67577],[-23,0],[-2,17],[0,264],[-12,27],[-5,-43],[-3,38],[-16,-59],[-13,0],[-19,-40],[-10,27],[-28,-7],[-2,18],[-29,-26],[-21,24],[-6,-23],[-5,32]],[[21987,67826],[-14,-20],[-16,23]],[[21957,67829],[-1,152],[-7,0],[0,374]],[[21949,68355],[0,30],[119,1]],[[23290,72233],[0,-406]],[[23290,71827],[-143,1]],[[23147,71828],[0,404]],[[24749,68956],[0,-303]],[[24749,68653],[-68,-3],[-67,1],[0,101],[-34,0],[0,101]],[[24580,68853],[0,304]],[[24580,69157],[0,202]],[[21737,61990],[86,-1]],[[21823,61989],[36,0]],[[21860,61482],[-116,0]],[[21744,61482],[-7,0]],[[21737,61482],[0,508]],[[23052,73979],[303,-1]],[[23355,73978],[-1,-74],[6,-36],[18,-27],[27,16],[13,30],[1,-242],[-71,0],[1,-201]],[[23349,73444],[-73,-2]],[[23276,73442],[-219,7]],[[23057,73449],[0,201],[-4,0],[-1,329]],[[23955,58531],[60,-5]],[[24015,58526],[39,-3]],[[24054,58523],[-1,-202],[-10,1],[0,-101]],[[24043,58221],[-1,-338],[-12,-2]],[[24030,57881],[-8,6],[-27,-15],[-7,-52],[-10,11],[-1,63],[-12,-2],[-7,64],[-13,43],[-12,6],[-9,47]],[[23924,58052],[-6,11]],[[23918,58063],[1,166],[20,-1],[1,152],[14,-2],[1,153]],[[25989,71075],[0,215]],[[25989,71290],[42,-15],[35,-3],[30,7],[68,88]],[[26164,71367],[0,-594]],[[26164,70773],[-175,-1]],[[25989,70772],[0,303]],[[23982,61791],[-2,-310]],[[23980,61481],[-2,-89],[7,-1],[-2,-144]],[[23983,61247],[-122,13]],[[23855,61416],[4,279],[-1,76]],[[24054,58523],[50,-4],[0,84],[60,-3]],[[24164,58600],[-1,-84],[50,-5]],[[24213,58511],[-1,-202],[-2,-17],[-1,-186]],[[24209,58106],[-63,5]],[[24146,58111],[0,101],[-103,9]],[[28554,60453],[16,-77],[29,-85]],[[28599,60291],[7,-29],[22,11],[-1,-71]],[[28627,60202],[-5,-10],[5,-57]],[[28627,60135],[-11,-14]],[[28616,60121],[-7,9],[-15,88],[-14,49],[-7,-8]],[[28573,60259],[-3,29],[-17,15]],[[28553,60303],[-5,48],[-8,-18],[-5,34]],[[28535,60367],[-8,56],[4,18],[19,-3],[4,15]],[[24089,60088],[121,-8]],[[24210,60080],[45,-4]],[[24255,60076],[-2,-305],[-5,0]],[[24248,59771],[-181,14]],[[24067,59785],[-41,3]],[[17948,73980],[183,-2]],[[18131,73978],[13,-42],[-6,-36],[9,-25],[-12,-26],[18,-42],[-3,-24],[14,-15],[12,34],[32,-3],[10,-34],[-4,-22],[18,-74],[-12,-138],[41,-46],[17,11],[21,-44],[0,-85],[-4,-20],[25,-47],[9,8],[5,-61],[-12,-37],[10,-34]],[[18332,73176],[16,-52],[15,-21],[2,-89],[11,5],[16,-43],[19,14],[4,-34],[10,12]],[[18425,72968],[9,-16],[0,-51],[13,-21],[-3,-29],[11,-1],[8,-63],[-9,-34],[-21,8]],[[18389,72344],[-51,0],[-39,6]],[[18299,72350],[-47,0]],[[18252,72350],[8,73],[1,68],[-17,28],[3,33],[-6,107],[3,20],[-22,78],[-17,35],[-11,-2],[-11,86],[-41,-1],[-13,-33],[11,-70],[-127,-1],[0,-101],[4,0],[0,-99],[-35,0]],[[17982,72571],[0,99],[-107,-3],[0,152],[-6,17]],[[17869,72836],[0,141],[-3,101],[48,0],[0,405],[-11,0],[0,99],[69,0],[-14,23],[3,54],[19,31],[-17,56],[-17,12],[12,37],[-8,113],[10,40],[-12,32]],[[21473,55808],[144,6]],[[21617,55814],[0,-505]],[[21617,55309],[-37,1]],[[21580,55310],[-107,-3]],[[21473,55307],[0,501]],[[24411,60929],[62,-2],[-1,-102],[44,-3]],[[24516,60822],[-1,-127]],[[24515,60695],[-44,6],[0,-103],[29,-3],[-1,-101]],[[24499,60494],[-121,9]],[[24378,60503],[-30,1],[0,203],[-15,1]],[[24333,60708],[1,224],[77,-3]],[[22019,53128],[142,0]],[[22161,53128],[0,-171],[33,0]],[[22194,52957],[1,-268]],[[22195,52689],[-176,0]],[[21985,54286],[-119,4]],[[24376,60067],[2,233],[0,203]],[[24499,60494],[11,-1],[-1,-119],[5,1],[0,-68],[10,0],[-1,-64],[11,4],[5,-47],[10,8],[5,-31],[-1,-55]],[[24553,60122],[-24,-11],[-31,0],[-2,-236]],[[24496,59875],[-121,6]],[[24375,59881],[1,186]],[[21698,53784],[1,508]],[[21699,54292],[22,0]],[[21822,54291],[-1,-455]],[[21698,53674],[0,110]],[[20920,61345],[18,0],[6,-17],[35,-10],[3,-12],[61,0],[0,68],[30,1],[2,108]],[[21075,61483],[29,0]],[[21104,61483],[0,-515],[-2,-208]],[[21102,60760],[-182,0],[-1,106]],[[20919,60866],[1,102],[0,377]],[[21617,55814],[145,3]],[[21762,55817],[0,-497]],[[21762,55320],[-38,-8]],[[21724,55312],[-107,-3]],[[20566,62490],[83,0]],[[20649,62490],[1,-304],[-11,1],[-1,-82],[37,-3],[-1,-171]],[[20674,61931],[-83,-3],[1,58],[-26,0]],[[20566,61986],[0,504]],[[17579,73067],[10,-12],[-1,-43],[17,-23],[6,41],[38,45],[8,42],[17,-14],[10,-60],[-6,-24],[14,-50],[2,-66],[28,-109],[-5,-52],[14,-33],[21,3],[7,28],[7,-36],[16,18],[11,-34],[26,32],[5,66],[10,8],[-3,42],[38,0]],[[17982,72571],[6,-51],[0,-168],[65,0],[6,-52],[-10,-19],[-5,-67],[23,15],[4,-33],[-11,-1],[-8,-90],[18,-40],[24,0],[0,-202],[4,-51]],[[18098,71812],[-18,-20],[-29,43],[3,21],[-22,40],[-8,-3],[-31,54],[-34,23],[-6,-22],[-25,16]],[[17928,71964],[-12,0],[0,34],[-36,17],[-2,96],[-31,37],[-11,-4],[-8,28],[-35,46],[-17,-19],[-16,17],[-12,-23],[-23,35],[-2,-23],[-26,4]],[[17697,72209],[-16,7],[-5,57],[-11,5],[2,34],[13,32],[-12,55],[2,63],[-13,24],[-7,47],[-8,-6],[-8,88],[-15,21],[-39,153]],[[17580,72789],[-1,278]],[[22154,54789],[5,0]],[[22298,54789],[-2,-506]],[[22275,54282],[-121,3]],[[22053,55817],[1,-509]],[[22054,55308],[-43,0]],[[21906,55311],[1,506]],[[22581,58122],[22,0],[18,-37],[2,34],[7,-25],[36,-24],[6,15],[9,-26],[19,14]],[[22700,58073],[0,-556],[1,-3]],[[22701,57514],[0,-203]],[[22701,57311],[-118,0]],[[22582,57513],[0,272],[1,134],[-2,203]],[[23358,55793],[1,1]],[[23359,55794],[14,-12],[36,26]],[[23409,55808],[0,-414]],[[23409,55394],[-7,-24]],[[23402,55370],[-6,-60],[-38,1]],[[23358,55311],[0,482]],[[23144,55166],[40,-1]],[[23184,55165],[3,-26],[16,-44],[19,-2],[24,-35],[14,-40],[7,11]],[[23267,55029],[11,-39]],[[23278,54990],[0,-241],[26,-82],[15,-63]],[[23319,54604],[-175,2]],[[23144,54606],[0,560]],[[22056,64317],[79,0],[15,-17]],[[22151,63911],[-126,1]],[[22025,63912],[-1,101],[32,0],[0,304]],[[22657,64316],[127,0]],[[22784,64316],[0,-405]],[[22784,63911],[-126,0]],[[22658,63911],[-1,0]],[[23083,55333],[0,431]],[[23083,55764],[122,67]],[[23205,55831],[-1,-222]],[[23204,55609],[-1,-255],[1,-24]],[[23204,55330],[-23,1],[-12,-121],[15,-45]],[[23144,55166],[-61,4]],[[23083,55170],[0,163]],[[23098,52995],[20,25],[34,85],[20,28],[59,3]],[[23231,53136],[11,-17],[17,5],[8,-54],[-13,-59],[12,-70],[6,4]],[[23204,52868],[-86,-48]],[[23118,52820],[-2,41],[-10,62],[4,24],[-12,48]],[[22730,56855],[0,253]],[[22730,57108],[59,0]],[[22789,57108],[0,-152],[84,-1],[6,-50],[26,0]],[[22905,56905],[0,-186]],[[22905,56719],[-9,0],[-1,-118]],[[22895,56601],[-164,0]],[[22731,56601],[-1,254]],[[28101,62058],[9,-2],[19,41],[9,72],[6,12]],[[28144,62181],[22,-76],[7,-4],[3,-80],[22,-36]],[[28198,61985],[-43,-115],[-24,-89],[-15,13]],[[28116,61794],[-30,111]],[[28086,61905],[7,64],[-5,23],[3,41],[10,25]],[[25644,57317],[55,-124],[32,-34]],[[25731,57159],[11,6],[8,32],[13,-6],[3,-30],[14,29],[13,-2],[5,-34]],[[25798,57154],[-9,-204],[0,-77]],[[25789,56873],[-147,11]],[[25642,56884],[2,433]],[[28045,61665],[9,63]],[[28054,61728],[5,-30],[-2,-46],[4,-50],[22,-105],[17,-5]],[[28100,61492],[-22,-103]],[[28078,61389],[-82,109]],[[27996,61498],[30,66],[3,35],[16,66]],[[5096,90290],[0,303],[53,0],[0,100],[-7,0],[0,202],[54,0],[0,101],[107,0],[1,101],[49,0],[0,101],[55,0],[0,302],[-59,0],[-4,403],[0,404],[52,0],[0,201],[57,0],[-3,202],[0,202],[57,0],[-2,302],[-58,0]],[[6639,96096],[257,0],[276,0],[245,0],[236,0],[236,0],[231,0],[239,0],[173,0],[215,0],[194,0],[294,0],[0,582],[180,0],[194,0],[262,0],[208,0],[206,0],[342,-1]],[[10627,96677],[0,-3096]],[[10627,93581],[-26,-17],[-68,-139],[0,-28],[-22,-86],[-37,-45],[-25,-54],[-36,-19],[-8,-40],[-55,-35],[-31,31],[-58,-37],[-27,-31],[-16,-40],[-32,17],[-20,-18],[-5,-36],[-26,-30],[10,-16],[0,-70],[-11,-56],[-20,-53],[-24,-4],[-47,-40],[-16,-41],[-16,-3],[-21,-41],[-13,1],[-9,-41],[-40,-58],[10,-47],[-7,-62],[17,-53],[-23,-27],[2,-47],[-25,-36],[-17,-63],[-23,-22],[-89,41]],[[9773,92236],[-11,50],[22,56],[-24,31],[12,82],[0,43],[21,40],[1,38],[-28,44],[51,66],[4,23],[-26,34],[-81,-6],[-30,-40],[-22,-9],[-52,29],[-31,7],[-28,32],[-38,-3],[-67,-66],[-40,15],[-33,-20],[-39,-40],[-8,42],[-26,19],[37,60],[-12,54],[-63,28],[-26,20],[-33,55],[-3,51],[42,87],[-7,22],[-26,-6],[-21,47],[-99,-23],[9,-52],[-16,-41],[-47,-40],[-78,-36],[-79,-1],[-76,-81],[-308,2],[3,-404],[0,-323],[27,37],[35,-50],[7,-50],[36,-46],[27,-106],[36,-67]],[[8665,91840],[-303,0],[0,17],[-236,0],[-209,0],[-61,-168],[-93,-252],[-35,0],[-30,27],[8,28],[-21,29],[-64,0],[-19,-59],[9,-25],[-61,0],[-2,-202],[-48,0],[0,-201],[-180,0],[0,-202],[17,0],[0,-151],[54,0],[0,-51],[53,0],[0,-141],[-70,-234],[-89,-296]],[[7285,89959],[-1,-10],[1,-496]],[[7285,89453],[-20,0],[0,-101],[-90,0],[0,-101],[-102,0],[0,-101],[-181,0],[-182,0],[-224,0],[-333,0],[0,101],[-159,0],[-250,0],[0,-101],[-205,0],[0,-101],[-353,0]],[[27478,63459],[13,-12],[6,25],[16,5],[4,19],[20,13],[37,3],[13,-23],[19,25],[4,-36],[14,5]],[[27624,63483],[-4,-28],[15,-7],[9,-33],[3,-52],[-7,-39],[9,-62],[-8,-14],[9,-44],[-4,-26]],[[27646,63178],[-140,0]],[[27506,63178],[-28,0]],[[27478,63178],[1,198],[-1,83]],[[24286,56276],[87,0],[30,-10]],[[24403,56266],[30,-3],[-1,-253]],[[24432,56010],[-1,-203]],[[24431,55807],[-148,11]],[[24283,55818],[-5,152],[8,1],[1,203]],[[24799,56194],[0,102],[44,1],[15,16],[0,86]],[[24858,56399],[43,0],[0,-35],[73,0]],[[24974,56194],[0,-51]],[[24974,56143],[-78,-1]],[[24896,56142],[-95,0]],[[24801,56142],[-2,52]],[[27475,60166],[-14,-51]],[[27461,60115],[-3,44],[11,22],[6,-15]],[[27478,60164],[0,0]],[[23899,63948],[143,4],[-1,-50]],[[24041,63902],[0,-356]],[[24041,63546],[-141,-5]],[[23900,63541],[-1,272]],[[23899,63813],[0,135]],[[27086,60607],[20,42]],[[27106,60649],[11,-49],[30,-13],[13,31],[10,-4],[7,-30],[20,-20],[19,9],[8,-40],[10,18],[6,-24],[18,-22]],[[27258,60505],[-14,-101]],[[27244,60404],[-8,-21],[-8,-55],[-23,-17],[-2,-30],[-13,-29],[-34,-7],[-17,43]],[[27139,60288],[-2,29],[-12,25],[-18,3],[-7,52],[-14,31],[-2,90],[-15,22],[-1,33],[18,34]],[[28271,57652],[10,12],[38,-17],[38,-71],[10,35],[17,-15],[13,-45],[7,-89],[9,-30]],[[28413,57432],[11,-33],[8,-98],[-3,-37]],[[28429,57264],[-19,-25],[-41,-97],[-39,-75],[-15,-36]],[[28315,57031],[-17,42],[-10,119],[-19,165]],[[28269,57357],[1,75],[8,161],[-7,59]],[[23555,63208],[110,-1]],[[23665,63207],[0,-255]],[[23665,62952],[-1,-84]],[[23664,62868],[-109,2]],[[23555,62870],[0,86]],[[23555,62956],[0,252]],[[25953,52315],[8,25],[23,0],[8,35],[102,-5],[1,153],[14,0]],[[26109,52523],[14,-1]],[[26123,52522],[-2,-426]],[[26121,52096],[1,-322]],[[26122,51774],[-11,30],[-17,13],[-15,40],[-16,71],[-27,47],[-22,69],[-41,95],[-20,36]],[[25953,52175],[0,140]],[[31493,38404],[1,-65],[5,-30],[2,-70]],[[31501,38239],[-7,-22],[-11,2]],[[31483,38219],[1,95],[6,21],[-3,53]],[[31546,38362],[14,7],[0,-36]],[[31560,38333],[0,-98],[9,-21]],[[31569,38214],[-4,-24]],[[31565,38190],[-19,18]],[[31546,38208],[5,58],[-5,96]],[[31435,38321],[11,-44]],[[31446,38277],[-5,-84],[-5,-10]],[[31436,38183],[-10,-9]],[[31426,38174],[-9,40],[1,21]],[[15811,72557],[113,-3],[113,2],[36,4],[94,-1]],[[16167,72559],[15,-77],[-16,-33],[-3,-46],[6,-57]],[[16169,72346],[-29,-32],[-24,-97],[-35,-76],[-3,-57],[-8,-5],[10,-38],[1,-53],[24,-10],[1,-39],[-8,-27],[14,-14],[4,-85],[-26,-7],[4,-53]],[[15805,72024],[26,33],[0,50],[-8,58],[-8,11],[6,35],[-10,40],[-7,71],[22,38],[-24,58],[16,82],[-7,57]],[[15775,72069],[4,105],[10,72],[12,-52],[-2,-58],[19,-32],[-18,-27],[-5,-26],[-18,-12],[-2,30]],[[16200,73160],[-20,25],[8,54],[-6,32],[8,47],[-7,33],[7,41],[24,5],[0,35],[13,-7],[13,28],[11,-33],[15,-13],[17,27]],[[16283,73434],[15,1],[3,-42],[-7,-52],[7,-63],[17,-23],[-1,-69],[21,-19],[11,-37],[32,-74],[-3,-50],[38,-93],[23,-23],[1,-34],[14,-20],[11,-67],[50,0]],[[16515,72769],[3,-21],[-16,-48],[-1,-45],[-11,-19],[-10,-75],[-27,-21],[-11,15],[-17,-20],[-8,-42],[6,-48],[-10,-58],[1,-40],[-17,-69],[-7,-95],[9,-74],[44,-32],[12,-31],[-2,-90]],[[16453,71956],[-83,0],[-35,68],[-15,-12],[-4,33],[-23,6],[-16,33],[-2,25],[-14,7],[-6,27]],[[16255,72143],[0,0]],[[16255,72143],[-11,-12]],[[16244,72131],[0,0]],[[16244,72131],[-5,9]],[[16239,72140],[0,0]],[[16239,72140],[-18,15],[-2,31],[-18,69],[-18,27],[-13,58]],[[16170,72340],[0,1]],[[16170,72341],[-1,5]],[[16167,72559],[12,50],[-13,14],[-15,62],[8,106],[8,23],[-9,44],[9,23],[30,24],[17,46],[-3,34],[14,18],[-3,31],[-25,104],[3,22]],[[27199,51422],[55,4],[16,44],[15,9]],[[27285,51479],[31,-284]],[[27316,51195],[-15,-19],[2,-168],[-75,-6],[-1,161],[-3,-1]],[[27224,51162],[-12,-2],[-3,57],[-10,63],[0,142]],[[16453,71956],[5,-42],[19,-7]],[[16477,71907],[1,-109],[-11,-64],[9,-37],[12,-111],[1,-99],[10,-49],[-13,-93]],[[16486,71345],[-149,1],[0,101],[-35,1],[0,101],[-109,-1],[-18,67],[0,26],[-37,88],[-16,25],[-22,-21],[-6,20]],[[27229,50448],[-2,-56],[-11,-27],[1,-86],[36,-1],[0,-34],[95,3]],[[27348,50247],[10,-9],[5,-75],[15,-43],[2,-37],[-8,-45],[11,-100]],[[27383,49938],[-222,0]],[[27161,49938],[0,489],[3,22],[65,-1]],[[26616,54526],[25,132],[8,0]],[[26691,54507],[-8,-26],[23,-83],[-9,-33],[5,-20],[-9,-32]],[[26693,54313],[-6,21],[-16,11],[-5,-18],[-48,1]],[[24532,53400],[31,32],[98,1]],[[24661,53433],[23,0]],[[24679,53026],[-72,-1]],[[24607,53025],[-65,0]],[[24542,53025],[0,329],[-10,46]],[[22132,70014],[274,-3]],[[22406,70011],[1,-7],[0,-397]],[[22407,69607],[-237,2]],[[22170,69609],[-38,0]],[[22132,69609],[0,405]],[[25324,65206],[2,-305]],[[25326,64901],[1,-101],[-3,0]],[[25324,64800],[-93,-7]],[[22326,60971],[151,-1]],[[22477,60970],[2,-107]],[[22479,60863],[0,-304]],[[22326,60558],[0,306]],[[23863,67292],[131,0]],[[23994,67292],[0,-49]],[[23994,67243],[0,-356]],[[22913,65194],[24,-15],[20,11],[16,-28],[34,9],[18,-43],[9,-4]],[[23034,65124],[14,-33],[4,-58],[16,-58],[-4,-36],[10,-51]],[[23074,64888],[5,-87],[-8,-38],[5,-44]],[[23076,64719],[-8,-35],[-32,1]],[[23036,64685],[0,34],[-124,1]],[[22912,64720],[0,405],[1,69]],[[24074,57512],[24,-2],[0,-102],[28,-3],[0,-84],[14,-19],[16,-1],[0,-53],[26,-1],[1,-51],[29,-2],[-1,-101]],[[24211,57093],[-44,2],[0,-51],[-51,5],[-10,-50],[-13,1]],[[24093,57000],[-4,1],[0,68],[-15,1],[0,34],[-15,0]],[[24059,57104],[0,68],[-4,34],[-20,0],[1,52],[-29,2],[3,157],[-30,0]],[[23980,57417],[1,100],[68,-3],[24,-32],[1,30]],[[24949,68445],[-35,2]],[[24914,68447],[-1,307],[-33,0],[0,202]],[[23419,60796],[131,-2]],[[23550,60794],[1,-23]],[[23551,60434],[0,-30]],[[23551,60404],[-128,2]],[[23423,60406],[-4,51]],[[22590,54841],[125,-4]],[[22715,54837],[0,-276]],[[22715,54561],[-46,-2],[-46,-97]],[[22623,54462],[-34,324]],[[22589,54786],[1,55]],[[23067,61782],[0,253]],[[23067,62035],[113,0]],[[23180,62035],[-1,-51],[0,-304]],[[23179,61680],[0,-203],[-2,-104]],[[20921,67551],[294,-1]],[[21215,67550],[0,-555]],[[21215,66995],[-141,1]],[[21074,66996],[-152,0]],[[20922,66996],[0,345],[-1,210]],[[19735,72330],[31,8],[6,-12],[32,22],[25,-15],[13,-21],[8,-67],[-3,-69]],[[19852,71478],[14,-58],[4,-53]],[[19870,71367],[-121,-2],[-33,-5],[-70,-1]],[[19646,71359],[0,102],[6,0],[0,304],[-35,0],[0,100],[5,0],[0,101],[35,0],[0,42],[71,2],[6,8],[1,312]],[[25758,63752],[0,254]],[[25758,64006],[89,-1]],[[25847,64005],[18,0],[0,-50],[19,-17]],[[25884,63938],[0,-184]],[[25884,63754],[0,-41]],[[25758,63711],[0,41]],[[22619,71931],[71,-1]],[[22599,71221],[-113,1]],[[22486,71222],[0,405],[-8,0],[0,304]],[[29691,69069],[45,-69],[-18,-103],[31,-49],[-1,-9]],[[29748,68839],[-17,-91]],[[29731,68748],[-16,-97],[-29,66],[-16,-95],[-42,63]],[[29628,68685],[-10,8],[10,55],[-8,12],[1,42],[-27,94]],[[29594,68896],[10,28],[11,63],[15,-22],[4,56],[10,53],[37,18],[10,-23]],[[26480,55701],[12,14],[8,60],[19,16],[-3,38],[14,42]],[[26530,55871],[3,-31],[14,-57]],[[26547,55783],[6,-46],[7,-101],[-2,-72]],[[26558,55564],[-10,24],[-51,2]],[[26497,55590],[-23,0]],[[26474,55590],[0,58],[10,39],[-4,14]],[[24914,68447],[-50,2]],[[24864,68449],[-114,-1]],[[24750,68448],[-2,7],[1,198]],[[23730,66581],[1,306]],[[22194,52957],[110,0]],[[22304,52957],[0,-22],[35,0]],[[22339,52935],[1,-493]],[[22245,52444],[-50,0],[0,245]],[[23448,54816],[3,-2],[43,64],[21,89],[12,-18]],[[23527,54949],[0,-268],[17,-27],[17,-4]],[[23561,54650],[-6,-41],[-10,12],[-97,1]],[[23448,54622],[0,194]],[[25091,55975],[0,33],[19,1]],[[25110,56009],[97,3],[0,-69]],[[25207,55943],[1,-255]],[[25208,55688],[-40,0]],[[25168,55688],[-77,-1]],[[25091,55687],[0,288]],[[16478,62857],[-1,-150]],[[16477,62707],[-178,-2],[-23,-31],[-21,-64],[-15,-31],[-3,-30],[-11,-12],[-20,-70],[-3,-39],[-14,-73],[-18,-3],[-9,31],[-14,-29],[-26,25]],[[16122,62379],[0,228],[4,49],[13,11],[4,40],[22,74],[12,17],[17,-4]],[[21215,66995],[58,0]],[[21273,66995],[0,-250],[5,0],[0,-402]],[[21278,66343],[-187,-3]],[[21091,66340],[-10,0],[0,405],[-6,-1],[-1,252]],[[15443,66743],[0,-51],[38,0],[11,-35],[21,-12],[26,47],[28,-9],[12,-34]],[[15579,66649],[0,-814]],[[15579,65835],[-33,-5],[-47,2]],[[15499,65832],[-39,-7],[-46,1]],[[15414,65826],[-7,51],[6,60],[-9,56],[12,33],[5,60],[-14,115],[-12,41],[-39,9],[-2,48],[7,12],[6,104],[28,-1],[10,58],[1,38],[9,34],[0,41],[18,89],[10,69]],[[22911,64315],[0,-203]],[[22911,64112],[-1,-202]],[[22910,63910],[-126,1]],[[22051,58911],[0,-203]],[[22051,58708],[0,-305]],[[22051,58403],[-151,0]],[[21900,58403],[0,509]],[[26440,55574],[6,-11],[28,-1],[0,28]],[[26497,55590],[0,-202],[-3,-114],[-20,1]],[[26474,55275],[1,67],[-42,2]],[[26433,55344],[6,56],[1,174]],[[24844,53913],[61,15]],[[24905,53928],[0,-192],[23,-53],[21,-35],[3,-24],[0,-93]],[[24952,53531],[-19,0]],[[24933,53531],[-47,0],[0,-51],[-38,1]],[[24848,53481],[0,153],[-4,0],[0,279]],[[27011,63781],[4,-1],[-1,-83]],[[27014,63697],[-4,-252],[-9,1],[0,-44]],[[27001,63402],[-52,10],[-12,10]],[[26937,63422],[-3,-7],[-86,17]],[[26848,63432],[6,217]],[[21447,57388],[47,1]],[[21469,56883],[-122,0]],[[21347,56883],[0,505]],[[26122,69565],[46,-3],[0,-102],[102,-1]],[[26273,69158],[-124,2],[-10,-11],[-2,-44]],[[26137,69105],[-11,19],[-2,35],[-17,1]],[[26107,69160],[13,83],[8,160],[-6,162]],[[22155,63505],[125,0]],[[22280,63505],[31,0]],[[22311,63505],[0,-505]],[[22311,63000],[-149,-1]],[[22162,62999],[-7,0]],[[21625,60868],[122,0]],[[21747,60868],[0,-406]],[[21747,60462],[-121,1]],[[21626,60463],[-1,405]],[[18848,71375],[11,-20],[2,-74],[10,-13],[2,-37],[19,-4],[4,-24],[-2,-92],[21,-45],[2,-67],[18,-8],[5,18],[29,-46],[-3,-71],[-13,-41],[-2,-42],[13,-30],[5,-68]],[[18969,70711],[-68,-5],[-11,-41],[-3,-40],[-19,-67],[1,-77],[-10,4],[-3,-50],[-22,-53],[-12,-4],[-20,-85]],[[18802,70293],[0,251],[-34,1],[-1,101],[0,504]],[[22272,64721],[128,0]],[[22407,64721],[0,-405]],[[22406,64306],[-28,-18],[-22,-26],[-58,3],[-18,7]],[[22213,64284],[-2,33],[0,404]],[[17122,61726],[147,-550],[0,-736],[-1,-463]],[[17268,59977],[-185,575]],[[17083,60552],[-62,186],[-104,316]],[[16917,61054],[21,-3],[184,675]],[[27830,59130],[29,-2]],[[27859,59128],[56,-3]],[[27915,59125],[-8,-213],[-10,-225]],[[27897,58687],[-18,-3],[-47,19]],[[27832,58703],[-4,43],[2,384]],[[18514,68126],[0,101],[150,-1]],[[18664,68226],[0,-101],[50,0],[0,-51]],[[18714,68074],[0,-151],[-2,-51],[15,16],[28,-59],[14,-47],[17,-24],[26,0],[0,-34]],[[18812,67724],[-249,0]],[[18563,67724],[-50,-4]],[[18513,67720],[1,406]],[[26046,65550],[103,1]],[[26175,65551],[1,-272]],[[26048,65276],[-2,274]],[[24522,66175],[65,-1]],[[24587,66174],[0,-304]],[[24587,65870],[0,-102]],[[24456,65770],[1,406]],[[23419,66076],[64,-1]],[[23483,66075],[64,0]],[[23547,66075],[0,-404]],[[23547,65671],[-32,0]],[[23515,65671],[-97,1]],[[23418,65672],[1,404]],[[22196,72032],[59,0]],[[22255,72032],[214,-1]],[[22486,71222],[-167,-1]],[[22204,71222],[1,407],[-9,0],[0,403]],[[23547,66075],[65,-1]],[[23677,65672],[-33,-1]],[[23644,65671],[-97,0]],[[25392,52659],[-5,80],[11,68],[12,18],[-10,40],[-1,29],[16,57],[-11,38],[0,47],[7,46],[-10,48],[10,67],[-9,18]],[[25402,53215],[9,1],[-2,35]],[[25409,53251],[9,-7],[13,33],[11,70],[12,8],[-7,28],[13,-11]],[[25460,53372],[13,7],[11,-48],[17,-20]],[[25501,53311],[0,-288],[5,0]],[[25506,53023],[3,-38],[-13,-115],[2,-23],[23,-79],[3,-41],[36,-80],[3,-69],[-15,-102],[3,-55],[20,-51],[-18,-35],[-8,-82],[-9,-15],[7,-24],[-15,-26]],[[25528,52188],[-38,-35],[-40,-24],[-56,-4],[18,41],[12,-26],[35,27],[3,34],[-15,48],[-7,43],[-20,47],[-7,90],[9,74],[-3,76],[-7,48],[-20,32]],[[26308,66321],[33,1]],[[26341,66322],[128,3]],[[26469,66325],[3,0]],[[26472,65914],[-65,2]],[[26407,65916],[-96,-3]],[[26311,65913],[-3,307],[0,101]],[[26656,59542],[54,1],[5,-5],[76,0]],[[26834,59538],[-33,-60],[-17,25],[-30,-58],[-24,-85],[3,-20],[-24,-34]],[[26709,59306],[-20,29],[-10,-8]],[[26679,59327],[5,54],[-8,88],[-20,73]],[[22162,62999],[-1,-506]],[[22161,62493],[-151,-1]],[[22010,62492],[-5,0]],[[22005,62492],[1,507]],[[23422,61218],[0,-253],[-3,-102]],[[23257,57210],[44,0],[0,101]],[[23301,57311],[126,0]],[[23427,57311],[34,0],[0,-203]],[[23461,57108],[-30,1],[0,-307],[-29,0],[-2,-101]],[[23400,56701],[-173,0]],[[23227,56701],[0,407],[30,0],[0,102]],[[21405,53784],[9,0]],[[21414,53784],[142,0]],[[21556,53784],[0,-665]],[[21556,53119],[-146,7]],[[21410,53126],[-2,131],[-3,527]],[[21978,69610],[154,-1]],[[22170,69609],[0,-406]],[[22142,69204],[-204,0]],[[21938,69204],[-5,107],[9,44],[31,-9],[-10,46],[-3,47],[13,69],[5,102]],[[22280,63911],[0,-406]],[[22155,63505],[-1,406]],[[23468,67577],[17,1]],[[23485,67578],[114,0]],[[23599,67578],[0,-286]],[[23599,67292],[-131,0]],[[23468,67292],[0,285]],[[22330,73979],[292,1]],[[22622,73980],[0,-329],[6,0],[0,-204]],[[22628,73447],[-108,1]],[[22520,73448],[-182,1]],[[16473,61679],[38,-90],[23,53],[14,18],[15,-8],[-1,-52],[17,-45]],[[16579,61555],[-2,-51],[12,-54],[-7,-46],[32,-70],[5,20],[14,-67],[5,18],[21,-32],[13,-63],[-4,-72],[5,-28],[25,-53],[-1,-52],[4,-70],[-19,-64]],[[16682,60871],[-11,45]],[[16671,60916],[-19,72],[-14,31],[-18,-4],[-10,35],[-13,3],[-8,-44],[-13,-22],[0,-22],[-27,-52],[-18,-21],[-15,18],[-20,-11],[-24,56],[-16,19],[-13,-54],[-15,16],[-1,-29],[-15,-7],[-6,-35],[-23,-9],[10,-72],[-6,-17],[-17,39],[1,-58]],[[16371,60748],[-74,231]],[[16297,60979],[6,34],[26,75],[6,41],[-7,16],[7,34],[14,11],[3,33],[32,154],[23,130],[14,48],[15,71],[37,53]],[[22161,62493],[4,0]],[[22008,61986],[2,506]],[[22342,48683],[44,-1],[0,100]],[[22490,48118],[-148,2]],[[22342,48120],[0,563]],[[31558,38031],[6,69],[8,27]],[[31572,38127],[9,7],[15,-39]],[[31596,38095],[-10,-51],[-6,-70]],[[31580,37974],[-22,57]],[[25216,69460],[43,-1],[-1,-304]],[[25258,69155],[-69,1],[0,101],[-68,-1],[0,101]],[[25121,69357],[0,103],[95,0]],[[23620,67982],[34,0]],[[23654,67982],[0,-405]],[[23654,67577],[-55,1]],[[23485,67578],[0,404]],[[25724,54587],[5,-38],[7,38],[-1,62],[16,10],[2,-49],[8,-9],[8,52],[10,9],[1,-36],[20,-13],[3,-29],[10,7]],[[25813,54591],[6,-15],[-3,-55],[22,-46],[0,-226]],[[25838,54249],[1,-101],[-12,1]],[[25713,54146],[0,100],[-14,0]],[[25699,54246],[-1,206],[28,0],[-13,37],[-1,32],[9,25],[-6,27],[9,14]],[[26231,61565],[25,46],[10,-21]],[[26266,61590],[22,-21],[14,16]],[[26307,61402],[-39,-63],[0,-28]],[[26268,61311],[-11,-28],[-34,42]],[[26223,61325],[6,37],[1,133],[12,66],[-11,4]],[[24200,63447],[93,-3]],[[24293,63444],[31,-2]],[[24324,63442],[-2,-337]],[[24322,63105],[-94,5],[0,-64],[-32,-3]],[[24196,63043],[4,404]],[[22992,59033],[1,4],[89,-2]],[[23082,59035],[0,-100],[75,-1],[-1,-254]],[[23156,58680],[-44,0],[0,-254]],[[23112,58426],[-120,0]],[[22992,58426],[0,352]],[[22992,58778],[0,255]],[[22847,51429],[75,5]],[[22922,51434],[8,-18],[3,-47],[11,1],[65,-282],[-27,-83]],[[22982,51005],[-78,-233]],[[22904,50772],[-11,47]],[[22893,50819],[-73,326]],[[22820,51145],[10,144],[0,85],[17,55]],[[25147,68139],[0,-102]],[[25147,68037],[0,-305]],[[25147,67732],[-33,0]],[[25114,67732],[-34,-2],[0,14],[-33,-1]],[[25047,67743],[0,136],[22,7],[0,52],[-9,2],[0,75],[9,0],[0,124]],[[22056,64317],[-67,1]],[[21989,64318],[-1,403]],[[26046,65550],[-36,0]],[[26010,65550],[8,47],[-1,314]],[[25075,61422],[0,304]],[[25075,61726],[62,4],[62,-3]],[[25199,61727],[0,-254]],[[25198,61320],[-118,0]],[[25080,61320],[-6,0],[1,102]],[[23994,67576],[132,1]],[[24125,67243],[-131,0]],[[23994,67292],[0,284]],[[8956,91740],[103,2],[44,26],[38,0],[25,33],[8,65],[33,25],[28,-4],[20,41],[59,41],[51,-42],[45,49],[3,29],[68,22],[51,85],[24,-12],[18,16],[64,23],[26,-20],[39,40],[1,32],[35,-5],[33,16],[1,34]],[[10627,93581],[0,-4581]],[[9097,90473],[3,13],[-1,352],[-143,-4]],[[8956,90834],[0,906]],[[24986,64840],[0,99],[30,-1],[6,79],[19,25],[29,-14]],[[23337,64853],[64,-1]],[[23401,64852],[63,-1]],[[23464,64551],[-127,1]],[[23337,64552],[0,301]],[[24125,66887],[132,0]],[[24257,66887],[0,-309]],[[24125,66578],[0,309]],[[25076,61760],[1,272]],[[25201,62136],[-1,-256]],[[25200,61880],[-1,-153]],[[25075,61726],[1,34]],[[27405,58271],[13,0]],[[27418,58271],[123,-3]],[[27541,58268],[-59,-370]],[[27482,57898],[-12,27]],[[27470,57925],[-33,69],[-7,92],[-20,64],[4,14],[-9,107]],[[21414,54291],[21,0]],[[21556,54291],[0,-507]],[[21414,53784],[0,507]],[[22245,52196],[-126,4]],[[22119,52200],[-100,0]],[[24750,67640],[34,1],[-1,-455]],[[24783,67186],[-19,39],[-25,14],[-22,-10]],[[24717,67229],[-32,12],[-34,-46]],[[24651,67195],[0,292]],[[24651,67487],[-1,151],[100,2]],[[21748,58410],[0,-7]],[[25821,60384],[87,17]],[[25908,60401],[30,-140],[-2,-56]],[[25936,60205],[-5,-133],[-11,10]],[[25920,60082],[-22,18],[-7,32],[-18,-28],[-33,104]],[[25840,60208],[-19,176]],[[26147,62950],[73,1]],[[26220,62951],[61,-5]],[[26281,62946],[-1,-252]],[[26280,62694],[-68,2]],[[26212,62696],[-43,2],[-22,-47]],[[26147,62651],[0,215]],[[26147,62866],[0,84]],[[17550,68740],[-8,103],[7,123],[-14,93],[3,104],[10,47],[2,45],[11,41],[-5,37],[12,62],[-14,23],[-1,30]],[[17553,69448],[6,60],[12,-7],[29,77],[0,-28],[272,2],[85,0]],[[17957,69552],[-8,-19],[0,-204],[-3,-94],[3,-39],[-11,-18],[-1,-39],[-13,-39]],[[17790,68554],[-16,10],[0,-50],[-41,-83],[-167,3],[-5,-99],[-27,0]],[[17534,68335],[0,201],[17,1],[-1,203]],[[28095,61182],[15,66],[12,79]],[[28122,61327],[11,-2],[19,27],[15,-19],[13,2],[13,-23]],[[28193,61312],[10,0],[37,-49],[13,-50],[14,-29]],[[28267,61184],[-30,-325]],[[28237,60859],[-10,28],[-16,9],[-16,101],[-12,12],[-7,40],[-13,15]],[[28163,61064],[-47,86],[-21,32]],[[22448,55301],[41,-2],[0,64]],[[22593,55358],[-3,-517]],[[22589,54786],[-113,1]],[[22476,54787],[-28,3]],[[22448,54790],[0,511]],[[21322,56882],[25,1]],[[21322,56315],[0,567]],[[25843,53019],[56,0]],[[25899,53019],[43,-1]],[[25942,53018],[-1,-336],[54,-2]],[[25995,52680],[-7,-46],[-13,-31],[0,-46],[10,-48],[-2,-42],[8,-34],[-12,-54],[-17,-5],[-9,-59]],[[25953,52175],[-27,40],[-58,70],[-27,18]],[[29224,66306],[131,65]],[[29355,66371],[2,-40],[-5,-64],[3,-101],[-5,-40],[-13,-27],[-2,-45],[-10,-28],[-5,-47]],[[29320,65979],[-26,58],[-11,-8],[-9,-86],[-65,21],[-40,64]],[[29169,66028],[-24,37],[30,172],[-4,7]],[[26283,63509],[0,144],[2,211]],[[26285,63913],[103,2]],[[26388,63732],[2,-323]],[[26390,63409],[-17,-1]],[[26373,63408],[-91,-2]],[[23349,73444],[36,0],[0,-203],[218,2]],[[23603,73243],[3,-607]],[[23606,72636],[1,-467]],[[23607,72169],[0,-39],[-71,-1]],[[23536,72129],[-143,3]],[[23393,72132],[-3,303],[0,232],[-15,12],[-8,71],[13,88],[-98,1]],[[23279,73016],[0,225],[-3,0],[0,201]],[[26073,68351],[64,0]],[[26137,68351],[69,-1]],[[23176,60713],[0,-252]],[[23176,60461],[-1,-102]],[[23175,60359],[-156,4]],[[23019,60363],[0,202]],[[23019,60565],[0,152]],[[21481,61480],[133,1]],[[21614,61481],[7,0]],[[21621,61481],[0,-507],[5,0],[-1,-106]],[[21625,60868],[-143,2]],[[21482,60870],[-1,610]],[[23977,73546],[38,3],[6,-27],[56,-79],[26,4],[1,-49],[-19,-7],[-4,-37],[16,-31],[41,13],[15,-54],[-6,-34],[6,-49],[24,-127],[25,27],[-8,84],[13,45],[15,-11],[42,16],[16,-44],[-2,-65],[17,-41],[14,9],[9,-36],[18,-5]],[[24336,73051],[3,-763],[-2,-707]],[[24337,71581],[-13,-17],[-61,-134],[-9,-25],[8,-50],[14,-46]],[[24276,71309],[-21,50],[-14,-11],[-3,-29],[-16,-14],[9,-19],[-11,-43],[-22,16]],[[23986,71682],[-3,96],[-1,332],[2,379],[-6,1],[1,199]],[[23979,72689],[-3,205],[-2,0],[3,652]],[[24295,65261],[32,1]],[[24327,65262],[87,0],[1,-49],[9,-53]],[[24424,65160],[-1,-304]],[[24359,64856],[-64,1]],[[24295,64857],[0,404]],[[22303,54789],[145,1]],[[22476,54787],[0,-249],[-21,-44]],[[22455,54494],[-104,-213]],[[22352,52023],[0,-415]],[[22352,51608],[-72,132],[-28,10],[-90,5]],[[22162,51755],[-25,1],[0,192],[-19,0]],[[22118,51948],[1,252]],[[28094,66437],[76,1]],[[28170,66438],[55,-5],[0,-50],[32,-4]],[[28257,66379],[0,-78],[-5,-246],[-2,-226]],[[28250,65829],[-127,1]],[[28123,65830],[-29,0]],[[28094,65830],[0,607]],[[21615,56321],[2,-507]],[[27617,60369],[-3,-53]],[[27614,60316],[-12,-6],[-12,35],[24,43],[3,-19]],[[28366,60374],[14,1]],[[28380,60375],[8,-23],[-14,-37],[-6,6],[-2,53]],[[24716,65047],[1,151],[15,26],[12,41],[26,13],[13,21],[2,48]],[[24785,65347],[90,0]],[[24875,65347],[2,-77],[0,-330]],[[24877,64940],[-3,0],[0,-100],[-33,1]],[[24715,64843],[1,204]],[[24912,54928],[0,292]],[[24912,55220],[0,53],[115,2]],[[25027,54861],[-1,0]],[[25026,54861],[-114,1],[0,66]],[[20265,57531],[73,0],[0,93],[-27,4],[0,101]],[[20311,57729],[148,2]],[[20459,57731],[118,0]],[[20577,57731],[0,-506],[-6,0],[0,-303]],[[20571,56922],[0,-101],[-171,0]],[[20400,56821],[-137,0],[0,209]],[[20263,57030],[0,96],[-15,-1],[2,101],[-1,127],[1,178],[15,0]],[[21312,64375],[167,0]],[[21479,64375],[0,-60]],[[21479,64015],[-170,-2]],[[21309,64013],[0,311],[3,51]],[[21276,64013],[33,0]],[[21479,63909],[0,-403]],[[21479,63506],[1,-499]],[[21480,63007],[-210,-7]],[[23204,67295],[132,-3]],[[23336,67292],[0,-402]],[[23336,66890],[-131,-1]],[[23205,66889],[-1,102],[0,304]],[[25026,54861],[0,-411]],[[25026,54450],[-114,-1]],[[24912,54449],[0,152],[-15,272]],[[24897,54873],[15,55]],[[22397,65529],[2,0]],[[22399,65529],[0,-404]],[[22399,65125],[-126,0]],[[27336,58900],[15,15],[26,-4]],[[27430,58906],[-4,-231]],[[27426,58675],[-18,-210],[10,-194]],[[27405,58271],[-35,11],[-11,-28]],[[27359,58254],[-3,65]],[[27356,58319],[9,88],[-22,102],[-16,1],[-1,32],[-12,44]],[[25408,56425],[88,-5]],[[25496,56420],[0,-51],[29,-5],[1,-204],[29,-4],[0,-101]],[[25555,56055],[-58,9],[0,-34],[-10,-1],[0,-68],[-48,4]],[[25439,55965],[-30,-1]],[[25409,55964],[-1,461]],[[21845,63505],[152,-1]],[[21997,63504],[4,0]],[[22001,62998],[-151,2]],[[21845,63000],[0,505]],[[16968,69275],[8,56],[15,10],[9,34],[36,-59],[9,2],[17,40],[5,32],[13,1],[14,-38],[4,-39],[59,1],[1,100],[82,2]],[[17240,69417],[135,-3]],[[17375,69414],[-18,-65],[-3,-51],[7,-58],[-9,-68],[-10,-34]],[[17342,69138],[-8,-63],[-32,-49],[-14,-93],[-8,-97],[-10,-66],[-18,-48],[3,-66],[-8,-36],[15,-69],[-9,-41]],[[17253,68510],[-74,-2],[0,102],[-23,33],[-6,33],[-106,0],[-11,-17],[-6,-46],[-11,-21],[-6,-50],[-16,-34],[-1,-34],[-22,-17]],[[25496,56876],[29,-3]],[[25525,56873],[117,-6]],[[25642,56867],[0,-358],[-11,1]],[[25631,56510],[-97,4],[-38,7]],[[25496,56521],[0,355]],[[24532,61412],[88,0]],[[24620,61412],[27,-118],[12,-30]],[[24659,61264],[-2,-398]],[[24657,60866],[-64,-1],[-62,7]],[[24531,60872],[1,152],[0,388]],[[31501,37932],[7,8],[10,-72]],[[31518,37868],[-7,-27],[-7,13]],[[31504,37854],[-3,78]],[[25526,64058],[0,16]],[[25526,64074],[0,286]],[[25526,64360],[72,0]],[[25598,64360],[47,0]],[[25645,64360],[1,-202]],[[25646,64158],[1,-102]],[[25647,64056],[-121,2]],[[16741,55926],[8,7],[1,-41],[-11,7],[2,27]],[[16501,56608],[18,-7],[13,-22],[15,5],[19,-43],[19,-4],[7,39],[20,-20],[-11,-43],[-28,-11],[-17,-31],[-42,24],[-1,61],[-12,52]],[[16410,56520],[22,8],[9,21],[13,-8],[13,19],[0,-48],[18,-13],[1,-48],[-41,-54],[-16,37],[-19,86]],[[16354,56562],[16,17],[6,28],[6,-35],[13,-26],[-21,-6],[-20,22]],[[16298,57653],[7,-13],[34,33],[19,-6],[38,-89],[1,42],[-12,66],[21,26]],[[16406,57712],[0,0]],[[16406,57712],[14,-5],[8,19],[4,44],[11,23]],[[16443,57793],[0,0]],[[16443,57793],[12,21],[32,-66],[12,3],[20,-32],[7,-28],[23,-38],[21,-2],[16,-26],[22,-62],[18,4]],[[16626,57567],[8,0]],[[16634,57567],[0,-509],[-1,-69],[-9,-32]],[[16624,56957],[-22,42],[-32,4],[-16,-24],[-18,25],[-22,-10],[-37,60],[-23,0],[-15,15],[-44,-7],[-48,-22],[-1,31],[-13,66],[-16,30],[-12,-4],[-6,32],[13,143],[-11,60],[8,119],[-17,54],[6,82]],[[15529,64876],[31,-45],[15,-74],[33,-1],[21,-43],[5,-41],[17,9],[10,-23],[10,39],[-6,46],[-13,25],[4,75],[17,60],[26,6],[21,63],[17,34],[4,31],[17,18],[10,33],[18,-44],[-7,-54],[-1,-85],[5,-26]],[[15661,63477],[-170,-1],[0,29]],[[15491,63505],[0,805],[1,47],[-9,143],[-13,82],[16,25],[19,-38],[13,31],[0,28],[11,61],[-5,49],[-8,9],[7,94],[6,35]],[[24794,62944],[64,2]],[[24858,62946],[62,2]],[[24920,62948],[1,-611]],[[24921,62337],[-125,2]],[[24796,62339],[0,304]],[[24796,62643],[-2,301]],[[26462,67657],[33,-2],[-1,-50],[66,-2],[-1,-51],[34,0]],[[26593,67552],[1,-178],[-1,-121]],[[26593,67253],[-65,-2],[0,-102]],[[26528,67149],[-122,-5]],[[22623,54462],[23,-170]],[[22646,54292],[-39,-81]],[[22550,54094],[-12,73],[-21,-45],[-62,372]],[[26877,50038],[118,2],[1,51],[55,0]],[[27051,50091],[-1,-193]],[[27050,49898],[0,-63],[-14,1],[0,-102]],[[27036,49734],[-85,-1],[-67,3]],[[26884,49736],[-42,-2]],[[26842,49734],[11,55],[1,41],[8,44],[0,38],[7,50],[0,39],[8,37]],[[26835,49734],[-9,0]],[[26826,49734],[0,53],[9,1],[0,-54]],[[27500,59487],[41,-7],[67,-2]],[[27608,59478],[7,0]],[[27613,59146],[-116,5]],[[27497,59151],[3,336]],[[17467,68335],[26,0],[5,146],[-2,53],[6,41],[2,74],[6,27]],[[17510,68676],[17,24],[7,54],[16,-14]],[[17534,68335],[-17,0],[-2,-400]],[[17515,67935],[-65,-1]],[[17450,67934],[-55,0]],[[17395,67934],[0,203],[39,-1],[0,34],[11,-1],[0,67],[22,-1],[0,100]],[[27335,62350],[34,42],[21,42],[7,32]],[[27397,62466],[23,-16]],[[27420,62450],[3,-102],[31,-121]],[[27454,62227],[-10,-23],[-8,10],[-87,-204]],[[27349,62010],[-4,34],[-16,54],[15,61],[-3,90],[2,44],[-8,57]],[[22511,60008],[66,0]],[[22577,60008],[1,-469],[1,-2]],[[22579,59537],[0,-152]],[[22579,59385],[-120,1]],[[22459,59386],[1,152],[-2,405],[-2,66]],[[22784,63505],[126,-1]],[[22910,63504],[31,0]],[[22941,63504],[0,-506]],[[22941,62998],[-43,0]],[[22898,62998],[-114,1]],[[22784,63100],[0,405]],[[27074,54503],[22,7],[21,-43],[10,-99]],[[27127,54368],[7,-56],[10,-18]],[[27144,54294],[-12,-48]],[[27132,54246],[-35,3],[-26,36],[-12,230]],[[27059,54515],[15,-12]],[[26070,63439],[0,153]],[[26070,63592],[100,0]],[[26170,63592],[4,-84]],[[26168,63256],[-22,-1]],[[26146,63255],[-82,-1]],[[26064,63254],[0,101],[5,0],[1,84]],[[27211,57475],[162,-1]],[[27373,57474],[10,-146],[-10,-74],[6,-103]],[[27379,57151],[-35,5],[-68,19],[-49,9]],[[27227,57184],[2,72],[-11,48],[-1,57],[-7,24],[8,19],[-7,71]],[[17976,55859],[1,27],[18,87],[9,24],[-4,46],[4,110],[8,12],[-2,74],[-7,64],[1,51],[6,6],[-2,55],[-7,20],[28,116],[0,60]],[[18336,56888],[0,-371]],[[18336,56517],[0,-723]],[[18336,55794],[-174,0],[0,101],[-86,-1],[0,-505],[-69,-3]],[[18007,55386],[-17,11],[-7,-13],[-13,25],[-3,-17],[-14,68],[7,67],[2,142],[-15,41],[9,65],[-8,51],[23,13],[5,20]],[[21976,65931],[28,0]],[[22004,65931],[134,0]],[[22138,65931],[0,-403]],[[21981,65528],[-4,0]],[[17957,69552],[5,43],[20,72],[-18,55],[-14,62],[-21,47],[0,84],[25,-19],[12,-25],[8,56],[21,54]],[[18481,68598],[0,-171],[-51,4]],[[18430,68431],[-90,-1]],[[21988,61176],[0,-102]],[[21991,60564],[-122,-1]],[[21869,60563],[0,305]],[[21869,60868],[0,107],[-3,0],[0,202],[122,-1]],[[24974,56143],[1,-254],[34,1]],[[25009,55890],[-11,-36],[-9,4],[0,-171]],[[24989,55687],[-53,0]],[[24936,55687],[0,136],[-20,-1],[0,17],[-19,0],[-1,303]],[[23402,55241],[120,2]],[[23522,55243],[4,-29]],[[23526,55214],[1,-101]],[[23527,55113],[0,-164]],[[23448,54816],[-7,-25],[-19,46],[-17,-6],[-4,23]],[[23401,54854],[1,387]],[[22443,52444],[51,2],[16,-18]],[[22510,52428],[63,-70]],[[22573,52358],[-13,-81]],[[22560,52277],[-35,-371]],[[22525,51906],[-32,-117]],[[22493,51789],[-49,235]],[[22897,62493],[0,102]],[[22897,62595],[32,-1],[0,-93],[5,0],[-6,-60],[41,4],[0,-21],[57,-1],[0,-34]],[[23026,62389],[0,-202]],[[23026,62187],[-109,0]],[[22917,62187],[-10,1],[0,126],[-10,-16],[0,195]],[[26174,61979],[8,-4],[41,87]],[[26223,62062],[17,-96],[8,-21]],[[26248,61945],[-11,-29],[-28,-47]],[[26209,61869],[-26,-13]],[[26183,61856],[-12,-6],[-5,54],[-29,127]],[[26137,62031],[21,2],[16,-54]],[[25935,65224],[0,-50]],[[25935,65174],[1,-306],[-6,0]],[[25821,65171],[0,50],[114,3]],[[27611,58859],[2,287]],[[27753,59127],[-2,-397]],[[27610,58754],[1,105]],[[28411,62214],[6,-20]],[[28417,62194],[-6,20]],[[27773,60926],[13,2],[-11,-27],[-2,25]],[[26278,65915],[33,-2]],[[26407,65916],[1,-427]],[[26408,65489],[-11,-1]],[[26397,65488],[-113,-11]],[[26284,65477],[0,75],[-5,-1]],[[21637,61990],[100,0]],[[21737,61482],[-116,-1]],[[21614,61481],[0,508]],[[23990,68388],[101,-2]],[[24091,68386],[0,-403],[-3,0]],[[24088,67983],[-100,-1]],[[23988,67982],[1,35],[-1,371]],[[25074,63831],[160,-1]],[[25187,63567],[-112,-8]],[[21414,54291],[-143,-1]],[[21271,54290],[-74,1]],[[21197,54291],[0,507]],[[22516,68388],[133,-2]],[[22650,67984],[-33,1]],[[22516,68086],[0,302]],[[23742,68691],[13,71],[-7,29]],[[23748,68791],[107,1]],[[23855,68387],[-68,0]],[[23787,68387],[0,51],[-68,0]],[[23719,68438],[-3,21],[18,58],[7,42],[-8,25],[9,107]],[[25013,66814],[99,3]],[[25112,66817],[66,-5]],[[25178,66812],[-1,-103],[1,-305]],[[25178,66404],[-46,3]],[[25014,66413],[-1,401]],[[23988,67982],[-1,0]],[[23888,67982],[0,405]],[[27842,64725],[1,33],[0,295]],[[27843,65053],[29,-7],[3,17]],[[27875,65063],[21,12],[14,30],[3,-17],[62,-115],[7,-71]],[[27982,64902],[-15,1],[-11,-82],[0,-264]],[[27956,64557],[-114,6]],[[27842,64563],[0,162]],[[23468,66890],[131,-2]],[[23599,66888],[0,-306]],[[23599,66481],[-131,2]],[[23468,66483],[0,407]],[[23318,67982],[-1,-404]],[[23317,67578],[-113,-1]],[[23204,67577],[-53,0]],[[13624,82241],[40,22],[28,-143],[-3,-90],[-20,-107],[-18,-67]],[[13651,81856],[-40,106],[1,34],[-28,66],[20,30],[8,33],[20,3],[-20,55],[12,58]],[[13234,81005],[16,62],[-2,43],[13,20],[-14,43],[-2,70],[5,39],[11,9],[19,-32],[5,-35],[13,-7],[17,-40],[0,-165],[-9,-34],[-27,-2],[-13,32],[-23,-36],[-9,33]],[[12888,80934],[18,6],[-4,-53],[-14,47]],[[12768,81460],[21,27],[-2,-46],[-16,-11],[-3,30]],[[12700,80811],[9,0],[10,-128],[-15,29],[-4,99]],[[12674,81692],[9,23],[1,61],[20,-30],[1,-32],[-22,-72],[-9,50]],[[12659,81749],[12,9],[-1,-36],[-11,27]],[[12637,81497],[8,92],[8,25],[32,-9],[10,-16],[-2,-35],[-16,-42],[8,-16],[20,40],[5,43],[13,-19],[19,68],[19,-2],[16,-39],[-5,-60],[-15,-35],[-19,15],[-13,-35],[17,-22],[-2,-37],[-22,-21],[-22,-50],[-9,-97],[-23,78],[17,61],[-1,78],[-29,51],[-14,-16]],[[12629,82086],[11,22],[24,102],[28,10],[11,20],[-22,13],[-1,47],[15,-22],[9,34],[-36,62],[14,29],[-10,86],[23,49],[45,-24],[71,-17],[24,-82],[11,-73],[-5,-69],[14,-6],[13,-68],[17,-48],[17,5],[57,-119],[12,-52],[33,-111],[3,-126],[29,-29],[8,-82],[8,-32],[31,-50],[13,-58],[-10,-6],[-19,46],[-75,98],[-3,-31],[-23,-74],[11,-8],[14,47],[8,-19],[23,10],[5,-37],[20,-13],[10,-29],[-38,-14],[8,-36],[32,21],[14,-52],[16,-14],[11,-87],[8,-9],[-12,-49],[-20,9],[2,-32],[22,-22],[11,8],[3,46],[14,36],[9,-21],[5,-91],[-15,-34],[4,-36],[-22,-94],[-29,-40],[18,-23],[27,59],[15,-10],[0,-203],[7,-72],[-20,-105],[-37,-9],[-26,48],[-14,-19],[-17,38],[-1,37],[-38,-2],[17,53],[27,-10],[1,39],[-19,42],[-19,13],[-35,78],[9,38],[10,115],[-15,9],[-11,-58],[7,101],[8,28],[-11,39],[-5,-55],[-27,-21],[14,-103],[-18,-58],[-47,56],[-4,35],[17,58],[-18,100],[-20,-5],[-10,50],[-21,3],[12,-78],[18,-65],[6,-72],[-7,-36],[15,-17],[20,-145],[24,-26],[-4,58],[24,18],[28,-65],[4,-124],[-14,-16],[-18,74],[-7,-7],[23,-170],[-29,0],[-26,32],[-2,60],[-20,40],[-49,177],[-10,22],[-2,84],[-12,10],[-8,61],[29,8],[-27,33],[3,119],[-33,-28],[-10,26],[-18,-19],[-9,42],[6,84],[33,30],[11,-63],[17,20],[-13,29],[6,39],[14,20],[14,-14],[22,44],[-29,96],[14,12],[-16,32],[4,66],[-24,-21],[-49,87],[-4,28],[16,-1],[-9,50],[3,35],[-27,18],[6,-57],[-10,-13],[-32,39],[-16,58],[12,52],[28,14],[37,-54],[28,35],[-17,67],[-18,16],[-12,-20],[-9,17],[8,30],[-2,42],[7,63],[-5,16],[-13,-47],[-27,-65],[-22,-33],[-23,38],[-5,45]],[[12594,82026],[14,28],[11,-6],[4,-52],[-8,-48],[-10,3],[-11,75]],[[12476,82024],[28,22],[1,-43],[31,33],[8,75],[7,-2],[-9,-101],[-22,-24],[-20,-56],[-18,17],[8,30],[-14,49]],[[12742,82703],[-13,-47],[-15,-20],[-25,-2],[-17,15],[-3,87],[-11,32],[-30,-64],[13,-29],[-2,-90],[-23,-3],[-2,-31],[10,-51],[-11,-51],[-2,-62],[-17,-50],[4,-39],[-9,-64],[-10,-11],[-25,15],[-14,-103],[-15,19],[-12,52],[-7,63],[-1,109],[-10,87],[2,75],[14,48],[-3,57],[15,101],[-12,28],[-22,-1],[5,77],[-20,56],[-8,75],[2,43],[-5,91],[17,52],[16,17],[7,33],[33,-1],[1,26],[28,-40],[11,-83],[18,-54],[31,-2],[9,-21],[10,26],[-29,44],[-13,80],[-2,55],[-35,79],[11,53],[34,26],[51,-37],[25,-9],[47,-44],[33,-10]],[[12402,82457],[-9,-131]],[[12393,82326],[0,131],[9,0]],[[21709,67448],[282,1]],[[21991,67449],[0,-305],[5,0],[0,-151]],[[21996,66993],[-192,-1],[-95,0]],[[26748,53515],[51,-3],[0,-17],[33,-1],[6,-44],[53,0]],[[26891,53450],[-1,-104],[-19,4],[0,-64],[8,-46]],[[26879,53240],[-84,0]],[[26795,53240],[-21,0]],[[26774,53240],[-1,56],[5,50],[-7,64],[-15,44],[-8,61]],[[12393,82326],[-11,6],[-28,70],[-10,86],[-21,59],[-40,212],[4,48],[22,23],[-18,30],[-26,-31],[-14,88],[-11,-15],[-17,42],[-12,55],[2,34],[-14,-22],[-10,24],[-30,2],[-19,96],[19,3],[10,-29],[10,13],[-3,105],[19,53],[6,38],[-39,86],[24,63],[-4,22],[14,35],[4,53],[-33,16],[-21,-28],[-14,79],[-20,42],[-4,35],[37,69],[6,28],[-4,68],[36,64],[18,-12],[25,-85],[15,10],[18,-58],[23,-24],[38,4],[22,-14],[12,-79],[-2,-49],[-20,35],[-19,-2],[-1,-22],[21,-25],[11,-46],[29,-278],[-1,-71],[12,-56],[0,-58],[18,-142],[5,-107],[-5,-112],[-11,1],[8,-81],[3,-220]],[[12062,83572],[4,48],[-3,66],[25,9],[34,-62],[15,-74],[12,-19],[17,30],[23,-10],[-16,-82],[-24,-14],[-27,-161],[-12,6],[-40,-30],[-9,8],[3,102],[25,47],[1,50],[-22,4],[2,29],[-13,31],[5,22]],[[12270,84186],[23,-29],[23,24],[7,-95],[14,-69],[12,-143],[-14,-42],[-42,-11],[-17,12],[-44,95],[-65,99],[-27,50],[-22,-26],[-9,29],[-4,-32],[30,-55],[22,-8],[-21,-31],[6,-25],[0,-72],[-9,-50],[-31,-87],[-51,47],[-1,38],[-42,85],[-20,90],[-12,-38],[-19,43],[-10,79],[4,25],[-18,86],[2,24],[-17,61]],[[24936,55687],[-16,-1],[-13,-82]],[[24907,55604],[-119,138]],[[24788,55742],[0,98],[11,-1],[0,50],[10,-1],[-1,235],[-7,19]],[[27434,49020],[100,-1]],[[27534,49019],[7,-67],[11,-140],[16,-136]],[[27434,48610],[0,410]],[[24182,64198],[-80,-8]],[[24102,64190],[0,359]],[[24585,64247],[32,-4]],[[24617,64243],[96,-10]],[[24713,64233],[-1,-409]],[[24712,63824],[-128,10]],[[24584,63834],[1,413]],[[26672,65249],[21,1],[0,-51],[108,1]],[[26801,65200],[-1,-33],[30,1],[1,-164]],[[26831,65004],[1,-40]],[[26832,64964],[-66,2],[-48,-5],[-48,1]],[[26670,64962],[2,287]],[[25200,61880],[37,1],[87,-9]],[[25353,61837],[-1,-364]],[[25352,61473],[-61,-1]],[[20681,52634],[227,515]],[[20908,53149],[144,-395]],[[21052,52754],[41,-117]],[[21093,52637],[-101,-295]],[[20992,52342],[-28,0],[-301,252]],[[20663,52594],[18,40]],[[23584,68994],[0,-102],[68,1],[0,102],[68,-1]],[[23787,68904],[-25,-22],[-12,-39],[-2,-52]],[[23742,68691],[-193,-1]],[[23549,68690],[-2,303],[37,1]],[[22052,56327],[45,0],[1,-22],[21,5],[15,-25],[2,32],[17,-15],[9,-31],[7,18],[15,-39],[8,-3],[5,-39]],[[22198,55819],[-145,-2]],[[24765,61794],[21,92],[0,57]],[[24786,61943],[133,-6]],[[24919,61937],[0,-279]],[[24919,61658],[1,-228]],[[24920,61430],[-55,1]],[[24865,61431],[-7,62],[3,40],[-34,1],[0,17],[-31,103],[1,17],[-33,110]],[[24764,61781],[1,13]],[[26541,68347],[89,2]],[[26630,68349],[-5,-124],[-19,-5],[-8,-19],[0,-49],[-42,-6],[-13,-35],[-9,-56]],[[26534,68055],[-38,0],[0,100],[-34,0]],[[25294,62538],[98,3]],[[25392,62541],[16,1]],[[25408,62542],[1,-378]],[[25322,62161],[-29,5],[0,69]],[[22898,62998],[-1,-403]],[[22897,62493],[-114,-1]],[[22783,62492],[1,203]],[[17372,70320],[18,44],[-8,56],[16,63]],[[17398,70483],[15,-1],[0,41],[11,5],[21,-41],[5,44],[0,106],[9,-9],[8,84],[7,10],[48,-36],[17,-21],[13,67],[26,-1],[11,24],[-22,44],[-21,121]],[[17546,70920],[11,-21],[15,9],[21,-64],[12,-21],[30,-7],[20,-18],[11,61],[4,63],[25,74],[1,42],[289,186]],[[17985,71224],[13,13],[22,-15],[4,21],[26,23],[8,-10]],[[17553,69448],[-45,2],[6,23],[-16,162],[-96,0]],[[17402,69635],[3,54],[24,150],[10,23],[1,55],[24,108],[-7,54],[-13,49],[0,53],[-16,48],[-19,2],[-10,47],[-18,-5],[-9,47]],[[22000,73978],[183,0]],[[22192,73449],[-182,1]],[[22005,62492],[-155,2]],[[22339,52935],[145,0]],[[22484,52935],[-1,-60],[20,-41],[-15,-52],[2,-46],[15,-12],[-12,-42],[3,-33],[-10,-3],[11,-87],[0,-41],[13,-6],[0,-84]],[[20644,61475],[31,0],[-1,304]],[[20674,61779],[105,1],[143,3]],[[20922,61783],[-2,-438]],[[20919,60866],[-80,96]],[[20839,60962],[-83,97],[-102,-23],[-10,40]],[[20644,61076],[0,399]],[[15231,66942],[61,0],[11,-24],[2,-35],[20,-62],[-7,-38],[2,-91],[6,0],[1,-85],[12,22],[26,0],[0,17],[20,46],[0,40],[32,17]],[[15417,66749],[8,12],[18,-18]],[[15414,65826],[-109,3]],[[15305,65829],[-21,55],[-15,55],[-7,69],[2,33],[-14,81],[2,32],[-7,63],[-2,126],[13,147],[-7,107],[-17,87],[-11,2],[-11,123],[21,133]],[[25027,55481],[29,1],[0,102],[29,1],[0,102],[6,0]],[[25168,55688],[0,-420]],[[25168,55268],[-29,1]],[[25027,55275],[0,206]],[[22406,63911],[-126,0]],[[31436,38183],[13,-4]],[[31449,38179],[1,-70],[7,-1]],[[31457,38108],[-1,-5]],[[31436,38070],[-17,25]],[[31419,38095],[7,24],[0,55]],[[27391,63178],[87,0]],[[27506,63178],[4,-4],[3,-94]],[[27513,63080],[-11,3],[-5,-51],[-7,2],[-6,-40],[8,-89],[-7,-20]],[[27485,62885],[-6,-40],[-8,-7]],[[27471,62838],[-20,25]],[[27451,62863],[-10,23],[-16,7],[-8,43],[-29,82],[-12,-4],[-16,31]],[[27360,63045],[18,16],[4,83],[9,34]],[[26330,53328],[29,-4],[-2,-206]],[[26305,53107],[-53,4]],[[26252,53111],[1,213],[77,4]],[[20369,60882],[162,3]],[[20531,60885],[-6,-51],[0,-49],[-7,-79],[5,-23]],[[20523,60683],[-3,-16],[-69,-241]],[[22326,60458],[-148,-4]],[[22178,60454],[-3,0],[0,101]],[[21235,71220],[232,2]],[[21467,71222],[13,-1],[1,-404],[13,0],[0,-91]],[[21494,70726],[-139,1],[0,90],[-119,-2]],[[24091,68386],[35,0]],[[24126,68386],[65,-1],[0,-101],[67,-1]],[[24258,68283],[0,-302]],[[24258,67981],[-103,1],[0,-16]],[[24155,67966],[-67,-1],[0,18]],[[31537,38160],[9,48]],[[31565,38190],[-12,-61],[-9,-69]],[[23354,66076],[65,0]],[[23289,65672],[-32,-1]],[[23257,65671],[0,406]],[[23180,62035],[0,152]],[[23180,62187],[124,0]],[[23304,62187],[0,-152]],[[23302,61680],[-123,0]],[[23994,66479],[131,-1]],[[24131,66176],[-65,0],[0,-101]],[[21480,63000],[177,0]],[[21657,63000],[7,0]],[[21663,62496],[-24,-1]],[[21481,62494],[-1,197],[0,309]],[[31265,38069],[8,-129],[4,-18]],[[31277,37922],[-21,9]],[[31256,37931],[-6,23]],[[31250,37954],[1,107]],[[23515,65671],[0,-303],[12,0],[0,-114]],[[23527,65254],[-94,0]],[[30863,68384],[14,7],[-7,-35],[-7,28]],[[30827,68345],[7,83],[6,-34],[19,-55],[-15,-45],[-5,34],[-12,17]],[[30819,68560],[3,42],[11,-71],[-14,29]],[[30732,68434],[14,2],[3,-41],[-17,39]],[[30739,68955],[20,-27],[15,71],[12,-21],[9,43],[47,26],[-15,254],[35,19],[-6,100],[35,19],[-9,142],[69,36]],[[30978,68642],[-8,-33],[-5,27],[-12,-92],[-16,39],[0,36],[-10,-21],[-11,9],[2,-66],[-16,-71],[11,-33],[-35,-16],[-23,32],[-16,107],[6,29],[22,27],[-9,45],[-13,-35],[2,44],[-10,-3],[1,-68],[-5,0],[0,64],[-24,-56],[5,-35],[-6,-43],[14,-67],[-3,-45],[-23,-77],[9,-11],[-12,-39]],[[30793,68290],[-10,9]],[[30783,68299],[-17,53],[-4,64],[15,51],[-19,40],[6,26],[-10,10],[-18,-21],[1,113],[11,44],[1,50],[-6,41]],[[30743,68770],[-3,56],[-10,54],[9,75]],[[23590,56449],[18,-17],[9,8],[-3,-44],[14,-14],[2,-26],[26,-68],[15,9],[-1,-24],[41,-8],[0,-34],[23,-3]],[[23734,56228],[-2,-91],[10,-10],[22,-58],[7,-5]],[[23771,56064],[-9,2],[-11,-46],[-9,13],[-6,-39],[-4,37],[-6,-56],[-3,36],[-13,-14]],[[23710,55997],[0,-1]],[[23710,55996],[-16,22],[-6,-21],[-5,30],[-12,17],[-11,-46],[-21,27],[-3,-29],[-8,18],[-5,-27],[-10,9],[2,36],[-9,-6],[-11,25],[0,54],[-8,-8]],[[23587,56097],[3,352]],[[23569,58965],[44,-3],[1,50],[15,0],[1,84],[88,-7],[12,-5],[0,28],[24,8]],[[23754,59120],[-16,-168],[-1,-233],[-4,-151]],[[23733,58568],[-45,4],[0,-16],[-103,10]],[[23585,58566],[-16,399]],[[24128,57628],[17,-3],[9,-52],[-3,-57],[6,15],[-3,36],[9,36],[53,-5],[0,101],[30,-2]],[[24246,57697],[14,-1],[-2,-328],[-4,-22],[-6,-103],[24,-2],[-1,-153]],[[24271,57088],[-49,4]],[[24222,57092],[-11,1]],[[24074,57512],[-5,0],[1,67],[29,-1],[0,34],[29,-4],[0,20]],[[24246,57760],[30,11],[17,-36],[21,-24],[21,7]],[[24335,57718],[-1,-127],[31,-2],[-2,-288],[18,-54],[-8,-54],[9,-31],[-10,-40],[-2,-43]],[[24370,57079],[-8,1]],[[24362,57080],[-91,8]],[[24246,57697],[0,63]],[[21194,60759],[91,1]],[[21285,60760],[197,0]],[[21482,60760],[0,-297]],[[21482,60463],[0,-461]],[[21482,60002],[-183,3],[-22,5],[-62,1]],[[21215,60011],[-24,0]],[[21191,60011],[1,444],[2,0],[0,304]],[[18150,66443],[19,11]],[[18169,66454],[12,16],[17,-16],[14,25],[11,-40],[24,16],[22,127],[23,33],[6,-5]],[[18298,66610],[27,21],[19,-68],[19,-4]],[[18363,66559],[17,2],[0,-44],[48,-2],[1,-303]],[[18429,66212],[0,-383]],[[18429,65829],[-229,-12],[-61,6]],[[18139,65823],[-67,1]],[[18072,65824],[-1,493],[60,-1],[1,114],[18,13]],[[25667,55164],[40,0],[-1,248]],[[25706,55412],[0,26],[16,-4],[59,2],[16,-60],[10,2]],[[25807,55378],[1,-106],[10,-64],[8,-12],[-2,-58],[23,-71]],[[25847,55067],[-11,-3],[0,-50]],[[25836,55014],[-84,-2],[1,-52],[-57,3]],[[25696,54963],[-28,-1],[0,77]],[[25668,55039],[-1,125]],[[26617,54223],[0,-203]],[[26617,54020],[0,-58],[-53,-1]],[[26564,53961],[-12,33],[-26,19]],[[26526,54013],[4,72]],[[23139,68893],[137,-1],[2,-102]],[[23278,68790],[1,-404]],[[23143,68388],[0,403],[-4,1],[0,101]],[[28051,60406],[60,344],[2,64]],[[28113,60814],[17,64],[6,4]],[[28136,60882],[16,-38],[-2,-42],[10,-26]],[[28160,60776],[-4,-34],[-13,-202]],[[28143,60540],[-14,-12],[-14,-89]],[[28115,60439],[-24,-69],[-6,12],[-15,-16],[-19,40]],[[23036,63808],[111,0]],[[23147,63808],[16,-1]],[[23163,63807],[-1,-304]],[[23162,63503],[-63,0]],[[23099,63503],[-63,1]],[[23036,63504],[0,304]],[[22051,58403],[0,-229]],[[22051,57895],[-150,1]],[[22641,72434],[114,-1]],[[22755,72433],[0,-404],[6,0],[0,-100]],[[22657,64316],[0,405]],[[26272,68754],[-135,1]],[[26137,68755],[0,350]],[[22311,63000],[6,0]],[[22317,63000],[-1,-507]],[[25263,62589],[0,186]],[[25263,62775],[128,5]],[[25391,62780],[1,-239]],[[27442,61787],[39,139],[15,109]],[[27496,62035],[18,-14]],[[27514,62021],[11,4],[9,-54],[11,12]],[[27545,61983],[27,-197],[-17,-159]],[[27523,61437],[-22,49]],[[27501,61486],[-48,106],[-4,-5],[-10,68],[6,13],[-11,93],[8,26]],[[25111,57676],[54,1]],[[25165,57677],[0,-159],[19,0],[0,-119],[10,0]],[[25194,57399],[0,-186],[-5,0]],[[25189,57213],[-98,2]],[[25091,57215],[0,252],[15,0],[5,51],[0,158]],[[26747,53576],[9,7],[15,101],[0,54],[12,28],[5,44]],[[26788,53810],[0,125]],[[26788,53935],[5,14],[31,-12],[9,39]],[[26833,53976],[0,-168],[58,1]],[[26891,53809],[0,-133],[9,-1],[-1,-103]],[[26899,53572],[-8,0],[0,-122]],[[26748,53515],[-1,61]],[[22628,62189],[0,101]],[[22628,62290],[155,0]],[[22783,62290],[0,-406]],[[22783,61884],[-154,0]],[[22629,61884],[-1,305]],[[24726,57012],[27,0],[-1,99],[30,2]],[[24782,57113],[1,-244],[16,-41],[0,-123]],[[24799,56705],[0,-102],[-88,0]],[[24711,56603],[0,221],[15,-1],[0,189]],[[22329,70816],[-10,1]],[[22473,62188],[155,1]],[[22629,61884],[0,-101]],[[22629,61783],[-155,-1]],[[22474,61782],[-1,204]],[[22473,61986],[0,202]],[[25606,62539],[52,-5]],[[25658,62534],[103,-2]],[[25761,62532],[0,-202]],[[25761,62228],[-61,-1]],[[25700,62227],[-55,0]],[[25645,62227],[-39,4]],[[25606,62231],[0,308]],[[24041,63902],[48,0]],[[24089,63902],[93,4]],[[24183,63855],[1,-309]],[[24184,63546],[-140,0]],[[24044,63546],[-3,0]],[[27031,64280],[132,0]],[[27163,64280],[1,-38]],[[27164,64242],[-6,-3],[0,-220],[-11,1]],[[27147,64020],[-133,14]],[[27005,64164],[-1,116],[27,0]],[[24146,58111],[-1,-102],[-9,-28],[-3,-78],[7,-18],[-5,-69],[-10,-2]],[[24125,57814],[-12,-32],[-13,-11],[6,38],[-14,-35],[-12,-8],[-90,6]],[[23990,57772],[0,37],[17,11],[15,58],[8,3]],[[25821,64562],[-32,1]],[[25789,64563],[-97,2]],[[25692,64565],[0,302]],[[31449,38179],[11,10],[6,26]],[[31466,38215],[4,-20]],[[31470,38195],[6,-41]],[[31476,38154],[-10,-32],[-1,-27],[-8,13]],[[22399,65529],[127,0]],[[22526,65529],[1,-4],[0,-299]],[[22401,65126],[-2,-1]],[[21615,56321],[146,4]],[[25168,59746],[0,203]],[[25168,59949],[31,-5],[60,-1]],[[25259,59943],[0,-223]],[[25259,59720],[-1,-290]],[[25258,59430],[-8,0]],[[25250,59430],[-83,2]],[[25167,59432],[1,314]],[[25958,59688],[47,115],[19,23]],[[26024,59826],[35,-10],[5,-17]],[[26064,59799],[2,-48],[13,-3],[7,-50],[13,2],[-7,-50],[16,-84]],[[26108,59566],[-14,-4],[-84,8]],[[26010,59570],[-52,8]],[[25958,59578],[8,39],[-8,71]],[[24938,62338],[14,0],[0,33],[94,0]],[[25045,62038],[-96,2]],[[24949,62040],[0,153],[-11,-1],[0,146]],[[23742,57293],[15,0],[2,55],[15,-2],[9,25],[20,15]],[[23803,57386],[88,-2]],[[23891,57384],[-2,-68],[-1,-336]],[[23888,56980],[-1,-67]],[[23887,56913],[-19,2]],[[23868,56915],[-127,11]],[[23741,56926],[1,367]],[[25957,59342],[42,-16]],[[25999,59326],[-5,-144],[5,-38],[14,-21]],[[26013,59123],[-8,-123]],[[26005,59000],[-9,-4],[-7,-40],[-13,26],[0,-22],[-13,15],[-8,-27],[-20,-1]],[[25935,58947],[-22,244]],[[25412,63363],[89,2],[17,-15],[6,16]],[[25524,63366],[1,-320]],[[25525,63046],[0,-152]],[[25525,62894],[-44,0],[0,12],[-76,-7]],[[25405,62899],[-1,238]],[[25404,63137],[-1,124],[9,0],[0,102]],[[27909,63964],[32,242],[16,140]],[[27957,64346],[126,0]],[[28083,64346],[-17,-93],[-9,-4],[-1,-58],[-11,-59],[-15,-40],[-6,-79],[-1,-79],[-16,-51]],[[28007,63883],[-10,-98]],[[27997,63785],[-63,2],[-3,32],[-11,15],[-34,0]],[[27886,63834],[23,130]],[[15601,68997],[2,34]],[[15603,69031],[28,-13],[12,-60],[12,40],[6,-7],[37,89],[23,0],[10,-18],[19,15],[32,-45],[51,10],[10,-9],[15,-63],[26,31],[28,-43],[65,-4]],[[15977,68954],[-3,-80],[5,-24],[-4,-90],[-11,-29],[1,-115]],[[15965,68616],[1,-125],[6,-27]],[[15972,68464],[-142,-11],[0,-25],[-16,-16],[-53,12],[-20,45],[-32,28],[-29,-4],[0,-33],[-10,1],[-1,-68],[-72,-1],[4,31],[-8,28],[0,38]],[[15593,68489],[-10,48],[-8,8],[7,33],[-3,84],[7,13],[-2,72],[-13,58],[1,20],[20,18],[3,54],[28,19],[-13,31],[-9,50]],[[23583,69198],[1,-204]],[[23549,68690],[-44,0]],[[23505,68690],[-9,33],[-15,16]],[[23481,68739],[-34,56],[-7,-4],[-48,95],[-16,49],[-13,-6],[-8,37],[-11,6]],[[23344,68972],[-23,52],[-12,11]],[[23309,69035],[0,161],[66,0]],[[23401,70916],[118,0]],[[23519,70916],[3,-20],[19,-3]],[[23541,70893],[2,-669]],[[23543,70224],[-138,-1]],[[15624,69410],[20,49],[-9,28],[8,29],[-11,64],[11,4],[0,43],[9,28],[19,-33],[14,3]],[[15685,69625],[4,17],[27,-17],[-5,-101],[-9,-50],[11,-25],[12,-57],[31,-46],[16,-96],[41,-60],[183,0]],[[15996,69190],[-6,-65]],[[15990,69125],[-15,-18],[-1,-38],[14,-23],[-12,-38],[1,-54]],[[15603,69031],[-1,24],[16,49],[-24,23],[18,115],[19,16],[1,51],[-10,31],[2,70]],[[28536,63642],[7,43],[6,-8],[20,47],[11,8]],[[28695,63870],[78,-208]],[[28773,63662],[-18,-30],[0,-86],[-16,-99],[1,-97],[-21,-127],[-19,-44]],[[28700,63179],[-27,0]],[[28673,63179],[-2,0]],[[28671,63179],[-10,62],[-18,54],[-12,61],[-3,45],[-24,43],[-5,55],[-11,63],[-10,-6],[-25,20],[-17,66]],[[24213,58511],[112,-8]],[[24325,58503],[13,8],[-1,-207]],[[24337,58304],[0,-91],[-15,-23],[-1,-91],[-72,6]],[[24249,58105],[-40,1]],[[26653,54012],[76,-3],[9,4]],[[26738,54013],[11,-39],[15,-3],[15,-39],[9,3]],[[26788,53810],[-50,6],[0,-31],[-25,3],[0,29],[-16,1],[0,89],[-36,1]],[[26661,53908],[-8,104]],[[6254,41293],[5,69],[11,56],[14,6],[13,-33],[10,-78],[10,-50],[24,29],[18,35],[26,-21],[0,-16],[17,-51],[10,-15],[5,-40],[31,-37],[5,-32],[0,-52],[-8,-43],[-13,-40],[-6,3],[-17,-36],[-14,10],[-30,-53],[-21,-9],[-17,26],[-7,210],[-7,20],[-14,-24],[-26,50],[-13,58],[-6,58]],[[6253,40841],[7,29],[28,57],[10,-30],[-4,-44],[5,-17],[-13,-19],[-5,15],[-18,-23],[-10,32]],[[6153,41274],[7,27],[13,5],[26,-19],[17,-60],[8,-51],[-9,-65],[-19,-29],[-17,-5],[-7,60],[-3,73],[-14,32],[-2,32]],[[6166,41601],[21,-29],[6,-36],[6,21],[-6,24]],[[6193,41581],[14,-4],[27,18],[17,-25],[-8,-55],[-18,-51],[-20,-21],[-35,32],[-26,31],[-15,-14],[-29,-5],[-16,17],[6,52],[9,29],[-2,58],[17,-2],[3,-14],[49,-26]],[[24166,61011],[1,188]],[[24167,61199],[61,-5]],[[24228,61194],[46,-7]],[[24274,61187],[-2,-475]],[[24272,60712],[-62,2]],[[22515,50247],[0,-646]],[[24456,65668],[-129,2]],[[24327,65670],[-1,102],[1,407]],[[21748,58913],[151,-1]],[[24197,65260],[98,1]],[[24295,64857],[-65,-1]],[[26862,62984],[0,17],[31,-6],[1,52],[34,-7],[1,69],[33,-8]],[[26962,63101],[-2,-68],[33,-7],[-1,-33],[30,-7]],[[27022,62986],[-3,-105],[-31,8],[-3,-103]],[[26985,62786],[-62,13],[-1,-30],[-33,7],[0,-17],[-32,8]],[[26857,62767],[2,117]],[[26235,54630],[10,-2],[18,40],[32,12],[12,101],[8,13]],[[26315,54794],[16,19]],[[26331,54813],[-5,-47],[-1,-305]],[[26325,54461],[-73,-2]],[[26252,54459],[8,38],[-12,40],[-18,28],[5,65]],[[19541,71361],[105,-2]],[[19870,71367],[1,-61],[9,-27],[-13,-97],[12,0],[0,-118],[4,0]],[[19883,71064],[0,-117],[-41,0],[-28,-102],[0,-51],[-81,0],[-12,-33],[-12,1],[0,-120],[-104,-1]],[[26148,55852],[78,-2]],[[26247,55616],[-41,-62],[-6,27],[-3,-36],[-33,-40]],[[26164,55505],[-16,347]],[[24550,73035],[15,36],[25,30],[14,-13],[0,-67],[17,-17],[-6,-26],[10,-48],[16,-3],[35,29],[6,-29],[25,15],[26,-18],[19,13],[48,8],[29,-28],[9,-66],[34,-53],[15,35],[20,9],[13,-20],[23,6],[11,-18],[25,22],[-27,-56],[-10,20],[-4,-34],[-17,-15],[-26,-58],[-37,-34],[-14,-37],[-52,-44],[-48,-54],[-15,-6],[-42,-45],[-4,-14],[-51,-77],[-37,-79],[-43,-107]],[[24552,72192],[1,493],[-2,17],[-1,333]],[[23336,66485],[132,-2]],[[23468,66483],[0,-100],[16,0],[-1,-308]],[[27863,59477],[95,0]],[[27958,59477],[1,-18],[-2,-338]],[[27957,59121],[-42,4]],[[27859,59128],[4,349]],[[3834,96137],[-84,65],[-51,23],[-29,35],[-19,70],[-54,84],[-45,40],[-81,41],[-42,-6],[37,40],[92,59],[20,46],[3,57],[19,76],[11,236],[-8,117],[179,-31],[68,6],[144,42],[79,28],[77,15],[77,63],[41,65],[29,30],[53,87],[81,192],[21,92],[7,79],[-2,186],[39,233],[84,183],[65,179],[37,77],[129,162],[96,-35],[69,-3],[68,40],[64,53],[93,104],[74,108],[44,86],[114,188],[33,31],[99,63],[7,-47],[55,-44],[82,-12],[68,15],[13,24],[32,-3],[61,17],[73,51],[74,85],[71,121],[36,88],[86,185],[68,76],[12,-68],[47,-38],[39,-2],[39,-20],[16,-82],[27,41],[99,-49],[15,-98],[-54,-71],[-35,-63],[-41,-4],[12,-146],[81,-15],[44,59],[-7,76],[16,8],[31,67],[23,12],[19,-48],[4,63],[-27,43],[35,55],[21,-47],[-3,65],[15,22],[71,-74],[45,-66],[13,-42],[-11,-33],[1,-109],[9,-49],[61,10],[35,-37],[16,-40],[48,62],[30,75],[112,0],[69,42],[53,-11],[40,-34],[84,-2],[61,-32],[45,-35],[9,-34],[-26,-11],[-26,-83],[-26,-30],[14,-93],[25,5],[19,-24],[45,-6],[10,-28],[69,-20],[33,9],[-17,-43],[9,-25],[-53,-26],[-8,-24],[20,-25],[89,6],[72,-41],[14,-33],[28,5],[44,86],[57,15],[24,-18],[10,34],[40,7],[29,-27],[15,-59],[42,27],[38,8],[58,83],[13,-22],[45,20],[21,-15],[34,26],[12,-30],[66,-8],[62,-72],[28,-1],[19,-24],[26,31],[24,-8],[37,-73],[0,-45],[35,-19],[41,51],[1,-63],[26,57],[81,-77],[14,-67],[24,-23],[49,1],[43,-15],[29,36],[23,-73],[48,-10],[29,45],[43,-12],[62,12],[66,-10],[49,-38],[50,-3],[17,28],[65,-95],[28,-8],[32,-54],[45,-16],[20,-30],[45,-12],[17,-26],[27,32],[66,-20],[45,77],[48,6],[9,20],[84,49],[18,24],[86,30],[42,-25],[48,32],[9,-18],[79,-73],[53,-37],[70,-80],[26,-67],[37,-11],[87,-97],[68,-40],[52,-62],[27,-47],[61,-13],[58,-45],[0,-1335]],[[31527,37962],[38,-55]],[[31565,37907],[-17,-36]],[[31548,37871],[-9,14],[-2,35],[-10,42]],[[26051,64669],[86,4]],[[26136,64570],[1,-306],[-32,-1]],[[26105,64263],[-53,0]],[[24516,60822],[2,51],[13,-1]],[[24657,60866],[0,-107],[31,1]],[[24688,60760],[-3,-53],[-1,-327]],[[24684,60380],[0,-52],[-52,-2]],[[24632,60326],[-5,-1],[1,119],[-6,1],[1,267],[-61,1],[-32,-18],[-15,0]],[[21868,55312],[-93,1],[-13,7]],[[27385,60182],[15,38],[54,75]],[[27454,60295],[-2,-39],[7,-32],[17,27],[-10,-38],[9,-47]],[[27461,60115],[11,-48],[-7,-1],[7,-73]],[[27472,59993],[-15,-49],[-11,-13]],[[27446,59931],[-13,-43],[-16,-18]],[[27417,59870],[-34,145],[-9,27],[-5,54]],[[27369,60096],[-5,48],[21,38]],[[23665,63207],[0,50]],[[23790,63050],[0,-101]],[[23790,62949],[-125,3]],[[25598,55951],[23,50],[-5,27],[7,41],[24,16],[0,34],[10,-1],[5,36],[4,100],[15,16],[5,33]],[[25686,56303],[19,33],[35,-3],[31,-87],[19,-1]],[[25790,56245],[10,0],[5,-51],[0,-76],[-7,-42],[0,-69],[9,-17]],[[25807,55990],[0,-26],[-12,-7],[-12,-59],[-18,-1],[-14,-58],[-9,-1],[-7,-57],[-15,-7],[0,-33],[-14,0],[-25,-75],[-3,-25],[-13,0]],[[25665,55641],[-10,1]],[[25655,55642],[0,33],[-27,36],[-10,60],[-10,9],[0,34],[-14,53],[-15,18],[2,42],[12,-7],[5,31]],[[6433,39922],[2,44],[19,76],[12,7],[13,93],[16,52],[3,58],[-17,94],[-4,45],[-1,105],[8,37],[18,-9],[18,-32],[3,-32],[22,-44],[15,-47],[12,6],[25,-32],[39,-77],[13,-19],[22,-61],[16,-57],[17,-76],[-3,-47],[1,-90],[8,-10],[16,12],[7,-57],[-1,-57],[22,-82],[22,-39],[5,-21],[-4,-44],[-13,-51],[-17,-47],[-14,-56],[-23,-38],[-20,-47],[-20,-18],[-16,15],[-9,-9],[-18,-66],[-16,-25],[-13,-48],[-14,-16],[-12,-59],[1,-33],[-8,-37],[-5,-59],[-20,-63],[-15,61],[-22,52],[-22,29],[-10,95],[5,113],[4,151],[-10,106],[1,46],[-9,12],[-5,114],[-7,66],[-9,8],[-8,108]],[[17077,71214],[15,1],[16,81],[26,6],[14,-32],[23,5],[14,26],[10,-49],[10,-4],[1,-33],[15,-51],[23,-42],[7,-97]],[[17251,71025],[0,-59],[-36,1],[1,-17],[-18,-17],[0,-304],[-17,0],[0,-144]],[[17181,70485],[-34,1]],[[17147,70486],[0,142],[-3,0],[0,253],[-17,-1],[0,53],[-12,17],[-6,86],[-35,-1],[3,179]],[[25993,55935],[-5,-26],[24,-8],[5,34],[34,-4]],[[26051,55931],[-2,-199],[-1,-254]],[[26048,55478],[-90,-1],[-9,-18]],[[25949,55459],[0,17],[-46,0]],[[25903,55476],[0,106],[15,-1],[1,118],[38,-2],[1,102],[15,16],[0,68],[5,0],[0,52],[15,0]],[[23026,66484],[178,-1]],[[23204,66483],[33,1]],[[23257,66077],[-191,4]],[[23066,66081],[9,17],[-9,55]],[[23066,66153],[-5,48],[-11,29],[0,76],[9,44],[-4,44],[-14,8]],[[23041,66402],[-13,31],[4,45],[-6,6]],[[23166,65257],[139,-1]],[[23401,65255],[0,-403]],[[23337,64853],[-138,0]],[[23199,64853],[11,17],[-23,19]],[[23187,64889],[3,42],[-5,63],[13,41],[-20,27],[5,60]],[[23183,65122],[1,85],[-20,10],[2,40]],[[18207,67657],[19,25],[8,-7],[8,-98],[10,-3],[0,-151],[76,-1],[0,-96],[99,0]],[[18427,67326],[0,-202]],[[18427,67124],[-66,0],[0,-306],[2,-100],[16,0],[0,-101],[-16,0],[0,-58]],[[18298,66610],[0,209],[16,0],[0,408],[-84,0]],[[18046,67227],[0,68],[-6,0],[1,80],[-39,8],[2,76],[-6,43],[11,49],[-15,25],[-10,37],[3,32],[-27,37],[6,82],[-7,29],[6,61],[-7,14],[-7,75],[-12,-27],[-12,13],[-15,-13],[2,29],[-39,49]],[[17875,67994],[-2,65],[7,28]],[[30697,68452],[13,68],[2,64],[9,25],[6,-26],[-9,-35],[1,-36],[-8,-70],[-10,-29],[-4,39]],[[30556,68965],[16,10],[8,61],[12,-4],[5,-41],[16,8]],[[30613,68999],[18,9],[6,-99],[96,67],[6,-21]],[[30743,68770],[-8,-73],[-14,-40],[-11,33],[-7,-32],[-15,-4],[14,-81],[-3,-48],[-12,-23],[-7,-53]],[[30680,68449],[-26,7],[-41,127],[-22,-65],[-15,40],[-2,-17]],[[30574,68541],[-27,17]],[[30547,68558],[17,141],[13,-8],[7,102],[-12,7],[6,104],[-19,8],[5,30],[-8,23]],[[30077,66160],[8,24]],[[30085,66184],[3,-10],[13,63],[-14,-22]],[[30087,66215],[-5,24],[12,27],[8,-25],[9,18],[12,89]],[[30123,66348],[18,-1]],[[30141,66347],[-8,-42],[11,-74],[-13,10],[2,-46]],[[30133,66195],[-14,-11],[-5,-42],[-15,-10],[-5,-36],[-17,64]],[[29567,66693],[26,-2]],[[29593,66691],[131,-14]],[[29724,66677],[49,-6]],[[29773,66671],[3,-55],[12,-14],[0,-54],[-10,-18],[-1,-78],[7,-24],[-13,-39],[2,-45],[-6,-24],[-3,-89]],[[29764,66231],[-11,-47],[0,73],[-6,64],[-30,-16],[-2,31],[-59,-33],[1,55],[-16,-8],[-5,24],[-27,20],[-1,67],[-28,17]],[[29580,66478],[7,99],[-1,28],[-11,10],[13,36],[-21,-2],[0,44]],[[26534,68055],[-5,-144],[-8,-42],[13,-91],[16,-32],[9,33],[5,-38],[20,-21],[8,-25]],[[26592,67695],[1,-143]],[[23039,68388],[0,404]],[[23039,68792],[1,102]],[[23040,68894],[99,-1]],[[24494,56008],[28,41],[-2,33],[-25,51],[2,28],[17,16],[7,-35],[16,-22],[12,18],[-8,50],[-13,-14],[-10,26],[1,59],[24,2],[8,-18],[10,34],[-16,26],[-7,55],[18,78],[-22,34],[3,29],[16,23],[5,-43],[11,16],[-7,45],[24,6],[8,61],[-3,24],[-11,-3],[-9,29]],[[24571,56657],[0,1]],[[24571,56658],[82,-1],[1,-153]],[[24654,56504],[-1,-432],[-29,-1],[0,-101]],[[24624,55970],[-126,0]],[[24498,55970],[-4,38]],[[26542,69558],[137,6]],[[26679,69564],[8,-51],[11,-30],[14,-133],[-20,21],[-16,34],[-15,-41],[4,-110],[12,-44],[21,-26],[0,-26]],[[26698,69158],[-158,-2]],[[24721,71146],[19,40],[12,3],[39,49],[38,34],[39,106]],[[24868,71378],[7,0],[0,-201],[34,0],[0,-101],[105,0],[0,-201],[104,-1]],[[25118,70874],[0,-274]],[[25118,70600],[-28,48],[-233,188]],[[24857,70836],[-54,43],[1,27],[-28,167],[-27,16],[-10,24]],[[24739,71113],[0,0]],[[24739,71113],[-12,-6],[-6,39]],[[30255,70100],[8,-1],[15,41],[24,38],[-9,71],[21,66],[23,45],[5,56],[-7,28],[-14,0],[0,66],[10,38],[-8,14],[15,51],[5,46],[-15,44],[16,115],[8,18],[-1,37],[17,32],[14,59],[11,8],[10,183]],[[30487,71155],[0,-209],[-3,0],[1,-486],[12,8],[10,-140],[-10,-14],[-4,40],[-11,-3],[9,-34],[-6,-107],[-15,9],[-1,-90],[13,-16],[10,-59],[-8,-71],[-14,-28],[35,-516],[10,-103],[29,16],[4,34],[41,22]],[[30589,69408],[20,-307],[4,-102]],[[30556,68965],[-3,32],[-40,-22],[0,-34],[13,-59],[-7,-51],[-48,36],[-4,-36],[-17,51],[-21,-12]],[[30429,68870],[-9,82],[-10,-4],[-10,217],[-27,-16],[-6,106],[11,7],[-13,210],[-38,-21],[-5,64],[-29,-24],[-28,428],[3,2],[-13,179]],[[24524,54436],[17,9],[7,27],[14,-31],[5,42],[-2,53],[12,-8],[16,79],[-4,18],[-6,-40],[-23,17],[0,58],[8,20],[-8,35],[-10,-20],[-23,49],[3,58],[5,1],[17,-48],[10,7],[-5,26],[-20,39],[2,18]],[[24539,54845],[7,16]],[[24546,54861],[22,-1],[1,-191],[3,38],[25,-1],[0,154],[37,-11],[2,62]],[[24636,54911],[9,-1],[0,-34],[9,1],[1,-51],[18,0],[10,-17],[0,-28]],[[24683,54781],[-14,-33],[5,-39],[-14,-83],[2,-41],[-15,16],[-7,-15],[3,-40],[-9,-94]],[[24634,54452],[-17,-58],[4,-25],[-14,3],[-16,-49],[-7,21],[-3,-60],[-31,39]],[[24550,54323],[0,7]],[[24550,54330],[7,43],[-15,24],[2,-62]],[[24544,54335],[-32,11],[2,79],[10,11]],[[28682,67787],[49,-14],[0,45],[69,-21]],[[28800,67797],[5,-255]],[[28805,67542],[-16,16],[-20,-185],[7,-7],[-6,-190]],[[28770,67176],[-14,24],[-17,8]],[[28739,67208],[-58,103],[2,-63],[-8,-15],[-10,38],[-6,-42],[-7,34],[-48,-3]],[[28604,67260],[-1,34],[-34,1],[-3,188]],[[28566,67483],[26,57],[10,8],[19,54],[14,5],[20,-15],[17,19],[9,53],[1,123]],[[23278,68790],[66,0],[0,182]],[[23481,68739],[0,-251],[-67,-1],[0,-101]],[[26541,65234],[1,271]],[[26542,65505],[33,4]],[[26575,65509],[86,11]],[[26661,65520],[1,-26],[21,-28],[13,17],[26,-65],[19,-26]],[[26741,65392],[-70,-5]],[[26671,65387],[-43,-2],[-11,-54],[-26,-49],[-2,-42],[-10,-31],[-38,-60]],[[26541,65149],[0,85]],[[24456,65159],[0,204]],[[24586,65362],[33,-1],[-1,-167]],[[24618,65194],[-17,3],[-23,-40],[-13,15],[-19,-21],[-8,-96]],[[24538,65055],[-82,3],[0,101]],[[22569,57108],[0,-252]],[[22569,56856],[0,-173]],[[22569,56683],[-8,-32],[-20,22],[-15,0],[-19,28],[-17,-85]],[[22490,56616],[-17,-25],[-24,96],[-11,14]],[[22438,56701],[0,206],[-14,-1],[0,85]],[[23337,64552],[-120,0]],[[23217,64552],[-7,45],[3,44],[-9,20],[-5,68]],[[23199,64729],[4,31],[-4,93]],[[29435,64577],[10,-65],[8,-167],[2,-132]],[[29455,64213],[-37,-33],[-54,9]],[[29364,64189],[-5,40],[12,34],[0,83],[7,33],[-19,55]],[[29359,64434],[15,81],[11,-15],[10,42],[21,27],[19,8]],[[20768,71489],[30,0],[24,50],[29,161],[-3,161],[-19,126],[-18,36],[8,41]],[[20819,72064],[81,-1],[0,51],[24,-1]],[[20924,72113],[0,-78]],[[20924,72035],[0,-801]],[[20924,71234],[-86,0],[0,33],[-18,17],[-53,0]],[[20767,71284],[1,205]],[[24848,59299],[58,-3],[6,48],[15,-31],[18,12],[19,-60],[0,-27]],[[24964,59238],[-19,5],[0,-37],[21,-39],[1,-27],[-15,-15],[-30,16],[-3,-21],[21,-58]],[[24940,59062],[11,-41],[-3,-36],[-22,-40],[-3,-75],[-12,-23]],[[24911,58847],[-63,-2]],[[24848,58845],[0,454]],[[24324,63442],[113,-3]],[[24437,63439],[5,-21],[-8,-66],[5,-38],[15,-34],[3,-58]],[[24457,63222],[-2,-31],[18,-55]],[[24473,63136],[-114,2],[0,-34]],[[24359,63104],[-37,1]],[[19530,55597],[112,1],[55,-10],[125,0]],[[19822,55588],[38,-1],[8,-154],[-5,-13],[-1,-63],[8,-45],[15,-13],[3,-44],[-3,-71],[15,-88],[-1,-136],[-4,-37],[36,-28]],[[19762,54032],[-86,-1],[0,252],[-4,0],[1,222],[-1,286],[-30,0],[0,102],[-58,-1],[0,203],[-54,1]],[[19530,55096],[0,501]],[[28228,62493],[21,175],[9,45]],[[28270,62716],[17,-25],[15,1],[6,-45],[13,-16],[10,-36]],[[28331,62595],[-16,-58],[-1,-58],[10,-13],[6,-39],[37,-21]],[[28367,62406],[-57,-245]],[[28310,62161],[-5,46],[-11,12],[-8,40],[-10,13]],[[28276,62272],[-85,83]],[[28191,62355],[28,78],[9,60]],[[21227,69571],[2,202],[2,403],[0,247]],[[21231,70423],[263,-1]],[[21494,70422],[0,-549]],[[21494,69873],[0,-506]],[[21494,69367],[-267,2]],[[22428,51565],[65,224]],[[22525,51906],[75,-220],[8,-112]],[[22608,51574],[-25,-80],[-61,-104]],[[22522,51390],[-10,29],[0,41],[-10,23],[0,34],[12,21],[-22,29],[-17,-15],[-18,21],[-11,-12],[-18,4]],[[22203,48678],[23,63],[11,-53],[105,-5]],[[22342,48120],[-16,-128],[-44,-121]],[[22282,47871],[-2,57],[-6,42],[-3,79],[-8,25],[-1,49],[-7,64],[-17,43],[2,31],[-13,26],[-7,37],[5,20],[-11,46],[-9,7],[-1,52],[6,31],[-3,66],[4,29],[-8,103]],[[22865,49435],[17,36],[9,45],[18,127],[27,53]],[[22936,49696],[-8,-92]],[[22928,49604],[-27,-104],[-15,-73],[-11,-83]],[[22875,49344],[-10,91]],[[22945,49905],[-2,-54]],[[22943,49851],[-3,-64]],[[22940,49787],[-18,-48],[-17,-61],[-8,-1],[-18,30],[0,42]],[[22879,49749],[-27,80],[0,21],[93,55]],[[22827,49623],[21,-23],[24,57],[8,-74],[-7,-23],[-24,-140]],[[22849,49420],[-35,202]],[[22814,49622],[13,1]],[[23690,52143],[60,1]],[[23750,52144],[55,2]],[[23805,52146],[-5,-40],[9,-79],[-12,-70],[9,-19],[-6,-16]],[[23800,51922],[-5,-35],[-14,-39],[-7,-78],[-11,-65]],[[23763,51705],[4,92],[-5,39],[-39,41],[-9,18],[0,38],[-17,26],[3,51],[-10,39]],[[23690,52049],[7,51],[-7,43]],[[21124,54191],[73,0],[0,100]],[[21271,54290],[0,-505]],[[21271,53785],[-147,-1]],[[21124,53784],[0,407]],[[27938,60641],[12,13]],[[27950,60654],[34,-113],[6,-31],[13,-15],[2,-37],[10,16]],[[28015,60474],[0,-62],[-9,-27],[-16,-85]],[[27990,60300],[-14,-33],[-12,10],[-13,-28]],[[27951,60249],[-9,8],[-2,33],[-16,6],[-2,37],[-26,177]],[[27896,60510],[12,46],[23,52],[7,33]],[[16477,71907],[1,117],[23,51],[0,34],[12,17],[0,34],[96,5],[0,100],[36,99],[23,17],[6,50],[0,68],[12,16],[0,34],[12,34],[0,101],[24,35],[6,52],[34,0]],[[16762,72771],[3,-22]],[[16765,72749],[-2,-793]],[[16655,71346],[0,-70],[-24,2]],[[16631,71278],[-16,56],[-30,-93],[-25,1],[-12,-15],[-34,-9]],[[16514,71218],[-20,56],[-8,71]],[[27375,62681],[17,57],[27,61],[5,40],[16,4],[11,20]],[[27471,62838],[0,-73],[4,-7],[-20,-86],[16,-60],[-6,-16],[11,-30],[-19,-33]],[[27457,62533],[-17,-30],[-12,-59],[-8,6]],[[27397,62466],[-29,190],[7,25]],[[27599,62277],[53,31],[9,115],[11,50]],[[27802,62297],[2,-8]],[[27804,62289],[-7,-43],[-22,11],[3,-36],[-18,-27],[-9,-40],[9,-71],[-33,-135]],[[27545,61983],[12,57],[31,3],[8,110],[-3,65],[6,59]],[[23317,67578],[19,-1]],[[23336,67577],[0,-285]],[[23204,67295],[0,282]],[[26626,60600],[12,-104],[-4,-27],[1,-69]],[[26635,60400],[-1,-55],[6,-34]],[[26640,60311],[-19,40],[-16,76],[-7,-24],[-29,13]],[[26569,60416],[-10,39],[-9,77],[-9,34],[0,47]],[[28053,59478],[37,1]],[[28090,59479],[13,-276],[-8,-47]],[[28042,59050],[-3,9],[-1,317],[4,69],[11,33]],[[19056,56825],[0,-307],[209,0],[0,-492]],[[19265,56026],[0,-103],[-16,-26],[-24,-1],[-20,-32],[-17,3],[-18,-16],[-2,-21],[-19,-12],[-10,-41],[2,-123],[11,-70],[-12,-3]],[[19140,55581],[-16,-10],[-24,-61],[-11,10],[-13,-36],[-4,-40],[-9,-8],[-1,-50],[-15,-50],[-46,309],[-8,107],[-18,145]],[[18975,55897],[-31,246],[-16,-51],[-4,-37],[-11,24],[-19,76],[-2,36],[-13,36],[-1,62],[5,24],[-12,71],[2,41],[-12,0],[1,95],[-14,-2]],[[18848,56518],[1,45],[8,40],[-8,71],[4,20],[-65,0],[5,35],[-2,69],[10,53],[1,117],[30,62],[0,37]],[[24017,58980],[15,-1]],[[24032,58979],[15,0],[0,-51],[118,-9]],[[24165,58919],[-1,-101]],[[24164,58818],[0,-218]],[[24015,58526],[3,309],[-1,145]],[[24456,57581],[20,-1],[1,85],[15,0],[0,22],[25,-2]],[[24517,57685],[-1,-105],[10,0],[0,-52],[5,0]],[[24531,57528],[-1,-154],[15,-1],[-1,-103]],[[24544,57270],[-1,-204],[15,-1],[0,-155],[-15,0]],[[24543,56910],[-11,9],[-10,43],[-12,81],[-9,6],[-3,36],[-13,17],[1,30],[-11,8],[2,32],[-24,2]],[[24453,57174],[0,34],[-19,19],[0,68],[20,-2],[1,185],[8,57],[-7,46]],[[25995,52680],[6,42],[0,61],[20,-2],[4,-50],[33,-3],[-1,31],[6,70]],[[26063,52829],[33,-1],[0,-51],[14,-1],[-1,-253]],[[26496,55966],[32,146],[5,71],[-1,37]],[[26532,56220],[44,-113],[7,-1],[15,-57]],[[26597,55967],[2,-46],[-17,-7],[-10,-33],[-15,-18],[-1,-51],[-9,-29]],[[26530,55871],[-6,44],[-24,19],[-4,32]],[[26979,50652],[100,-1]],[[27079,50651],[0,-475],[-1,-240]],[[27078,49936],[0,-43],[-18,18],[-10,-13]],[[27051,50091],[0,50],[-12,4],[-12,47],[-20,10],[-18,96],[4,13]],[[26993,50311],[3,58],[17,48],[6,40],[-4,33],[-25,88],[-11,74]],[[26055,62866],[92,0]],[[26147,62651],[-40,-85]],[[26039,62491],[0,255]],[[24257,66887],[0,204]],[[24257,67091],[133,-1]],[[24390,67090],[-1,-510]],[[23904,65671],[33,0]],[[26453,60619],[8,40],[22,11]],[[26483,60670],[13,-4],[22,21],[17,-45]],[[26569,60416],[-26,-63],[-7,-47],[-12,-4]],[[26524,60302],[-29,20],[-25,61]],[[26470,60383],[3,44],[-12,32],[3,38],[-12,79],[1,43]],[[24434,54868],[14,32],[-1,97],[15,74],[2,123],[8,32],[0,54],[8,17],[5,63]],[[24485,55360],[27,-1]],[[24512,55359],[-10,-50],[-3,-48],[9,-22],[14,26],[-1,67],[11,4],[9,-72],[-2,-39],[-21,-52],[-5,-37],[-1,-71],[31,-30],[-2,-27],[-16,-33],[-9,-38],[3,-52],[6,-14],[20,26],[6,46],[5,-52],[-10,-30]],[[24539,54845],[-11,0],[-7,-29],[-90,0]],[[24431,54816],[7,27],[-4,25]],[[24200,52034],[23,-6],[21,-31],[11,14],[6,-63],[29,-43]],[[24290,51905],[-8,-61],[6,-176]],[[24288,51668],[-2,-39],[-24,-36],[-14,-34],[-6,32],[-18,-16],[0,-32],[9,-30],[18,-8],[-9,-30],[8,-63],[20,21],[5,-18],[-13,-14],[6,-20],[-32,-6],[-26,-49],[-20,-9],[-82,63]],[[24108,51380],[1,219],[-1,307],[-34,-1]],[[24074,51905],[32,64]],[[24104,52430],[13,92],[-4,20],[0,363]],[[24113,52905],[25,0],[8,26],[0,39],[28,56],[14,-43],[14,2]],[[24202,52985],[0,-33],[11,-51],[1,-52],[7,1]],[[24221,52850],[1,-75],[10,-19],[0,-110],[-11,-70],[0,-53],[-14,0],[0,-34],[-43,0],[-12,-12],[-2,-38],[-8,-18]],[[24104,52422],[0,8]],[[23554,63548],[77,0],[31,-5]],[[23555,63208],[0,85]],[[23555,63293],[-1,255]],[[24568,61812],[20,-8],[33,63],[12,52]],[[24633,61919],[-1,-201]],[[24632,61718],[0,-60],[-8,-139],[-4,-107]],[[24532,61412],[-76,0],[0,7]],[[24456,61419],[0,570]],[[23036,64111],[111,1]],[[23147,64112],[0,-304]],[[23036,63808],[0,303]],[[22396,65934],[128,0]],[[22526,65732],[0,-203]],[[19902,55909],[345,-1],[28,5]],[[20275,55913],[1,-104],[7,0]],[[20283,55809],[1,-393]],[[20284,55416],[-152,-268],[0,-51],[-115,1],[0,-203]],[[19822,55588],[0,323],[17,-5],[63,3]],[[28234,58112],[31,9],[5,-34],[25,30],[31,62]],[[28326,58179],[14,-90],[10,-11]],[[28350,58078],[-11,-12],[-5,-32],[5,-59],[-12,-26]],[[28327,57949],[-15,16],[6,-82],[-27,-118],[-36,-73]],[[28255,57692],[-4,16],[-1,101],[-5,43],[-19,37]],[[28226,57889],[3,194],[5,29]],[[27152,58358],[12,-22],[31,3]],[[27195,58339],[23,-168]],[[27218,58171],[15,-78],[12,-26],[1,-62],[9,-20],[-2,-112]],[[27253,57873],[-11,1]],[[27242,57874],[-112,18]],[[27130,57892],[3,49],[16,157],[3,260]],[[20922,65124],[188,2]],[[21110,65126],[0,-404],[-1,-53]],[[21109,64669],[-54,0]],[[21055,64669],[-133,-1]],[[20922,64668],[0,456]],[[23232,59036],[39,0],[5,-34],[10,-5],[4,-44],[-5,-19],[36,0]],[[23321,58934],[65,-1]],[[23370,58629],[-27,11],[-16,-27],[-16,5],[-24,-19],[-7,-26],[-14,26],[-3,81],[-32,-1]],[[23231,58679],[-15,0]],[[23216,58679],[0,52],[16,0],[0,305]],[[22700,58121],[147,0]],[[22847,58121],[0,-522]],[[22847,57599],[-33,20],[-4,20],[-18,1],[-5,82],[1,50],[-13,11],[-2,60],[-43,112],[1,66],[-16,17],[-15,37]],[[22700,58075],[0,46]],[[22789,57108],[58,0],[-4,52],[-12,83],[16,0],[0,17],[59,0]],[[22906,57260],[0,-51],[29,0],[0,-102]],[[22935,57107],[-15,0],[0,-201],[-15,-1]],[[27582,64288],[127,-6]],[[27709,64282],[1,-31],[-9,-41],[-15,-31],[2,-36],[18,-29],[-1,-106],[-8,-42],[-8,-6],[-12,-186],[7,-6],[-25,-36]],[[27659,63732],[-25,22],[-3,19],[16,24],[-75,93],[-49,169]],[[27107,57210],[8,100],[11,183],[20,88]],[[27146,57581],[18,-15],[2,-22],[15,7],[12,-20],[17,-4],[7,-32]],[[27217,57495],[-6,-20]],[[27227,57184],[0,-90]],[[27227,57094],[-18,-5],[-15,-53],[-4,37],[-25,66]],[[27165,57139],[-9,29],[-11,-5],[-38,47]],[[21904,68796],[237,1]],[[22068,68386],[13,54],[-9,29],[-17,2],[-28,47],[-22,19],[-19,1],[-37,35],[-6,98],[-6,21],[-18,3],[-17,-19],[-13,20],[2,35],[12,28],[1,37]],[[26426,59947],[9,20],[8,-25],[4,22],[11,-24],[16,36],[9,-17]],[[26483,59959],[7,-118],[11,-42],[12,-20],[-1,-49],[8,-37],[23,-47]],[[26543,59646],[-22,-48],[7,-68]],[[26528,59530],[-16,3]],[[26512,59533],[-67,3]],[[26445,59536],[-22,98],[-4,96],[-8,25],[2,66],[8,26],[-2,36],[7,64]],[[26809,58022],[13,27],[12,4],[12,73],[12,49]],[[26858,58175],[38,-157],[5,-144],[5,-24]],[[26853,57762],[-5,20],[-32,-34]],[[26816,57748],[-31,-34]],[[26785,57714],[-14,31],[21,91],[-1,65],[17,58],[1,63]],[[28350,58078],[11,-13],[16,59],[9,-32],[10,56],[10,21]],[[28406,58169],[64,-136],[18,-55]],[[28488,57978],[-19,-65],[-7,-51],[16,-43],[-1,-65],[-7,-16]],[[28470,57738],[-8,-3],[3,-47],[24,-55],[36,-43],[22,49]],[[28547,57639],[9,-29],[-12,-80],[-18,-27],[-35,-1],[-20,-24],[1,-18],[-35,3]],[[28437,57463],[9,29],[-17,-7],[1,217],[-3,65],[-18,-20],[-2,30],[-40,80],[-40,92]],[[22054,55308],[105,-4]],[[26881,59918],[8,37],[10,7],[-4,-62],[-14,18]],[[26976,62371],[4,207],[11,-2]],[[26991,62576],[86,-18],[57,-9]],[[27134,62549],[2,-99]],[[27136,62450],[-18,-16],[3,-43],[10,-29],[-4,-111],[-9,25],[-9,-20],[-3,-42],[-15,-17]],[[27091,62197],[-5,27],[8,28],[-12,79],[-11,1],[-13,40],[-20,-82]],[[27038,62290],[1,52],[-63,12],[0,17]],[[26906,62158],[0,10],[33,-10],[6,221]],[[26945,62379],[31,-8]],[[27038,62290],[-12,-70],[0,-67],[-21,-52],[10,-105],[3,-101],[-13,-32]],[[27005,61863],[-19,-10]],[[26986,61853],[-21,3],[2,105],[-33,8],[2,69],[-5,35],[-27,8],[2,77]],[[27377,61295],[48,-28],[50,139],[26,80]],[[27634,61249],[-14,-91],[-13,-39]],[[27607,61119],[-35,-116],[-21,-112],[2,-36],[-12,-39]],[[27541,60816],[-25,1],[-3,28],[-15,-39],[-16,9],[-44,47]],[[27438,60862],[-1,37],[-23,84],[-16,39]],[[27398,61022],[16,-5],[-17,98],[12,42],[-8,47],[-9,7],[8,37],[-18,-6],[-8,25],[3,28]],[[31846,38320],[0,-19]],[[31846,38301],[6,-44],[-16,-11],[-15,23],[-7,-20],[-12,49],[-24,-14],[7,54],[10,-23],[12,26],[19,-21],[20,0]],[[24548,58507],[121,-5],[29,4],[59,-9]],[[24757,58497],[0,-304]],[[24757,58193],[-60,4]],[[24547,58200],[1,307]],[[16069,60572],[0,-1]],[[16069,60571],[64,212],[27,63],[24,38],[8,-11],[9,22],[21,-26],[-1,396]],[[16221,61265],[14,-57],[62,-229]],[[16371,60748],[-166,-272],[5,-63],[-73,-246]],[[16137,60167],[-15,57],[-13,-20],[-8,21],[-10,-42],[-7,73],[-11,45],[-1,39],[15,32],[-5,56],[4,27],[-13,16],[-4,32],[0,69]],[[15716,62785],[168,2],[0,34],[35,-1],[0,-35],[33,0]],[[15952,62785],[-5,-93]],[[15947,62692],[-11,-74],[6,-48],[-5,-22],[16,-125],[11,-2],[7,-45],[1,-51],[-5,-74]],[[15967,62251],[-140,-1]],[[15827,62250],[-19,45],[-2,67],[-22,40],[-2,78],[7,61],[-11,41],[-16,-6],[-30,40],[-21,54],[-5,31],[10,84]],[[26431,56469],[5,-45],[16,-54],[13,-23],[23,-88],[14,-28]],[[26502,56231],[-9,-31],[-17,-130],[-19,36]],[[26457,56106],[-17,-18],[-10,20]],[[26430,56108],[-19,0]],[[26411,56108],[1,365],[19,-4]],[[26549,57359],[7,9],[1,57],[13,16]],[[26570,57441],[27,9]],[[26597,57450],[15,-43],[2,-36],[-11,-85],[6,-43],[0,-50],[7,-31],[-14,-58]],[[26602,57104],[-50,3]],[[26552,57107],[3,31],[-9,21],[-2,145],[5,55]],[[26101,56852],[21,-1],[15,98],[43,77],[20,176]],[[26200,57202],[11,0]],[[26211,57202],[1,-52],[-7,-1],[0,-91],[-6,-2],[7,-71],[22,-10]],[[26217,56630],[-59,5],[0,-25],[-45,2]],[[26113,56612],[-12,240]],[[17848,67225],[137,1]],[[17985,66821],[-7,0],[1,-234]],[[17979,66587],[-36,28],[-19,-11],[-10,58],[-3,48],[-21,14],[-1,53],[10,54],[-16,65],[-22,-4]],[[17861,66892],[-13,3],[0,330]],[[24924,66063],[81,3]],[[25132,65705],[-117,-5],[0,17],[-31,11],[-2,-11],[-42,-1]],[[24940,65716],[0,33],[-15,1]],[[24925,65750],[-1,313]],[[20593,72571],[0,91],[11,0],[0,231]],[[20604,72893],[6,17],[32,-4],[4,-29],[16,56],[11,-8],[6,49],[12,15],[16,-35],[18,8],[22,-27],[15,11],[4,34],[8,-40],[11,22],[9,-19],[14,11],[5,-28],[23,-31],[3,-26],[17,5],[12,-23],[22,5],[9,24],[11,-35],[-1,-30],[15,-4]],[[20924,72811],[0,-698]],[[20819,72064],[-25,0],[0,203],[-23,0],[0,101],[-107,0],[0,102],[-72,0],[1,101]],[[28264,59025],[15,-18],[4,-26],[25,-23],[3,-66],[16,-2],[20,-38]],[[28347,58852],[16,-116],[-2,-100]],[[28361,58636],[-11,16],[-10,-32],[-13,-5],[-12,-46],[-41,-101]],[[28274,58468],[-15,63],[-9,115],[-22,46]],[[28228,58692],[16,166],[18,123],[2,44]],[[21448,59429],[37,0]],[[21485,59429],[114,-1]],[[21448,58911],[0,518]],[[26065,55479],[100,1]],[[26165,55480],[13,-277]],[[26178,55203],[9,-32],[-4,-36],[13,-45],[-2,-25]],[[26194,55065],[-43,-7],[-3,-17],[-83,-3]],[[26065,55038],[0,441]],[[16505,62261],[89,-256]],[[16594,62005],[-8,-55],[-1,-72],[21,-122],[-5,-103],[-17,-20],[4,-32],[-9,-46]],[[16473,61679],[-14,16],[0,73]],[[15579,65835],[23,7],[28,-8],[115,2],[37,5],[59,-1]],[[15841,65840],[81,-5],[154,-8]],[[16076,65827],[-3,-55],[0,-202],[2,0],[0,-403],[1,-287]],[[15529,64876],[-8,55],[-10,162],[-8,19],[-44,-1]],[[15459,65111],[13,75],[-11,108],[-11,22],[3,40],[-10,3],[9,58],[7,95],[-5,23],[1,59],[-8,33],[15,42],[2,31],[11,-5],[11,25],[13,112]],[[19531,60575],[36,171],[210,4],[53,5]],[[19830,60755],[-14,-56],[-4,-79],[1,-69],[-13,-34],[-7,-58],[-26,-35],[-6,-73],[-8,-49],[-13,-39],[1,-83],[-5,-18],[-7,-88],[-13,-64]],[[19716,60010],[-185,-1]],[[26283,57668],[9,0]],[[26292,57668],[44,1]],[[26336,57514],[10,-35],[-14,-62],[-6,-50],[0,-170]],[[26326,57197],[-14,18],[-3,28],[-24,-17],[-29,9],[-2,21]],[[26254,57256],[-8,53],[15,-1],[-10,44],[17,-10],[3,48],[-3,76],[6,54],[7,19],[-7,48],[9,81]],[[18429,66212],[96,2],[0,101],[44,0],[0,101],[22,0]],[[18591,66416],[10,0],[11,-64],[13,7],[1,-78],[-10,-46],[1,-27],[14,-6],[4,37],[20,0],[9,-65],[9,-11]],[[18673,66163],[15,-55],[0,-80],[-11,1],[0,-201]],[[18677,65828],[-15,-1]],[[18662,65827],[-8,5],[-225,-3]],[[25398,61442],[52,-1],[0,-31],[31,-2],[0,-37]],[[25481,61371],[-2,-51],[-1,-265]],[[25478,61055],[-37,-24],[-11,52],[-15,-23]],[[25415,61060],[-4,-36],[10,-68],[-12,-47],[-23,32]],[[25386,60941],[-11,2],[-4,34],[12,-9],[-14,80]],[[25369,61048],[22,4],[-15,29],[15,67],[1,60],[-8,26],[19,19],[2,38],[-12,-19],[22,73],[-14,60],[-3,37]],[[25875,60701],[34,239]],[[25909,60940],[40,23],[9,67],[-6,144]],[[25952,61174],[15,10]],[[25967,61184],[2,-11]],[[25969,61173],[8,-8],[1,-57],[14,3],[11,-65],[-1,-36],[22,-55]],[[26024,60955],[3,-43],[13,-49]],[[26040,60863],[-15,-91],[-18,-36],[-6,-57],[-15,-35],[-5,-121]],[[25981,60523],[-43,11]],[[25938,60534],[-2,54],[-16,83],[-18,-15],[-15,24],[-4,31],[-8,-10]],[[23800,51922],[165,1],[0,-16],[37,0]],[[24002,51907],[72,-2]],[[24108,51380],[-35,42],[-57,101],[-23,32],[-41,40],[-33,5],[-14,-14],[-36,7],[-58,-25],[-17,-13],[-26,-53]],[[23768,51502],[-17,94],[-9,30],[2,25],[19,54]],[[23428,62034],[125,0]],[[23553,62034],[-1,-304]],[[23552,61730],[0,-103]],[[23552,61627],[-126,1]],[[17874,68100],[-13,10],[-8,-20],[-19,50],[-8,107],[-18,27],[9,-35],[-25,-155],[-22,-13],[-38,-40],[-10,-50],[-3,-63],[-12,6],[-12,-61],[3,-20],[-20,-74],[-21,-17],[-17,-53],[-12,-16],[-28,0]],[[17600,67683],[-18,44],[-67,208]],[[18812,67724],[63,-5]],[[18875,67719],[43,0],[10,-91],[18,3],[25,-31],[3,-22]],[[18974,67578],[0,-216]],[[18974,67362],[0,-345]],[[18974,67017],[-152,1]],[[18822,67018],[0,305],[-65,0],[0,98],[-62,1],[1,50],[-17,0],[0,18],[-116,0],[0,234]],[[30108,65942],[43,72],[3,79],[-4,25],[8,24],[-4,25],[-11,-5]],[[30143,66162],[20,28],[6,-38],[10,-12]],[[30179,66140],[-8,-30],[8,-46],[13,60]],[[30192,66124],[16,-51],[2,-46],[21,-93],[-1,-50],[-7,-39],[-12,-5],[3,-24],[21,-51],[12,8],[8,-24],[8,-83],[-4,-55]],[[30259,65611],[-7,-29],[-19,-27],[-3,-52]],[[30230,65503],[-21,20],[0,-59],[-7,14],[-4,-50],[-14,3],[2,-32],[-12,-1]],[[30174,65398],[-12,154],[-10,36],[-29,-15],[-3,44],[18,52],[-7,80],[-14,39],[-9,154]],[[24349,53048],[18,-1],[8,-28]],[[24375,53019],[-1,-27]],[[24374,52992],[5,-49],[-5,-83],[11,-20],[18,10],[-2,40],[-14,40],[18,-1],[8,-31],[1,-45],[-6,-70],[-15,-29],[11,-41],[29,6],[21,24],[12,-114]],[[24466,52629],[6,-10],[-15,-72],[-9,-23],[-5,-67],[-19,0],[-1,-16]],[[24423,52441],[-20,-17],[-7,17],[-33,0]],[[24363,52441],[-15,0]],[[24348,52441],[6,15],[-6,61],[6,121],[0,43],[-10,95],[-11,30],[-2,43]],[[24331,52849],[3,18],[0,127],[15,54]],[[25362,70396],[0,378]],[[25362,70774],[139,0],[0,-303]],[[25378,70232],[-13,12],[-9,32],[17,52],[-11,68]],[[23700,60417],[-1,-68],[9,-1]],[[23708,60348],[-2,-282]],[[23550,60077],[1,327]],[[21617,60463],[9,0]],[[21747,60462],[6,0]],[[21753,60462],[1,-454]],[[21754,60008],[-136,-3]],[[21618,60005],[-1,458]],[[24658,66423],[60,-2]],[[24718,66421],[139,-1]],[[24857,66420],[2,-360]],[[24859,66060],[-111,-4]],[[24748,66056],[-16,25],[-15,74],[3,60],[-15,60]],[[24705,66275],[-23,40],[-2,26],[-22,35],[0,47]],[[24713,64233],[0,102]],[[24841,64332],[-1,-101],[32,-1],[1,-130]],[[24858,64010],[-16,-50],[-16,-21],[-9,-95],[-13,-68],[-23,-59]],[[24781,63717],[-70,6],[1,101]],[[28182,67420],[55,-30],[23,-19],[15,-47],[23,-46],[12,-10],[9,18],[35,32]],[[28355,67035],[-31,0],[0,-106],[-27,1]],[[28297,66930],[-42,1],[0,50],[-50,0]],[[28205,66981],[2,57],[-13,3],[12,109],[-25,0]],[[24336,73051],[23,-4],[5,-67],[-4,-31],[20,-21],[23,13],[-3,-75],[22,28],[14,-22],[19,24],[34,17],[46,113],[15,9]],[[24552,72192],[-29,-76],[-17,-69],[-55,-178],[-26,-72],[-26,-41],[-26,-88],[-11,-11],[-25,-76]],[[16107,67713],[267,-6],[134,-1]],[[16508,67706],[0,-503],[-10,0],[0,-305],[-3,0],[-1,-198],[162,3],[0,-712],[1,-167]],[[16657,65824],[-147,4],[-31,-3]],[[16479,65825],[0,-1]],[[16479,65825],[-92,-2],[-153,1]],[[16234,65824],[-1,399],[1,170],[-1,304],[-130,3],[0,710],[5,0],[-1,303]],[[30076,65453],[18,-18],[3,-189]],[[30097,65246],[-20,-46],[-6,102],[2,64],[-10,22],[2,-159],[-17,2],[-2,-35],[-10,-7],[-1,55],[16,95],[8,68],[17,46]],[[30029,65436],[5,7],[11,-52],[-5,-7],[-11,52]],[[30019,65203],[6,51],[-4,23],[5,57],[4,-20],[0,-85],[-11,-26]],[[28985,67711],[-16,561]],[[28969,68272],[30,-54],[58,22]],[[29057,68240],[22,-679],[-26,-171],[43,-62]],[[29096,67328],[5,-130],[-9,-57],[-9,-7],[-4,-42],[4,-42]],[[29083,67050],[5,-59],[-6,-155]],[[29082,66836],[-32,40],[-8,-85],[-54,97],[-11,-56],[-20,-4],[0,27]],[[28957,66855],[3,1],[-5,200],[42,203],[-26,37],[4,54],[20,30],[-10,331]],[[20934,60006],[257,5]],[[21215,60011],[0,-463],[-1,-119]],[[21214,59429],[-11,0],[1,-213],[0,-305]],[[21204,58911],[0,-368]],[[21204,58543],[-93,0]],[[21111,58543],[0,302],[2,102],[-119,-1],[0,103],[-60,1],[0,50]],[[20934,59100],[0,906]],[[23449,51727],[150,6]],[[23599,51733],[24,-2],[1,-379]],[[23624,51352],[-5,-7]],[[23619,51345],[0,48],[-13,-9],[-1,-27],[-25,-27]],[[23580,51330],[-10,34],[-54,-54],[-8,26],[17,90],[4,80],[0,74],[-12,5],[-5,23],[-17,-29],[-10,-41],[-4,-50],[-15,-24],[-3,18]],[[23463,51482],[5,28],[-9,22],[9,58],[1,64],[-19,54],[-1,19]],[[16242,73980],[227,-1],[169,0],[165,1]],[[16803,73980],[0,-404],[-9,0],[0,-200],[7,0],[-1,-603],[-1,-7]],[[16799,72766],[-34,-17]],[[16762,72771],[9,66],[-14,28],[-8,82],[-7,28],[-27,10],[-29,-51],[-12,16],[-8,-22],[-4,-55],[-17,1],[-9,30],[-18,7],[-32,-96],[-10,0],[-12,37],[7,42],[-4,30],[-45,-19],[-14,-32],[7,-36],[0,-68]],[[16283,73434],[4,51],[-9,24],[-11,-15],[-8,49],[10,37]],[[16269,73580],[21,91],[-16,60],[0,90],[-9,14],[-7,97],[-12,-23],[-14,41],[10,30]],[[25861,56449],[13,57],[7,-28],[15,27],[9,-27],[0,-45],[7,-32],[8,5],[5,-49],[8,-22]],[[25933,56335],[6,-93],[-28,-62],[0,-35]],[[25911,56145],[-17,12],[9,-35],[-3,-77],[-10,-6],[8,-52],[-12,-57],[-13,19],[-8,-68],[-19,-72]],[[25846,55809],[0,130],[-29,0],[0,51],[-10,0]],[[25790,56245],[1,43],[47,39],[18,59],[5,63]],[[25309,66542],[33,1],[0,67],[106,-2]],[[25448,66608],[-4,-60],[6,-145]],[[25450,66403],[-111,5]],[[25339,66408],[-30,-1]],[[25309,66407],[0,135]],[[31371,38071],[7,-1]],[[31378,38070],[1,-78],[7,16],[18,-19]],[[31404,37989],[1,-46]],[[31398,37874],[-11,8],[-14,-17]],[[31373,37865],[3,32],[-10,159],[4,14]],[[25047,67743],[-98,0]],[[24949,67743],[0,395]],[[24648,70466],[105,-1]],[[24753,70465],[72,1]],[[24825,70466],[0,-99]],[[24825,70367],[0,-398]],[[24648,69763],[0,303]],[[31571,38386],[-11,-53]],[[31546,38362],[-3,30],[-10,5],[-7,29]],[[31526,38426],[24,-8],[21,-32]],[[17697,72209],[-3,-22],[-22,-8],[-12,-36],[11,2],[47,-87],[7,-54],[32,-45],[24,-10],[9,-41],[-2,-38],[11,-7],[5,-37],[12,-13],[17,-54],[19,-82],[6,-60],[13,1],[11,-45]],[[17882,71573],[-241,1],[-140,1]],[[17501,71575],[0,102]],[[17501,72133],[0,555]],[[17501,72688],[0,148],[16,51],[11,8],[20,-55],[12,14],[20,-65]],[[27119,58976],[37,13],[36,-6]],[[27192,58983],[11,-24],[14,-6],[4,-23],[13,-6],[15,-50],[4,-32]],[[27251,58609],[-8,-33]],[[27243,58576],[-10,-11],[-12,30],[-31,-8],[-13,56],[-30,58],[-19,84],[-8,17]],[[27120,58802],[20,123],[-21,51]],[[21701,71959],[17,-18],[3,35],[35,16],[23,-50],[-5,-53],[8,-56]],[[21782,71833],[6,-20],[5,-72],[12,-35],[1,-29],[-16,-46]],[[21790,71631],[-231,-2]],[[21559,71629],[0,303],[141,0],[1,27]],[[23163,63807],[127,1]],[[23290,63808],[19,-17],[2,-77],[24,-76],[-8,-79],[31,-56]],[[23358,63503],[-9,0]],[[23349,63503],[-125,0]],[[23224,63503],[-62,0]],[[21840,63909],[156,1]],[[21996,63910],[1,-406]],[[21845,63505],[-5,0]],[[23518,52432],[55,2],[-2,41]],[[23571,52475],[132,-1]],[[23703,52474],[-14,-116],[10,-98],[-10,-69],[7,-29],[-6,-19]],[[23690,52049],[-17,32],[-16,-26],[-11,5],[-5,-61],[-30,-24],[-12,19]],[[23599,51994],[-43,-2],[-38,440]],[[25398,57689],[106,-2]],[[25504,57687],[106,-5]],[[25614,57681],[-1,-213],[-18,-49],[5,-18]],[[25600,57401],[-10,-9],[-13,53],[-23,5]],[[25554,57450],[-27,37],[-17,-15],[-8,-24],[-26,-30],[-7,-32],[-21,-16],[-8,11],[-24,74],[-8,73],[-25,46],[-16,-17]],[[25367,57557],[-16,35],[-13,85]],[[25338,57677],[0,15],[60,-3]],[[23701,59427],[59,0]],[[23760,59427],[1,-186],[13,-38]],[[23774,59203],[-15,1],[0,-84],[-5,0]],[[23569,58965],[-3,70]],[[23566,59035],[-16,393]],[[24875,65347],[65,1]],[[24940,65348],[129,0]],[[24938,64840],[0,99],[-61,1]],[[26105,64263],[1,-100]],[[26106,64163],[0,-219]],[[26106,63944],[-37,0]],[[26069,63944],[-79,-1]],[[25990,63943],[0,33]],[[25990,63976],[-1,185]],[[26137,68351],[-1,303],[1,101]],[[26143,67133],[0,204],[-70,0]],[[24210,60561],[-1,-254],[1,-227]],[[24272,60712],[61,-4]],[[24376,60067],[-121,9]],[[24688,60760],[108,-3]],[[24796,60757],[0,-51]],[[24796,60706],[2,-66],[-2,-266],[-20,3]],[[24776,60377],[-92,3]],[[24632,53839],[99,2],[34,4],[4,16]],[[24769,53861],[0,-427]],[[24769,53434],[-5,0]],[[24661,53433],[0,305],[-29,-1]],[[24632,53737],[0,102]],[[20688,56922],[0,300],[125,0],[0,101],[29,1],[0,101],[59,0]],[[20901,57425],[0,-202],[50,0]],[[20951,57223],[0,-403],[1,-206]],[[20952,56614],[-59,1],[0,-102],[-45,0],[-130,5],[-1,102],[-29,1]],[[20688,56621],[0,301]],[[28264,58442],[10,26]],[[28361,58636],[27,-38],[-1,-25],[11,-6],[12,-32]],[[28410,58535],[-6,-38],[8,-18],[-1,-53],[24,-100],[-12,1],[-13,-40],[0,-73],[-4,-45]],[[28326,58179],[-10,83],[3,23],[-16,18],[-14,40],[-25,99]],[[21467,71629],[92,0]],[[21790,71631],[8,-40],[1,-60],[24,-103],[-5,-69],[16,-15],[0,-58],[8,7],[6,-43],[24,27],[-5,-51]],[[21867,71226],[26,-48],[-6,-23],[12,-47],[-9,-32],[-6,-64],[3,-27]],[[21887,70985],[-27,-21],[-10,-35],[-13,21],[-13,-15],[-29,12],[-6,-53],[-24,-76]],[[21765,70818],[-6,0],[0,101],[-70,0],[0,302],[-117,1],[0,101],[-105,-1]],[[21467,71322],[0,307]],[[26831,65004],[139,-7]],[[26970,64997],[2,-254]],[[26972,64743],[-28,0],[1,-85]],[[26945,64658],[-81,4]],[[26835,64663],[-3,301]],[[23156,58680],[60,-1]],[[23231,58679],[-1,-152],[15,0],[0,-202]],[[23245,58325],[-30,0],[0,-103],[-15,0],[0,-101],[-29,0]],[[23171,58121],[-30,0],[0,204],[-29,0],[0,101]],[[27603,56618],[75,197],[14,-5],[6,52],[13,-12],[7,24]],[[27718,56874],[7,-9]],[[27725,56865],[9,-9],[15,-69]],[[27749,56787],[-7,-53],[16,-103],[0,-120],[6,-51],[35,-125],[15,-19],[-3,-32]],[[27811,56284],[-7,19],[-25,-36],[-16,-10],[-50,46],[-13,-1],[-5,24],[-16,1],[-10,55],[-11,3]],[[27658,56385],[-20,1],[-8,70]],[[27630,56456],[23,48],[-3,17],[-27,53]],[[27623,56574],[-7,30],[-13,14]],[[27102,56676],[3,51],[21,-15],[15,25],[26,-49],[27,-75],[19,-6]],[[27213,56607],[-28,-232]],[[27185,56375],[-22,-73]],[[27163,56302],[-51,60],[-10,31],[-7,97],[-31,-16]],[[27064,56474],[5,42],[12,48],[5,45],[16,67]],[[25769,60991],[16,29],[2,63],[23,9],[-5,38],[0,77],[10,21]],[[25815,61228],[17,-53],[52,-144],[25,-91]],[[25875,60701],[-22,-7],[2,-29],[-18,5],[-28,66],[-7,-39],[-11,11],[-5,-41]],[[25786,60667],[-13,64],[0,50]],[[25773,60781],[5,-8],[-15,160],[6,58]],[[25415,61060],[31,-162],[16,-39],[1,-69],[5,-36]],[[25468,60754],[-19,-69],[-36,-116]],[[25413,60569],[-18,31],[-5,47],[-13,-48]],[[25377,60599],[-3,27],[-17,53]],[[25357,60679],[-7,105],[11,56],[17,35],[8,66]],[[26212,59846],[29,67],[4,51],[11,-17],[20,61]],[[26276,60008],[18,-47],[18,27],[9,-7],[15,-91],[12,-34]],[[26348,59856],[-1,-74],[-12,-11],[-3,-29],[-11,-9],[0,-26],[-29,-158]],[[26290,59549],[-53,14]],[[26237,59563],[-7,10],[0,61],[-6,48],[5,45],[-6,59],[-11,60]],[[26151,61591],[80,-26]],[[26223,61325],[-6,-66],[-15,-41]],[[26202,61218],[-37,61],[-53,67]],[[26112,61346],[5,136],[-17,25]],[[26100,61507],[22,26],[18,2],[11,56]],[[28437,57463],[-24,-31]],[[28271,57652],[-16,40]],[[26346,58432],[15,31],[5,53],[5,0],[22,70],[7,-9],[3,57],[9,17],[5,71],[13,-21],[5,25]],[[26435,58726],[27,-106]],[[26462,58620],[-3,-43],[7,-13],[-5,-52],[11,-61],[-16,-58]],[[26456,58393],[-18,12],[-10,40],[-19,12],[-11,-29],[-7,36],[-28,-23],[-1,-32]],[[26362,58409],[-16,23]],[[22754,54392],[0,10],[109,97]],[[22863,54499],[40,-248],[13,25]],[[22916,54276],[49,-301]],[[22906,53851],[-30,180],[-66,-137]],[[22810,53894],[-14,50],[12,40],[0,24],[-12,-2],[-16,34],[6,23],[-22,45],[17,50],[-13,65],[-17,-12],[-1,49],[6,31],[-7,48],[10,50],[-5,3]],[[28276,60667],[11,16],[-10,73],[6,76]],[[28283,60832],[20,-28],[18,23],[13,-20],[12,-92],[46,-78]],[[28392,60637],[17,-55]],[[28409,60582],[-12,-98],[-8,-29]],[[28389,60455],[-8,-35],[-9,25],[-21,16],[-9,70]],[[28342,60531],[1,81],[6,-14],[0,53],[-12,56],[-10,-23],[-19,3],[3,-26],[-18,-4]],[[28293,60657],[-17,10]],[[27256,64261],[21,-1],[1,85],[42,5]],[[27320,64350],[48,-1],[-1,-97],[16,-1],[0,-51]],[[27383,64200],[-1,-51],[-15,1],[-2,-103],[-4,-50]],[[27269,64007],[2,153],[-16,2],[1,99]],[[22628,73447],[214,0]],[[22842,73447],[6,-54],[1,-107],[-3,-52],[8,-93],[-7,-53],[0,-47]],[[22847,73041],[-212,1]],[[22527,73042],[0,203],[-8,1],[1,202]],[[24997,69867],[17,3],[89,-6]],[[25103,69864],[34,0],[-1,-100],[69,0]],[[25205,69764],[0,-202],[11,-1],[0,-101]],[[25121,69357],[-68,0]],[[24373,69565],[34,-2],[1,100]],[[24408,69663],[171,0]],[[24580,69157],[-203,-2]],[[24377,69155],[0,309],[-4,0],[0,101]],[[24319,51555],[41,128],[24,115],[43,13]],[[24427,51811],[16,-60],[11,-82],[-3,-59],[9,-20],[38,-18],[10,-26],[13,-5],[10,-29]],[[24531,51512],[-2,-66],[6,-19]],[[24535,51427],[-22,-39],[-4,20],[-9,-22],[-8,-50],[-9,-13],[-1,-67],[10,-48]],[[24492,51208],[-14,-41],[-13,-13],[2,41],[-10,-7],[3,39],[9,28],[-10,40],[-29,-50],[-10,80],[-10,-8],[-6,118],[-26,1],[6,33],[1,85],[-32,16],[-13,-10],[-20,-38],[-1,33]],[[31195,38089],[5,-17]],[[31200,38072],[17,-55]],[[31217,38017],[-2,-58]],[[31215,37959],[1,-95],[-2,-34]],[[31214,37830],[-16,20],[-12,-12],[1,53],[10,31],[-11,12],[3,65],[5,15],[1,75]],[[15542,70657],[23,-1],[19,32]],[[15584,70688],[13,19],[14,-4],[59,-119],[7,-61],[18,-81],[1,-57],[7,-72]],[[15703,70313],[-3,-47],[7,-34],[2,-61]],[[15709,70171],[-6,-9],[-40,1]],[[15663,70163],[-29,35],[0,32],[-92,0]],[[15542,70230],[1,101],[-2,202],[1,124]],[[16508,67706],[-1,102]],[[16507,67808],[34,-1],[0,304],[33,0]],[[16973,68205],[0,-282],[-2,-31],[0,-461],[1,-30],[0,-506],[4,1],[0,-744],[6,0],[-1,-325]],[[16981,65827],[-139,-6],[-175,3]],[[16667,65824],[-10,0]],[[22594,52589],[25,188],[37,140]],[[22799,52738],[12,-20],[33,-324]],[[22844,52394],[-50,-63]],[[22794,52331],[-10,19]],[[22784,52350],[-21,49],[-19,28],[-10,-12],[-13,31],[-50,-83],[-21,49],[-5,86],[-13,40],[-1,28],[-11,27],[-9,-21],[-5,20],[-12,-3]],[[19265,64664],[129,1],[136,2]],[[19530,64667],[0,-393]],[[19530,64274],[-21,0],[-10,25],[-1,119],[-11,-1],[0,85],[-53,0],[0,-79],[-25,-58],[-8,12],[-4,88],[-13,-16],[-17,3],[-12,-24],[-21,9],[-4,-23],[-29,-22],[-30,53]],[[19271,64445],[-6,5]],[[21829,50979],[14,16],[0,85],[10,11],[3,96],[0,237]],[[21856,51424],[164,-1]],[[22020,50798],[-155,-2]],[[21865,50796],[-7,36],[-23,68],[3,14],[-9,65]],[[18869,65087],[10,15],[15,-19],[19,-71],[-5,-83],[16,-12],[-5,-59],[-7,-24]],[[18808,64433],[-7,59],[-21,13]],[[18780,64505],[-8,13],[-13,102],[11,-1],[-17,74],[-4,51],[-1,85]],[[18748,64829],[-6,35],[5,33],[16,23],[15,-4],[8,-31],[17,-2],[13,28],[4,33],[28,-13],[16,73],[-3,30],[8,53]],[[28480,59670],[-1,-8]],[[28479,59662],[0,-1]],[[28479,59661],[1,0]],[[28480,59661],[0,0]],[[28480,59661],[1,0]],[[28481,59661],[0,0]],[[28481,59661],[1,0]],[[28482,59661],[0,1]],[[28482,59662],[0,-7]],[[28482,59655],[0,0]],[[28482,59655],[-2,-14]],[[28480,59641],[0,1]],[[28480,59642],[4,-41]],[[28484,59601],[-15,22],[-1,41],[12,6]],[[20674,63166],[0,0]],[[20643,63062],[0,9]],[[20643,63071],[0,3]],[[20643,63074],[5,25],[17,17],[25,-51],[10,38],[-15,13],[0,29],[10,4],[-5,51]],[[20690,63200],[115,-2],[213,2]],[[21018,62998],[-2,0]],[[20752,62997],[-108,1]],[[20644,62998],[-1,64]],[[26081,57244],[12,54],[0,34],[12,70],[0,84],[8,80],[16,97]],[[26129,57663],[27,2]],[[26156,57665],[0,-152],[18,0],[0,-93],[16,-8]],[[26190,57412],[-7,-55],[33,-1],[0,-113]],[[26216,57243],[-5,-41]],[[26200,57202],[-117,2]],[[26083,57204],[-2,40]],[[25556,63447],[91,1]],[[25647,63448],[0,-100],[23,-1]],[[25670,63347],[-1,-304]],[[25669,63043],[-52,2]],[[25617,63045],[-51,1]],[[25566,63046],[-3,53],[4,48],[1,114],[-3,48],[9,33],[-4,33],[-18,48],[4,24]],[[25983,62029],[13,8],[12,77]],[[26040,62124],[0,-92],[10,-33],[10,-1],[1,-33],[10,-1],[0,-84]],[[26071,61880],[-62,-1],[-15,-51]],[[25994,61828],[-11,16],[0,185]],[[25920,60082],[-15,-148]],[[25905,59934],[-11,-31],[-17,-18],[1,-22],[-40,-113]],[[25838,59750],[2,36],[-51,27],[-8,61]],[[25781,59874],[-17,136]],[[25764,60010],[16,171],[-2,40],[35,11],[8,-44],[19,20]],[[23830,54467],[40,-1]],[[23870,54466],[12,-1]],[[23949,54363],[10,-51],[-4,-13],[8,-43],[-6,-55],[10,-43],[-32,0],[-2,-72],[-10,-27],[-19,13],[-2,39]],[[23902,54111],[-14,65],[-10,2],[-11,49],[0,30],[-17,56],[9,31],[-4,58],[-19,27],[-6,38]],[[23505,68690],[24,-33],[8,-39],[40,-34],[17,-38],[14,-69],[11,-10]],[[23619,68467],[1,-182]],[[24378,61993],[4,414]],[[24382,62407],[1,104],[61,-7]],[[24444,62504],[42,-3]],[[24486,62501],[-1,-171]],[[24442,62001],[-19,4],[-17,-43],[-26,32]],[[24380,61994],[-2,-1]],[[24757,58842],[91,3]],[[24911,58847],[4,-38],[18,-49],[3,-25]],[[24936,58735],[-3,-20],[-24,23],[-9,-49],[20,-36],[-11,-33],[-11,-1],[-9,-52],[-17,-22],[-9,21],[-15,-41],[6,-68],[9,-17],[12,23],[3,-38],[-26,-42],[-3,-24],[13,-50]],[[24862,58309],[-3,-29],[-22,56],[-9,-9],[-5,-58],[9,-42],[-9,-70]],[[24823,58157],[-2,-5]],[[24821,58152],[-8,88],[-15,-50]],[[24798,58190],[-41,3]],[[24757,58497],[0,345]],[[24238,59427],[8,0]],[[24246,59427],[125,1]],[[24371,59428],[62,-2]],[[24433,59426],[-1,-189],[-31,2],[0,-102],[-35,4]],[[24236,59150],[2,277]],[[25935,57072],[15,5],[61,168],[26,140],[9,12],[9,90],[13,33]],[[26068,57520],[13,-276]],[[26083,57204],[4,-76]],[[26087,57128],[-18,-47],[0,-51],[-16,-85],[-11,-27],[-37,-121],[-10,6],[0,-52]],[[25995,56751],[-73,1]],[[25922,56752],[-1,264],[14,56]],[[23598,57605],[11,19],[31,3],[18,19],[1,102],[-6,11],[30,39]],[[23683,57798],[0,-51],[19,-2],[0,-32],[103,-8]],[[23805,57705],[-2,-319]],[[23742,57293],[0,17],[-24,14],[-84,6],[0,34],[-38,3]],[[23596,57367],[2,238]],[[15459,65111],[-31,-1],[0,97],[-82,1]],[[15346,65208],[-4,96],[-15,128],[-8,96],[-9,-4],[-17,54],[10,74],[5,110],[-3,67]],[[24857,66420],[25,-1]],[[24882,66419],[122,-6]],[[24924,66063],[-65,-3]],[[25762,61634],[103,-1],[0,34]],[[25865,61667],[15,0]],[[25880,61667],[3,-86],[-10,2],[8,-69],[-6,-14],[-4,-90],[-12,-25]],[[25859,61385],[-12,15],[1,-34],[13,-12],[-1,-25],[-13,-2],[-8,-29],[-16,18]],[[25823,61316],[0,99],[-31,1],[1,69],[-31,-4]],[[25762,61481],[0,153]],[[25942,61661],[11,0]],[[25953,61661],[8,-17],[44,1],[13,-63],[-10,-20],[2,-52]],[[26010,61510],[-11,-13],[-6,-63],[-14,-50]],[[25979,61384],[-16,7],[1,87],[-10,17],[-12,64],[0,102]],[[27144,54294],[7,-1],[15,-45],[13,-67],[0,-24],[20,-15],[13,18],[3,-28],[17,-15],[7,-103],[9,-29],[4,19],[6,-58],[9,5],[5,-48],[17,-32]],[[27289,53871],[4,-28],[15,-7],[-1,-84],[-11,-79],[-6,14]],[[27290,53687],[0,47],[-18,49],[-29,5],[-19,-16],[-17,68]],[[27207,53840],[-41,77],[-1,24],[-12,27],[-22,76],[6,72],[-1,38],[-13,10],[-8,43]],[[27115,54207],[17,39]],[[18169,66721],[0,-267]],[[18150,66443],[-11,3],[-25,-39],[-14,43],[-18,32],[-24,15],[-12,30],[-25,2],[-21,39],[-21,19]],[[28776,61584],[0,37],[11,117],[18,34],[16,55]],[[28821,61827],[2,-117],[98,-9]],[[28921,61701],[7,-56],[-4,-27],[7,-31],[-19,-75],[-67,-13]],[[28845,61499],[-14,23],[-16,-37],[-8,21]],[[28807,61506],[0,-1]],[[28807,61505],[0,0]],[[28807,61506],[-32,-54]],[[28775,61452],[-10,-7],[-1,76],[12,63]],[[25269,71580],[-10,-125],[6,-52],[-9,-35],[11,3],[20,87],[3,44],[7,-13],[29,80],[28,43],[-12,-55],[-12,-24],[-15,-77],[30,84],[26,18],[11,-9]],[[25382,71549],[0,-171],[15,0],[0,-100],[-35,-1],[0,-301]],[[25362,70976],[-157,0]],[[25205,70976],[0,503],[35,0],[0,101],[29,0]],[[17872,61963],[265,0]],[[18137,61963],[-1,-122]],[[18136,61841],[1,-493]],[[18137,61348],[-1,-174],[1,-272],[-1,-188]],[[18136,60714],[0,-703]],[[18136,59828],[-198,1],[0,11],[-273,-1],[0,-13],[-43,1]],[[17622,59827],[1,22],[0,1384],[249,1],[0,729]],[[28999,63001],[21,-63]],[[29020,62938],[36,-106],[-1,-116]],[[29055,62716],[-6,-18],[-4,-86],[-7,-12],[2,-55]],[[29040,62545],[-31,19],[-6,25],[-18,-3],[-7,-36],[-9,24],[-2,47],[-18,37],[-3,30],[-10,-12],[-15,68],[-7,-8],[-11,47]],[[28903,62783],[-2,83],[13,4],[36,119],[43,-118],[2,101],[4,29]],[[26192,62257],[1,21]],[[26193,62278],[10,-15],[11,16],[17,56],[12,-2],[21,41]],[[26264,62374],[13,-80],[-11,-38],[0,-33]],[[26266,62223],[-75,3],[1,31]],[[29282,64306],[6,22],[4,65],[7,40]],[[29299,64433],[14,96]],[[29313,64529],[8,-10],[-8,-44],[6,-46]],[[29319,64429],[-14,-69]],[[29305,64360],[-3,-32],[-13,-33]],[[29289,64295],[-7,11]],[[29092,69317],[2,-49],[22,0],[5,-160],[27,-750],[-5,-2],[3,-82]],[[29146,68274],[-89,-34]],[[28969,68272],[-77,140]],[[28892,68412],[-116,216]],[[28776,68628],[11,34],[4,46],[12,51],[41,121],[31,100],[56,141],[-1,12],[68,109],[26,62],[18,0],[22,37],[28,-24]],[[24489,54039],[66,-10],[47,-41],[-3,-48],[33,1]],[[24632,53941],[0,-102]],[[24632,53737],[-116,-1]],[[24516,53736],[0,24],[-23,-2],[-18,51],[2,22],[-7,63]],[[24470,53894],[16,18],[-29,11],[7,94],[12,11],[2,-43],[7,-17],[5,28],[-7,30],[6,13]],[[23168,56701],[59,0]],[[23400,56701],[1,-256]],[[23401,56445],[-21,28],[-7,-68],[-15,-26]],[[23358,56379],[-9,-13],[-34,4],[0,15],[-21,-7],[-7,61],[-10,3],[-24,-52],[-20,3],[-1,-23]],[[23232,56370],[-22,2],[-11,48],[-16,30],[0,214],[-15,37]],[[24457,63222],[125,-2],[0,102]],[[24582,63322],[6,-5],[90,-1]],[[24678,63316],[-8,-58]],[[24675,62946],[-8,-75],[-1,-72]],[[24666,62799],[-90,5]],[[24576,62804],[-19,32],[-16,54],[-11,76],[-13,8],[-8,61]],[[24509,63035],[-13,22],[-23,79]],[[24455,64753],[118,-2]],[[24573,64751],[0,-3]],[[24573,64748],[1,-67],[-6,-106],[-11,-19],[-14,-66],[-10,-27],[-6,-150]],[[24527,64313],[-47,66],[-3,23],[-33,47]],[[20434,73471],[231,0]],[[20665,73471],[60,0],[0,-101],[37,0],[0,-102],[161,0]],[[20923,73268],[1,-17],[0,-440]],[[20604,72893],[-10,26],[-25,-12],[-3,16],[-34,-4],[-14,10],[-8,-35],[-10,18],[-23,-7],[2,-30],[-15,2],[-15,-32],[-26,-18]],[[20423,72827],[0,243],[11,0],[0,401]],[[26789,57076],[39,151]],[[26828,57227],[2,12]],[[26830,57239],[2,5]],[[26832,57244],[14,57],[84,171]],[[26978,57082],[-21,-60],[-98,-261]],[[26859,56761],[0,51],[-9,42]],[[26850,56854],[-5,60],[-12,30],[-3,64],[-8,64],[-8,12],[-25,-8]],[[20921,67988],[381,3],[-2,-67],[-12,-33],[-20,-96]],[[21268,67795],[-6,-35],[-20,20],[-8,-65],[-19,-15],[0,-150]],[[20921,67551],[0,30]],[[20921,67581],[0,407]],[[24816,58129],[5,23]],[[24823,58157],[2,-13],[74,-10],[0,20],[21,4],[0,-23],[19,-15]],[[24939,58120],[-3,-443]],[[24936,57677],[-22,0]],[[24914,57677],[-163,0]],[[24751,57677],[3,49],[25,-13],[9,100],[9,26],[12,-21],[10,25],[-15,58],[12,43],[-6,29],[-15,7],[-4,47],[16,10],[0,45],[9,47]],[[28963,64191],[12,43],[11,13],[25,64],[14,19],[22,90]],[[29047,64420],[18,-53],[28,-27]],[[29093,64340],[-1,-101],[7,-13],[-3,-44],[-17,-93],[-7,14],[14,-107]],[[29086,63996],[-17,-8],[2,-37],[-19,-9],[4,-36],[-24,-6]],[[29032,63900],[-7,68],[-25,19],[-4,45],[2,95],[-10,37],[-17,-5],[-8,32]],[[27612,59771],[6,-15],[5,57],[55,-45],[12,-4],[5,22],[20,24],[8,33]],[[27723,59843],[-20,-366]],[[27608,59478],[-1,133],[-10,79],[0,64],[15,17]],[[28627,60135],[26,-4],[4,16]],[[28657,60147],[5,-38],[-9,-97],[-4,15],[-20,-29]],[[28629,59998],[-17,56],[4,67]],[[19756,73979],[222,-1],[73,1]],[[20051,73979],[0,-101],[-8,0],[0,-401],[4,-69],[-16,9],[-2,-42],[-12,0],[0,-101],[11,0],[0,-104],[-30,0],[0,-101],[-10,0],[0,-405],[-3,0],[0,-208]],[[19735,72330],[-6,-18],[-15,28],[-11,-4],[-4,31],[-19,-16],[-4,23],[-13,-13],[-11,17],[-17,-6],[-16,36],[-12,-5],[-3,42],[-11,33],[-19,28]],[[19574,72506],[1,219],[73,-3],[5,83],[10,-12],[38,-5],[0,283],[7,0],[0,266],[18,-30],[0,170],[7,0],[0,202],[17,0],[0,200],[6,0],[0,100]],[[26833,53976],[33,81],[10,41],[10,-2]],[[26886,54096],[28,46]],[[26914,54142],[15,-12],[2,24]],[[26931,54154],[15,-3]],[[26946,54151],[0,-149],[-25,0],[0,-149]],[[26921,53853],[0,-44],[-30,0]],[[18973,66429],[1,243],[0,345]],[[18974,67362],[64,-2],[0,-91],[66,0]],[[19104,67269],[0,-127],[-3,0],[0,-404],[-10,0],[0,-81],[9,0],[0,-304],[14,0],[0,-199],[93,-1],[43,-7]],[[19250,66146],[0,-280],[2,-27],[0,-499]],[[19252,65340],[-149,1],[-129,1]],[[18974,65342],[-1,491]],[[18973,65833],[0,596]],[[25346,55349],[7,50],[29,-7],[5,36],[16,17],[10,41],[26,47]],[[25439,55533],[2,-159],[34,1],[-2,-13]],[[25473,55362],[-6,-81],[-10,-11],[4,-24],[-12,-11],[-8,-66],[3,-54],[-14,-37],[18,-12],[-7,-46],[10,3],[2,-71],[13,-3],[-3,-21],[-17,0],[4,-27],[14,2],[4,-28],[-15,-7],[-7,-67]],[[25446,54801],[-11,9]],[[25435,54810],[-12,70],[10,-2],[1,35],[-13,-7],[-7,20],[-13,-25],[-22,-21],[-7,31],[6,28],[1,62],[-7,-15],[-10,20],[8,10],[-6,72],[9,4],[1,35],[-9,-7],[-8,40],[-12,-5],[6,28],[-7,22],[-8,62],[9,8],[1,74]],[[23741,56926],[-1,-102],[4,0],[-1,-88],[30,-4],[-1,-203]],[[23772,56529],[-2,-304],[-36,3]],[[23734,56228],[-3,65],[-23,93],[-5,61],[4,34],[-9,77],[2,107],[-7,76],[-38,1]],[[23655,56742],[0,90],[-4,0],[1,100],[89,-6]],[[27721,61863],[31,-47],[17,-109],[46,-53]],[[27815,61654],[-4,-36],[-23,-120],[0,-41],[-8,-31],[-12,0],[-9,-41]],[[27759,61385],[-14,21],[-40,26],[-25,53]],[[28363,60929],[27,101],[2,39],[16,-21]],[[28408,61048],[9,-11],[13,-112],[8,-14],[12,-61],[32,-32],[3,-45],[7,2],[29,-119],[-4,-43]],[[28517,60613],[-7,38],[-17,-22],[7,48],[-25,-15],[-7,31],[-4,-24],[-30,61],[-10,10]],[[28424,60740],[4,41],[-21,-5],[1,30],[-16,3],[3,32],[-18,1],[0,30],[-14,57]],[[24563,71635],[15,17],[-1,-44],[-14,27]],[[24405,71367],[11,2],[48,70],[25,27],[6,26],[17,-22],[7,33],[25,10],[22,70],[14,-12],[14,35],[10,-4],[24,-81],[-14,-76],[-24,-78],[9,-73],[-16,-35],[-11,-77],[7,-14]],[[24579,71168],[0,-501]],[[24405,70670],[0,697]],[[24487,67840],[96,-1]],[[24583,67839],[133,1],[34,6]],[[24750,67846],[0,-105]],[[24750,67741],[0,-101]],[[24651,67487],[-150,0]],[[24501,67487],[-8,38],[5,52]],[[24498,67577],[-8,53],[4,44],[-10,37],[-2,71],[5,58]],[[22655,65733],[0,-202]],[[22655,65531],[1,-252]],[[23358,63503],[16,-60],[13,-11],[1,-43],[13,6],[5,-36],[26,-14],[14,39]],[[23446,63384],[18,-11],[-4,-28],[18,-51]],[[23478,63294],[-1,-27],[-12,-9],[3,-36],[12,16],[-1,-49],[-10,-6],[-13,24],[-5,-75],[-15,-19],[-7,-58]],[[23429,63055],[-12,6],[-5,37],[-63,1]],[[23349,63099],[0,404]],[[16714,61657],[69,0],[0,408],[2,101],[-32,-1],[0,108],[24,150],[49,2]],[[16826,62425],[248,-1]],[[17074,62424],[-93,-86],[0,-94],[141,-518]],[[16917,61054],[-120,359],[-63,182],[-20,62]],[[25400,59258],[24,-22],[20,-7],[18,17],[11,29],[35,-1]],[[25508,59274],[1,-30],[21,-8]],[[25530,59236],[-3,-100],[-12,-83]],[[25515,59053],[-5,24],[-22,4],[-26,47],[-22,-11],[-32,12]],[[22943,49851],[3,-26],[-6,-38]],[[22986,50363],[16,15],[2,-22],[42,-3],[8,31],[-1,-65],[22,1]],[[23075,50320],[0,-38],[-15,-294]],[[23060,49988],[-18,-84],[-53,-111],[-24,-68],[-37,-121]],[[22936,49696],[1,34],[8,24],[16,2],[35,105],[23,49],[24,23],[-4,43],[9,29],[-9,16],[-16,-41],[-20,-35],[-11,-40],[-17,-5],[-6,40],[0,60],[-17,12]],[[22952,50012],[-7,42],[-6,-19],[-10,53],[-12,36]],[[22917,50124],[-3,70],[-8,23],[22,56],[36,41],[22,49]],[[26087,57128],[14,-276]],[[26113,56612],[6,-136]],[[26119,56476],[-27,-8],[-10,-18]],[[26082,56450],[1,17],[-59,15]],[[26024,56482],[1,24],[-17,129],[2,29],[-14,-17],[-1,104]],[[19883,71064],[12,-16]],[[19895,71048],[12,-84],[11,-17],[0,-34],[12,-17],[0,-50],[12,-17],[0,-34],[11,-17],[6,-67],[12,-17],[-2,-82],[-11,-74]],[[19958,70538],[-45,0],[0,-68],[-35,0],[0,-33],[-11,0],[0,-34],[-12,0],[0,-33],[-46,0],[0,-135],[-6,0],[0,-308],[-35,0],[0,-34],[-34,0],[0,-34],[-92,4]],[[19642,69863],[-14,0],[-1,68],[-17,1],[0,33],[-11,0],[5,101],[-17,-32]],[[19587,70034],[-11,84],[-6,0],[1,322],[-6,0],[0,201]],[[22528,64721],[1,-207]],[[22529,64514],[0,-199]],[[21996,66816],[18,-45],[21,-26],[14,4],[11,-19],[29,-4],[2,-19],[40,-30],[10,5]],[[22141,66682],[0,-346],[4,1],[0,-406]],[[22145,65931],[-7,0]],[[22004,65931],[0,404],[-4,0],[0,405],[-4,0],[0,76]],[[20082,57632],[12,-101],[84,0],[10,42],[72,-3],[5,-39]],[[20263,57030],[-11,-3],[-13,23],[-74,87],[-32,56],[-89,-1]],[[20044,57192],[0,441],[38,-1]],[[20456,58696],[105,0],[66,-73],[24,-63],[5,20],[71,14],[106,-5]],[[20833,58589],[97,3],[13,24],[71,-442],[24,0],[0,-38]],[[21038,58136],[0,-173],[-62,1],[0,26],[-74,-142]],[[20902,57848],[0,85],[-214,1],[-111,0],[0,-203]],[[20459,57731],[-1,305],[0,408],[-2,252]],[[27497,59127],[0,24]],[[27611,58859],[-30,19],[-17,0],[-1,-35],[-32,-1],[-18,-27]],[[27513,58815],[-6,49],[-13,55],[-9,-18]],[[28162,58364],[2,14],[17,-14],[49,0]],[[28230,58364],[-1,-188],[6,-23],[-1,-41]],[[28226,57889],[-16,-36],[-10,31],[-12,-8],[-3,20],[-17,10],[-9,-20],[-24,17]],[[28135,57903],[0,17],[-23,25],[-17,72]],[[28095,58017],[5,32],[13,6],[7,25],[18,11],[-1,78],[25,195]],[[27929,57491],[29,18],[74,0],[10,6]],[[28042,57515],[13,-50],[16,-97],[13,-46],[9,-55],[2,-47],[11,-22],[3,-35]],[[28109,57163],[-5,-18],[5,-35],[22,-50],[-22,-77]],[[28109,56983],[-22,-37],[-31,12],[-62,107],[-44,-9],[-12,27]],[[27938,57083],[6,17],[-4,74],[5,18],[11,129],[-14,55],[-13,115]],[[18803,71550],[33,0],[0,102],[71,0],[0,13],[35,0],[0,89],[22,-1],[1,-49],[-8,-19],[9,-27],[21,-1],[24,-29],[15,-68],[26,-46],[3,-44],[16,1],[12,-25]],[[19083,71446],[9,-60],[16,-1],[0,-38],[22,-43],[5,-27],[25,17],[13,-23],[16,43]],[[19186,70744],[0,-42]],[[19186,70702],[-35,0],[0,9],[-104,0]],[[19047,70711],[-78,0]],[[26384,60576],[20,-15],[8,77]],[[26412,60638],[12,-2],[10,-26],[19,9]],[[26470,60383],[-3,-20],[-19,-26],[0,-44],[-10,-4],[-13,-81],[3,-21]],[[26428,60187],[-59,206]],[[26369,60393],[15,183]],[[26997,56995],[19,-60],[3,-32],[13,-31],[11,-5],[21,-68],[8,-4],[9,-40]],[[27081,56755],[21,-79]],[[27064,56474],[-11,-10]],[[27053,56464],[0,35],[-29,4],[-14,-10],[-10,41],[-19,-49],[-6,108]],[[26975,56593],[16,51],[8,64],[-2,66],[-17,67],[-1,50],[-6,26],[24,78]],[[25679,61093],[20,15],[14,52],[11,13]],[[25724,61173],[6,-11],[12,-89],[10,-22],[10,25],[10,-10],[-3,-75]],[[25773,60781],[-51,88]],[[25722,60869],[2,63],[-11,57],[-16,-4],[5,52],[-10,32],[-16,-14],[3,38]],[[26209,60492],[9,-2],[1,155]],[[26219,60645],[10,-13],[29,-2],[15,19]],[[26273,60649],[-4,-95],[3,-46],[15,-43],[20,-35],[5,-71],[-5,-15],[1,-56]],[[26308,60288],[-50,-142]],[[26258,60146],[-15,-17],[-25,98]],[[26218,60227],[-4,83],[-30,62]],[[26184,60372],[10,86],[15,34]],[[26311,61014],[14,165]],[[26325,61179],[19,-20],[31,-54],[8,-36],[4,-72]],[[26387,60997],[-14,-8],[7,-43],[-18,-40]],[[26362,60906],[-12,-47],[-21,69],[8,18],[-17,26],[-11,-12]],[[26309,60960],[2,54]],[[26993,58140],[37,4],[20,-69],[17,-78],[8,-15],[-1,-82]],[[27074,57900],[-68,11]],[[26967,57906],[2,102],[24,132]],[[27004,59029],[21,-9],[4,-50],[14,-1]],[[27043,58969],[12,-114],[-6,-24],[7,-52],[15,-36]],[[27071,58743],[0,-30],[-9,0],[-10,-37],[-14,-2],[-9,-33]],[[27029,58641],[-3,99],[-15,51],[0,73],[-21,-14],[-8,49],[-10,-18],[-4,64],[-18,-14]],[[26950,58931],[18,52],[17,21],[12,-5],[7,30]],[[28650,59487],[53,0]],[[28703,59487],[72,0]],[[28775,59487],[2,-58],[17,-245],[7,-68]],[[28801,59116],[-6,-5]],[[28795,59111],[-6,68],[-8,23],[3,39],[-5,89],[-10,30],[-4,48],[-25,13],[-1,40],[-13,-20],[6,-61],[16,-48],[11,10],[0,-67],[15,-135],[9,-61],[-1,-26],[11,-75],[0,-47],[-19,64],[1,37],[-13,61],[-3,38],[-10,13]],[[28749,59144],[3,34],[-13,28],[-6,41],[-10,18],[-17,-2],[-12,47],[-1,31],[-43,146]],[[27454,60295],[36,47],[13,37]],[[27503,60379],[30,61],[17,-32]],[[27550,60408],[1,-38],[19,-88],[3,-140]],[[27573,60142],[-29,-40],[-18,-66],[-18,-22],[-6,16],[-10,-27],[-13,20],[-7,-30]],[[28342,60531],[-24,24],[-6,75],[-19,3],[0,24]],[[16977,71347],[-10,-5],[8,-64],[-3,-26],[8,-38],[-4,-41]],[[16976,71173],[-4,5]],[[16972,71178],[-21,14],[-24,-29],[-22,19],[-22,-48],[-18,-60],[-6,-105],[-19,-63],[-12,0],[-6,-72],[-17,-19],[-10,-35],[-30,-15],[-19,-54]],[[16746,70711],[-23,37],[-22,13],[-18,57],[5,36],[-6,64],[3,76],[-3,97],[-37,110],[-3,46],[-11,31]],[[31446,38277],[21,-16]],[[31467,38261],[-1,-46]],[[22569,56856],[161,-1]],[[22731,56601],[-1,-202]],[[22730,56399],[-10,24],[3,41],[-19,42],[-9,-3],[-12,-58],[-29,-92],[-12,-9],[-28,46]],[[22614,56390],[7,56],[-5,-1],[7,60],[-7,20],[-13,-14],[-19,11],[-10,91],[8,35],[-4,50],[-9,-15]],[[27070,59438],[16,69],[28,54]],[[27114,59561],[50,-2]],[[27164,59559],[-8,-28]],[[27156,59531],[-9,-60],[4,-80],[-6,-12],[-4,-78]],[[27141,59301],[7,-61],[-17,0],[-8,23],[-11,-12],[-23,-70]],[[27089,59181],[-4,-26]],[[27085,59155],[-14,27],[-6,52],[-8,1],[-8,39],[26,111],[5,11],[-10,42]],[[26225,58159],[14,67],[6,-32],[10,4],[4,47],[10,16],[-4,62],[22,3],[-4,34],[8,15],[0,92],[16,18],[0,74]],[[26307,58559],[14,-58],[10,24],[5,-19],[0,-73]],[[26336,58433],[-29,-144],[-7,-12],[-8,-53],[-7,-12],[-16,-122]],[[26269,58090],[-19,-71],[-5,-2]],[[26245,58017],[-9,88],[-15,19],[4,35]],[[22350,68083],[33,0]],[[22387,67576],[-140,1]],[[22863,54830],[13,-1]],[[22876,54829],[142,-4]],[[23018,54825],[7,-21],[-2,-53],[10,-55],[11,-27],[-5,-61]],[[23039,54608],[20,-35]],[[23059,54573],[-4,-6],[-139,-291]],[[22863,54499],[0,331]],[[22614,56390],[0,-492]],[[22491,55898],[-1,429]],[[22490,56327],[0,289]],[[27780,60729],[25,50],[23,157],[9,21],[6,-28],[11,16]],[[27854,60945],[9,13],[8,-34],[11,-8],[1,-67],[23,-29],[24,-176],[8,-3]],[[27896,60510],[-14,-9],[-4,-31]],[[27878,60470],[-10,4],[-18,79]],[[27850,60553],[-11,47],[-20,-6],[-11,16],[-9,42],[-3,46],[-16,31]],[[20101,61123],[9,22],[6,-24],[18,8],[9,-49],[13,-6],[8,-33],[22,-14],[0,-44]],[[20065,60503],[1,293],[-6,1],[2,306],[20,26],[19,-6]],[[26945,55077],[10,18],[-6,39],[16,6],[13,23]],[[26978,55163],[28,-37],[19,10]],[[27025,55136],[18,-174],[23,-65]],[[27066,54897],[-9,-80]],[[27057,54817],[-13,25],[-19,-46],[-10,-54],[-1,-47],[-19,-96],[6,-38]],[[27001,54561],[-13,-28],[-21,-3],[0,25],[-15,47]],[[26952,54602],[7,101],[-29,60],[-45,24]],[[26885,54787],[24,23],[-9,54],[37,80],[-10,43],[13,40],[5,50]],[[24948,63645],[-9,36],[-14,2],[-18,-33],[-42,1],[-20,17],[-7,-39]],[[24838,63629],[-19,-9],[-19,-45],[-18,-11],[-25,3],[-8,71],[-11,9]],[[24738,63647],[24,36],[15,-5],[4,39]],[[23016,66889],[189,0]],[[23205,66889],[-1,-406]],[[23026,66484],[-4,81],[-17,60],[-15,27],[-1,76],[11,26],[3,52],[11,16],[2,67]],[[22662,60865],[30,1],[-1,205]],[[22691,61071],[4,2],[149,0]],[[22844,61073],[0,-509]],[[22844,60564],[-55,2],[-127,-4]],[[22662,60562],[0,303]],[[26143,61748],[9,4],[31,104]],[[26209,61869],[20,-52],[-7,-48],[14,3],[-3,-30],[9,-16],[-2,-42],[23,-25],[-4,-48],[7,-21]],[[26151,61591],[-12,54],[-5,64],[9,39]],[[24765,52052],[-6,-133],[0,-94],[3,-74],[8,-50],[20,-50],[-17,-148]],[[24773,51503],[-32,2],[-5,16],[-3,61],[-16,20],[-13,42],[-1,40],[-14,44]],[[24689,51728],[0,97],[-5,0],[3,53],[17,26],[8,-3],[12,58],[16,43],[6,35],[19,15]],[[25554,57450],[3,-38],[-3,-68],[-7,-15],[2,-41],[-15,-41],[-9,-69]],[[25525,57178],[-170,17]],[[25355,57195],[12,362]],[[18336,54778],[63,0],[252,2]],[[18651,54780],[177,0],[60,-6],[54,0],[0,11],[84,0],[3,3],[110,0]],[[19139,54788],[0,-100]],[[19139,54688],[1,-207],[-1,-604]],[[18884,53522],[-278,367],[-212,269],[-58,77]],[[18336,54235],[0,543]],[[19405,56114],[5,45],[10,25],[25,14],[2,61],[83,1]],[[19530,56260],[0,-663]],[[19530,55096],[0,-410]],[[19530,54686],[-18,0]],[[19512,54686],[-31,120],[4,64],[-1,112],[-9,72],[-20,117],[-4,1],[-46,273],[0,669]],[[24429,57786],[7,33],[-6,44],[11,28],[4,39],[8,3],[-9,58],[-8,121],[23,45],[3,36]],[[24462,58193],[26,8],[0,-102],[59,-4]],[[24547,57855],[-1,-171],[-29,1]],[[24456,57581],[1,162],[-27,0],[-1,43]],[[27601,48335],[13,-202],[-1,-235],[-7,-175],[-4,-144]],[[27602,47579],[-36,8],[-26,32],[0,-24],[-162,-1]],[[27378,47594],[-2,478],[0,250]],[[27141,53410],[11,82],[7,-1],[12,62]],[[27171,53553],[20,-90],[32,-72],[15,4],[31,-26]],[[27269,53369],[-6,-103],[-13,-22],[-8,-59],[-9,-3],[0,-71],[-4,-54],[-8,-12]],[[27221,53045],[-12,21],[-24,73],[4,28],[-21,-15],[-15,17],[-22,54]],[[27131,53223],[0,38],[10,149]],[[23974,64548],[128,1]],[[24102,64190],[-21,-1]],[[24081,64189],[-107,-7]],[[24521,66583],[66,-1],[0,35]],[[24587,66617],[53,-48],[18,-109],[0,-37]],[[24705,66275],[-53,1],[0,-102],[-65,0]],[[26104,59938],[61,-15]],[[26165,59923],[-12,-31],[11,-52],[6,1]],[[26170,59841],[-9,-128],[-13,-138]],[[26148,59575],[-40,-9]],[[26064,59799],[6,23],[-8,40],[12,-25],[15,19],[9,31],[6,51]],[[24290,51905],[3,42]],[[24293,51947],[21,-6],[16,-28],[16,55],[-1,20],[17,15],[12,-13],[14,-49],[3,-40],[26,0],[6,29],[33,0]],[[24456,51930],[27,1],[13,-40]],[[24496,51891],[-10,-29],[1,-33]],[[24487,51829],[-60,-18]],[[24319,51555],[-6,24],[8,41],[8,-3],[-2,46],[-16,8],[-14,-22],[-9,19]],[[24275,51386],[10,27],[12,-5],[3,26],[22,-6],[23,-61],[9,7],[6,-29],[-15,-36],[-1,-40],[-14,-19],[-59,115],[4,21]],[[25420,62164],[104,3]],[[25524,62167],[10,-86],[1,-42],[-14,-76],[-14,-12],[-7,-32],[-9,-83]],[[25491,61836],[-72,2]],[[28550,61756],[5,-40],[13,-47],[30,-61],[8,-56]],[[28606,61552],[5,-36],[14,21],[8,-14],[-7,-47],[4,-48],[18,-92],[-5,-22],[5,-97],[-9,19],[-11,58],[-8,4],[-5,64],[-8,-9],[-2,-57],[-7,38],[-8,-3],[-5,48],[-12,45],[-23,23],[-35,3],[-8,129],[-6,9]],[[28501,61588],[-7,30],[15,62],[13,87],[28,-11]],[[24475,52618],[13,65],[112,16]],[[24600,52699],[-17,-81]],[[24583,52618],[-6,-42],[-15,-33],[4,-26],[-3,-47],[4,-21],[-6,-49],[15,-111],[13,-25]],[[24589,52264],[-27,0],[-9,-28]],[[24553,52236],[-34,2]],[[24519,52238],[-9,25],[-17,0],[0,36],[11,75],[-4,97],[-15,-21],[-6,12],[11,24],[-6,42],[-11,1],[2,89]],[[24009,53851],[98,1],[0,102],[72,-1]],[[24179,53953],[5,-43],[-8,-67],[7,-6],[-5,-56],[4,-28],[-9,-5],[21,-36],[-3,-20],[12,-42],[0,-47],[10,7],[12,-28]],[[24225,53582],[-30,-22],[-91,-79],[-8,-3],[-13,73],[4,24],[-8,54]],[[24079,53629],[-22,92],[-30,31],[1,42],[-17,23],[-2,34]],[[25823,67545],[-22,169],[0,48],[22,102],[8,85]],[[23036,64415],[176,0]],[[23212,64415],[-13,-36],[-2,-37],[15,-58],[13,-16],[10,-56],[-4,-28]],[[23231,64184],[-1,-63],[16,-9]],[[23246,64112],[-99,0]],[[23036,64111],[0,304]],[[25197,66405],[112,2]],[[25339,66408],[0,-398]],[[25339,66010],[-11,0]],[[25328,66010],[-98,0]],[[25198,66010],[-1,395]],[[22311,63505],[95,0]],[[22406,63505],[62,0]],[[22468,63505],[-1,-506]],[[22467,62999],[-150,1]],[[25328,66010],[0,-101],[-7,-1],[0,-93]],[[25321,65815],[0,-305]],[[20283,55809],[172,0],[1,-100],[113,1],[1,-202]],[[20570,55508],[0,-198],[-10,0],[-1,-516],[140,2]],[[20699,54796],[0,-303],[1,-8],[0,-294]],[[20700,54191],[-19,0]],[[20681,54191],[-143,0],[-158,2]],[[20380,54193],[-106,-2]],[[20274,54191],[0,1114],[10,1],[0,110]],[[25724,61173],[12,-1],[-3,59],[5,53],[-11,57],[4,72]],[[25731,61413],[0,51],[31,-1],[0,18]],[[25823,61316],[8,-41],[-6,-42],[-10,-5]],[[25524,62167],[-5,8],[7,56]],[[25526,62231],[1,-6],[79,-1],[0,7]],[[25645,62227],[-9,-22],[-5,-55],[-6,10],[-12,-45],[-7,13],[-1,-80],[-10,-69],[11,-69],[-4,0],[3,-101]],[[25605,61809],[-16,-41],[-15,39],[-16,-20],[-14,9]],[[25544,61796],[-9,-44],[-22,-6],[-7,-47],[-41,-42]],[[25465,61657],[2,71],[24,42],[0,66]],[[27478,65805],[48,61],[45,74],[9,24],[10,60],[13,3],[3,-28],[36,72],[47,74]],[[27689,66145],[0,-314],[42,-1]],[[27731,65830],[0,-174]],[[27731,65656],[-19,2],[-146,-3],[-88,1]],[[27478,65656],[0,149]],[[27511,55189],[28,-7],[40,-39],[-1,65],[18,14],[5,48],[-17,60],[8,7],[-16,20],[5,22]],[[27581,55379],[15,-39],[12,14],[12,-116],[17,12],[-4,-38],[9,-30],[1,-33],[9,8],[0,33],[9,13],[11,58],[17,44],[0,36],[10,30],[23,123],[24,42],[10,-11],[8,52],[13,26]],[[27777,55603],[27,-70],[23,-22],[-6,-29]],[[27821,55482],[-11,-23],[-9,-97],[-17,10],[-17,-16],[-11,39],[-16,-33],[-10,-63],[3,-31],[8,10],[0,-33],[-15,-20],[-18,-45],[-9,-52],[-34,-59],[-10,38],[-11,-7],[-1,-32],[17,-22],[-5,-59],[-25,-52],[-7,-40],[-10,5],[-24,-22],[-17,-59],[-6,18],[-20,-45]],[[27546,54792],[-2,16],[-19,-36],[-18,54],[8,33],[0,91],[-9,20],[-1,52],[-8,29],[5,56],[8,27],[1,55]],[[27253,57873],[80,-17]],[[27333,57856],[2,-53],[-7,-48],[5,-21],[30,73],[8,-36]],[[27371,57771],[-1,-69],[6,-38]],[[27376,57664],[0,0]],[[27376,57664],[1,-20]],[[27377,57644],[0,-1]],[[27377,57643],[0,0]],[[27377,57643],[4,-43],[-3,-78],[4,-17],[-9,-31]],[[27217,57495],[-10,125],[5,42],[-4,52],[10,25],[12,0],[3,102],[9,33]],[[27266,54838],[74,229],[20,-77],[-4,-52],[16,-24],[9,45]],[[27381,54959],[10,-75],[-2,-87],[6,-36],[-8,-72],[2,-51],[-10,-45],[-13,7],[-3,-60],[-20,7],[4,-45],[-6,-37],[5,-46],[13,-34],[2,-35],[11,-30],[-2,-39],[8,2]],[[27378,54283],[-7,-32],[5,-21]],[[27376,54230],[-9,4],[-22,71],[-11,-17],[-21,34],[-5,62],[4,26],[-8,44]],[[27304,54454],[-3,17],[10,50],[-6,76],[-4,-4],[-15,105],[4,34],[-23,81],[-1,25]],[[29192,65355],[29,48],[4,-32],[34,-26],[-2,38],[23,-40],[28,10]],[[29308,65353],[-13,-82],[0,-75],[5,-18]],[[29300,65178],[9,-52],[-9,-81]],[[29300,65045],[-71,-212]],[[29229,64833],[-37,71]],[[29192,64904],[-91,179]],[[29101,65083],[-17,78]],[[29084,65161],[1,80],[77,12],[19,83],[11,19]],[[29624,67292],[37,-38],[38,15],[32,-3]],[[29731,67266],[-5,-83]],[[29726,67183],[5,-91],[-9,-33],[6,-52],[-8,-45],[-13,-10],[-1,-57],[-9,-73],[12,-102],[6,10],[9,-53]],[[29593,66691],[2,219],[-24,3],[3,218],[36,-4],[2,107],[4,66],[8,-8]],[[19764,53938],[0,-524],[-234,-1]],[[19530,53413],[0,1273]],[[19531,57636],[160,-1],[1,404],[204,-2],[0,51],[30,0],[0,-51],[89,1]],[[20015,58038],[19,0],[12,-100]],[[20046,57938],[36,-306]],[[20044,57192],[-136,1],[-9,-2]],[[19899,57191],[-368,2]],[[19531,57193],[0,443]],[[27258,60505],[8,-6],[-7,46],[12,42],[12,18]],[[27283,60605],[6,75],[18,26],[11,-10]],[[27318,60696],[66,-186]],[[27384,60510],[-7,-53],[9,-43],[-19,-47],[-17,-16]],[[27350,60351],[0,11],[-37,-27],[-31,-51]],[[27282,60284],[-27,75],[-11,45]],[[27394,63328],[9,20],[-4,60],[13,-11],[-2,52],[7,20],[2,72]],[[27419,63541],[59,-19]],[[27478,63522],[0,-63]],[[27391,63178],[-10,42],[12,48],[1,60]],[[25837,54667],[3,20],[15,7],[10,-25],[-4,37],[17,68],[14,-31],[6,-45],[18,-3],[23,-32],[6,16]],[[25945,54679],[9,-98],[20,-71]],[[25974,54510],[-19,-3],[-3,-25],[0,-232]],[[25952,54250],[1,-98],[-55,-1]],[[25898,54151],[-31,-2],[0,100],[-29,0]],[[25813,54591],[10,39],[1,33],[13,4]],[[25867,56634],[32,97],[23,4],[0,17]],[[26024,56482],[0,-39],[-30,25],[-15,-16],[0,-43],[-19,10],[-7,-58],[-20,-26]],[[25861,56449],[-13,-1],[11,54],[0,63],[8,69]],[[25351,57057],[4,138]],[[25525,57178],[0,-305]],[[25496,56876],[-76,6],[-74,10]],[[25346,56892],[5,165]],[[7285,89453],[0,-1009]],[[7285,88444],[-135,0],[0,-303],[12,0],[0,-302]],[[6449,87839],[-325,0],[0,101],[-99,0],[0,-101],[-50,0],[0,-101],[-49,0],[0,101],[-297,0],[0,-101],[-20,0],[0,-101],[-49,0],[0,-101],[-49,0],[0,-202],[-19,0],[0,-101],[-48,0],[0,-201],[-49,0],[0,-101],[-17,0],[0,-202],[-48,0],[0,-202],[-65,0],[0,-202],[-47,0],[0,-201],[-16,0],[0,-101],[-47,0],[0,-101],[-47,0],[0,-202],[-14,0],[0,-101],[-47,0],[-1,-187]],[[5046,85432],[-10,-15]],[[5036,85417],[-82,0],[0,-101],[7,0]],[[4961,85316],[-9,-36],[0,-49],[-41,-38],[-8,-26],[-22,-10],[-15,-44],[-20,-15],[-4,55],[-29,45],[-54,-20],[-29,33],[49,47],[15,-39],[18,12],[5,50],[25,77],[3,60],[-8,85],[1,81],[-16,74],[5,21],[-16,20],[-29,97],[-20,139],[29,128],[21,23],[24,79],[24,26],[-15,77],[-18,44],[-15,64],[-10,107],[-50,162],[-3,74],[-25,67],[-10,63],[-30,85],[-10,44],[-22,9],[-11,-37],[-2,-74],[6,-37],[-8,-56],[-12,-21],[-27,-10],[-18,21],[-19,-54],[-36,-29],[-50,-68],[-73,-48],[-88,-28],[-75,10],[-51,38],[-13,32],[-13,99],[23,18],[-18,69],[-54,62],[-32,108],[-5,34],[-33,51],[-18,62],[-42,8],[-31,42],[-47,110],[23,32],[24,55],[-2,36],[-24,6],[-38,-54],[-48,10],[-16,51],[11,32],[32,1],[57,128],[10,-4],[17,45],[-16,34],[-4,41],[32,24],[-27,7],[5,70],[27,78],[-17,3],[-18,-48],[-27,20]],[[3261,87028],[35,25],[57,0],[22,-20],[23,10],[9,-24],[21,10],[10,30],[-8,38],[34,68],[37,-11],[0,37],[25,46],[33,-40],[24,32],[23,9],[15,54],[19,-132],[27,-10],[29,34],[29,-20],[27,-40],[-12,-65],[11,-44],[-11,-40],[13,-11],[4,-65],[-13,-38],[21,-54],[2,-58],[21,10],[-11,-34],[2,-48],[-71,-21],[-6,-34],[-20,19],[-26,-18],[-28,-58],[8,-64],[-26,-8],[-23,71],[-38,47],[-57,-4],[-14,35],[-28,18],[-27,58],[-35,42],[-40,19],[-32,72],[-25,10],[-2,70],[-28,97]],[[1695,87369],[6,69],[25,52],[11,-3],[-4,-58],[12,-54],[33,-70],[48,-63],[22,-14],[25,13],[57,-94],[-21,-19],[-9,37],[-51,8],[-26,-17],[-33,46],[-58,136],[-37,31]],[[1687,87598],[8,-5],[5,-84],[-20,42],[7,47]],[[20921,67988],[0,335]],[[21089,68323],[297,-1],[-5,21],[3,52],[10,32],[-3,38],[8,100],[11,30],[-2,69],[24,21],[16,-29],[14,10],[21,79],[10,9]],[[21493,68754],[-1,-195],[0,-406]],[[21492,68153],[-4,-1],[0,-332],[-4,-23],[-29,14]],[[21455,67811],[-10,-16],[-177,0]],[[22408,69607],[205,-4]],[[22613,69603],[0,-102]],[[22614,68894],[-202,3]],[[22409,69203],[-1,404]],[[22941,67092],[98,0]],[[23039,67092],[-16,-39],[5,-56],[-8,-28],[6,-21],[-10,-59]],[[23041,66402],[-17,-7],[-5,30],[-24,-5],[-6,21]],[[22989,66441],[-1,32],[-21,66],[7,52],[-11,16],[-21,3],[-1,40]],[[22941,66650],[0,442]],[[27381,54959],[12,51]],[[27393,55010],[17,-34],[7,8],[20,-17],[2,-64],[11,-36],[19,-18],[13,-80],[8,-14]],[[27490,54755],[-1,-44],[14,-67],[-7,-74],[-32,-62],[-19,-20],[-2,41],[-19,40],[-11,-22],[-2,-31],[12,-15],[14,-59],[-15,-65],[-25,-59],[-9,0],[-10,-35]],[[26701,58725],[3,7],[6,123],[4,-12],[8,102]],[[26722,58945],[-3,46],[8,30],[11,-26],[-2,57],[5,5]],[[26741,59057],[-2,-28],[20,-42],[57,-205]],[[26816,58782],[-4,-21],[3,-63],[-13,-56],[-4,-38]],[[26798,58604],[-9,-21],[-24,18],[-21,-29],[-8,-40],[-20,-17]],[[26716,58515],[-6,-2],[1,65],[-4,30],[7,29],[-13,60],[0,28]],[[28881,63990],[21,81],[21,57]],[[28923,64128],[38,83]],[[28961,64211],[2,-20]],[[29032,63900],[21,-54],[7,-52],[20,-41],[13,-75]],[[29093,63678],[-16,-35],[-10,8],[-12,-51],[-32,-40]],[[29023,63560],[3,81],[-14,22]],[[29012,63663],[-26,63],[-105,264]],[[22709,67191],[1,-369]],[[22710,66822],[-14,-11],[-25,9],[-20,21],[-8,-11],[-9,-74],[-12,-29],[-19,-9],[-37,89]],[[22566,66807],[10,36],[-2,47],[8,74],[-5,32],[1,101],[9,94]],[[25530,59236],[58,-26],[5,11]],[[25593,59221],[12,2],[25,-21],[-1,-39],[-10,-27],[8,-15],[-7,-28],[11,-41],[-4,-26],[-5,-122]],[[25622,58904],[-6,-105]],[[25616,58799],[-92,39]],[[25524,58838],[-5,169],[-4,46]],[[23225,60010],[73,0]],[[23298,60010],[32,0]],[[23330,60010],[0,-66],[-6,0],[0,-402]],[[23324,59542],[-106,0]],[[23218,59542],[0,401],[7,0],[0,67]],[[23021,55137],[62,1],[0,32]],[[23144,54606],[-105,2]],[[23018,54825],[2,0],[1,312]],[[22052,56779],[62,-152],[7,9],[21,-15],[14,9],[21,-47],[4,21],[12,-10],[4,24]],[[22197,56618],[0,-293]],[[31200,38072],[21,-4]],[[31221,38068],[-4,-51]],[[30408,68304],[30,-20],[12,70],[25,-17],[2,-16]],[[30477,68321],[-9,-113],[-7,-19],[32,-22],[-6,-42],[4,-51],[-10,-39],[12,-80]],[[30493,67955],[-15,-94],[-23,-27],[-5,-19],[-2,63],[-7,21]],[[30441,67899],[3,87],[-6,17],[11,92],[-5,10],[-16,-49],[-13,4],[-15,71]],[[30400,68131],[-5,17],[13,156]],[[22933,55826],[125,-9]],[[23058,55817],[0,-66],[25,13]],[[23083,55333],[-62,1]],[[23021,55334],[-91,6]],[[22930,55340],[3,486]],[[22479,53822],[-8,46],[-49,-26]],[[22128,53697],[20,-57],[-7,-35],[14,-35],[7,29]],[[22162,53599],[-1,-471]],[[21280,53785],[125,-1]],[[21410,53126],[-25,2]],[[21385,53128],[-11,48],[0,75],[-20,70],[-22,21],[-27,68],[-21,-59],[-4,17]],[[21280,53368],[0,417]],[[20699,54796],[3,0],[0,515],[286,3]],[[20988,55314],[0,-516],[26,0],[0,-608]],[[21014,54190],[-72,0]],[[20942,54190],[-12,0]],[[20930,54190],[-142,0],[-88,1]],[[24274,61187],[15,-1],[20,48],[73,0],[1,119]],[[24383,61353],[27,-1]],[[24410,61352],[2,0],[-1,-423]],[[23683,57798],[1,51],[30,-3],[1,85]],[[23715,57931],[0,20],[30,-2],[1,105],[29,-7],[1,136],[17,-76],[10,12]],[[23803,58119],[12,35],[8,-22],[13,-3],[18,29],[9,-14],[17,36],[6,-73],[-2,-43],[24,16],[10,-17]],[[23924,58052],[-1,-122],[-49,3],[-20,-81],[-38,3],[-12,-16],[1,-134]],[[23790,62949],[0,-369]],[[23790,62580],[-23,9],[-16,-36],[-12,-5],[-6,-42],[-7,10],[7,36],[-5,26],[-13,-16],[1,-44],[-11,-23],[-12,11]],[[23693,62506],[-8,32],[-15,14],[5,34],[-12,-6]],[[23663,62580],[1,288]],[[16820,60549],[263,3]],[[17268,59977],[255,-808],[113,-364]],[[17636,58805],[55,-180]],[[17138,58610],[-81,1],[0,-13],[-23,3]],[[17034,58601],[1,86],[6,5],[-3,89],[-7,20],[3,34],[-7,22],[-5,82],[-5,21],[3,71],[-12,58],[-7,108],[7,44],[-16,57],[4,39],[-19,13],[-9,55],[-1,63],[-12,29],[1,52],[-9,28],[-13,75],[9,16],[-7,45]],[[27709,64282],[0,583]],[[27709,64865],[7,-141],[19,-20],[-6,-50],[47,-9],[9,26],[12,-23],[3,20],[22,10],[20,47]],[[27842,64563],[0,-157],[-66,-286]],[[27776,64120],[-13,-6],[-18,45],[-7,74],[-23,61],[-6,-12]],[[27195,58344],[161,-25]],[[27359,58254],[2,-42],[-4,-64]],[[27357,58148],[-139,23]],[[27195,58339],[0,5]],[[26798,58604],[4,-62],[8,7],[5,-69],[5,-8]],[[26820,58472],[10,-75],[9,16],[13,-70],[0,-31],[-9,-81],[5,-37],[10,-19]],[[26809,58022],[-12,27],[-7,61],[-15,31],[0,24],[-26,86],[-14,30]],[[26735,58281],[9,45],[-8,53],[2,34],[-7,26],[6,25],[-21,29]],[[26716,58493],[0,22]],[[26583,59038],[9,50],[-1,76],[10,83]],[[26601,59247],[15,2],[6,25],[21,-12],[6,25],[13,-5],[3,45],[14,0]],[[26709,59306],[7,-123]],[[26716,59183],[-6,-29],[-14,38],[-34,-92],[-5,-50]],[[26657,59050],[-20,8],[-16,-21],[-2,-30],[-9,7],[2,-46],[-13,24],[2,-52]],[[26601,58940],[-9,34],[-9,64]],[[28064,65368],[-1,17],[61,1]],[[28124,65386],[42,-166],[17,-1]],[[28183,65219],[0,-125],[-29,-175]],[[28154,64919],[-40,16]],[[28114,64935],[1,108],[-6,0],[1,95],[-47,0],[1,230]],[[22908,67092],[33,0]],[[22941,66650],[-28,35],[-12,-17],[-8,48],[-11,1]],[[22882,66717],[-32,12],[-8,33]],[[22842,66762],[0,330]],[[28738,64565],[41,69],[33,42],[-10,49],[0,50],[21,45],[12,-11]],[[28835,64809],[20,-64],[23,-93],[-22,-42],[28,-159]],[[28884,64451],[-38,-32]],[[28846,64419],[-23,-20],[-18,-40]],[[28805,64359],[-36,94],[-31,112]],[[27467,57470],[67,-4]],[[27534,57466],[109,-9]],[[27643,57457],[1,-48],[9,-27],[5,-54],[12,-45],[10,-10],[5,-41],[-7,-5],[-8,-90]],[[27670,57137],[-15,-47],[-22,-4],[-5,16],[-18,-11],[-67,-146]],[[27543,56945],[1,32],[-10,38],[-2,83],[-13,57],[-2,43],[-8,36]],[[27509,57234],[-6,52],[-16,52],[-8,68],[-12,64]],[[27403,55565],[80,179],[5,-64],[16,-26],[18,0]],[[27522,55654],[9,-69],[9,-19],[-9,-39],[14,-34],[36,-114]],[[27511,55189],[5,33],[-6,33],[-3,71],[8,66],[-24,37],[-16,6],[-17,-14],[-22,54],[-11,61],[-22,29]],[[23927,63158],[51,3],[63,-8]],[[24041,63153],[47,-2],[-1,-102]],[[24087,63049],[-1,-2],[-3,-334]],[[24083,62713],[-23,26],[-17,-137]],[[24043,62602],[-13,-5],[-17,71],[-1,34],[-23,6],[-17,77]],[[23972,62785],[-3,38],[-27,29],[-4,37],[-10,-14],[-6,68],[5,35],[-3,77]],[[29520,69339],[144,2],[33,-8]],[[29697,69333],[5,-85],[2,-119],[-13,-60]],[[29594,68896],[-31,21],[-53,83]],[[29510,69000],[-9,58],[14,59],[5,100],[-14,47],[14,75]],[[27914,65392],[0,1]],[[27914,65393],[79,1],[53,6],[0,-32],[18,0]],[[28114,64935],[-114,27],[0,-42],[-18,-18]],[[27875,65063],[1,96],[8,35],[24,-1],[5,-18],[1,217]],[[28616,60609],[9,25],[14,-10]],[[28639,60624],[7,-37],[10,25],[8,-41],[5,-110],[-8,-90],[-18,63],[-18,42]],[[28625,60476],[-12,23],[-1,76],[4,34]],[[24106,61676],[36,-3]],[[24142,61673],[25,-3],[-1,-98],[35,-5],[9,-17],[16,15]],[[24226,61565],[-1,-50]],[[24225,61515],[0,-152],[4,-1],[-1,-168]],[[24167,61199],[-31,2],[-20,85],[-5,87],[-10,1],[0,48],[-15,11]],[[24086,61433],[2,147],[15,0],[3,96]],[[20355,71488],[71,1],[0,-34],[60,1],[0,-102],[11,0],[0,-101],[24,0],[0,-67],[12,-1],[0,-33],[58,-1],[0,-34],[71,-1],[0,34],[35,-1],[0,51],[35,0]],[[20732,71200],[0,-152],[-48,0],[0,-196],[6,0],[0,-206]],[[20690,70646],[-15,0],[0,-407],[-12,0]],[[20663,70239],[-189,2],[-148,0]],[[20326,70241],[0,406],[11,0],[-1,403],[10,0],[0,405],[9,17]],[[20663,70239],[-2,-506],[-14,0],[0,-410]],[[20647,69323],[-10,0]],[[20637,69323],[-215,0],[-50,-7]],[[20372,69316],[-66,0]],[[20306,69316],[0,216],[-5,0]],[[20301,69532],[0,200],[13,0],[1,472],[-1,37],[12,0]],[[25446,60419],[61,129],[27,30],[34,96]],[[25590,60467],[-14,-96],[-9,3],[-2,-59],[22,-81],[-7,-41]],[[25580,60193],[-11,-29],[-32,-7],[-9,-24],[-45,51]],[[25483,60184],[-19,70],[-15,37],[-1,61],[-12,33],[10,34]],[[25640,71063],[28,45],[11,-8],[14,-72],[12,-27],[19,-4],[8,46],[16,-7],[9,-38],[4,69],[-7,53],[16,20],[7,-32],[-6,-56],[17,-26],[26,72],[40,62],[59,110],[11,-21],[65,41]],[[25989,71075],[-139,1],[0,-203],[-70,2],[0,-203]],[[25780,70672],[-140,0]],[[25640,70672],[0,391]],[[26790,61133],[11,42],[33,-38],[43,-88],[18,-15]],[[26895,61034],[-16,-32],[7,-34],[-8,-41],[6,-11],[3,-67]],[[26887,60849],[-34,42],[-30,-32],[-8,-30],[-11,15]],[[26804,60844],[-3,92],[-11,27],[-4,48]],[[26786,61011],[12,62],[-8,60]],[[25265,63362],[147,1]],[[25404,63137],[-27,-5],[0,-34],[-114,-1]],[[25263,63097],[-1,163]],[[26802,60596],[6,-19]],[[26808,60577],[26,-23],[-1,-61],[15,17],[7,-18],[-2,-71],[3,-52],[12,-26]],[[26868,60343],[-6,-17]],[[26862,60326],[-24,-3],[-16,-31],[-5,-29],[-24,-52],[-6,27]],[[26787,60238],[-15,24],[-3,33],[-14,-4],[-3,32],[4,74],[-3,85]],[[26753,60482],[-3,61],[20,80],[9,-23],[23,-4]],[[22691,61377],[92,0]],[[22844,61277],[0,-204]],[[22691,61071],[0,306]],[[24791,62074],[-13,-59],[8,-72]],[[24765,61794],[-11,35],[-6,44],[5,65],[14,73],[24,63]],[[28007,63883],[32,-46],[17,-50],[3,68],[41,-71],[9,65]],[[28109,63849],[5,-85],[29,-69]],[[28143,63695],[-7,-50],[-13,-42],[7,-32],[-7,-19],[-4,-57],[-22,-195],[-23,-120]],[[27955,63180],[14,117],[-1,272],[6,15],[23,201]],[[23349,63099],[-62,0]],[[23224,63099],[0,404]],[[23867,55908],[0,102],[3,305],[3,0],[1,153]],[[23874,56468],[23,0]],[[23897,56468],[14,-57],[11,-75]],[[23922,56336],[0,0]],[[23922,56336],[25,-28],[4,-22],[11,17],[10,-44]],[[23972,56259],[-3,-378]],[[23969,55881],[-29,3],[0,-17],[-41,5]],[[23899,55872],[-33,3],[1,33]],[[23868,56915],[-1,-102],[-6,1],[0,-47],[17,-6],[-4,-91],[6,-94],[16,-74],[1,-34]],[[23874,56468],[-20,-16],[-12,21],[-13,-2],[-8,27],[-29,28],[-20,3]],[[28334,60270],[9,12]],[[28343,60282],[3,5]],[[28346,60287],[8,8]],[[28354,60295],[13,-56],[-4,-26],[-15,-4]],[[28348,60209],[-16,20],[2,41]],[[24576,62804],[40,-105],[20,-100]],[[24636,62599],[-129,4],[0,-103],[-21,1]],[[24444,62504],[-8,206]],[[24436,62710],[-6,153],[72,172],[7,0]],[[24796,62339],[-35,-1],[-1,-89]],[[24760,62249],[-9,1],[-27,45],[-13,6]],[[24711,62301],[-23,-11],[-10,41],[-3,84],[-6,60]],[[24669,62475],[8,71],[11,17],[13,-21],[49,-1],[0,60],[31,0],[-1,38],[16,4]],[[27474,56104],[10,35],[6,47],[13,28],[-1,-31],[12,4],[-2,61],[35,21],[5,21],[33,75],[4,1],[41,90]],[[27658,56385],[-11,-78],[-23,-59],[6,-54],[-5,-20],[-30,-241]],[[27595,55933],[-14,-22],[0,-35],[-20,-5]],[[27561,55871],[-15,3],[-22,-19],[-22,55],[-4,55],[-13,39]],[[27485,56004],[-2,39],[-11,43],[2,18]],[[26896,59538],[0,-87],[-5,-28],[-21,-46],[6,-28]],[[26870,59324],[-31,-54],[-7,8],[-21,-49],[-6,7],[-15,-54],[-12,-14],[-14,-40]],[[26764,59128],[-14,63],[-8,57],[-15,-60],[-11,-5]],[[25225,58601],[11,41],[108,-9]],[[25344,58633],[-3,-242],[-14,-93],[0,-123]],[[25327,58175],[-33,-5]],[[27670,57137],[6,-53],[15,23],[10,-21],[-8,-23],[0,-36],[9,-50],[9,6],[-2,-49],[9,-60]],[[27603,56618],[-17,50],[-7,38],[13,42],[-7,101],[-11,49],[0,47],[-19,-50],[-12,47]],[[27543,56942],[0,3]],[[28773,63662],[49,122]],[[28822,63784],[23,-22],[4,18],[7,-50],[5,14],[8,-67],[19,-29],[1,-43],[10,11],[8,-42],[9,5]],[[28916,63579],[-16,-28],[3,-17],[-13,-39],[5,-10],[-25,-47],[-20,-82],[0,-43]],[[28850,63313],[-19,-18],[-15,-34],[-20,-82]],[[28796,63179],[-96,0]],[[27725,56865],[51,376]],[[27776,57241],[26,-88],[31,-116],[49,-170]],[[27882,56867],[-16,-53]],[[27866,56814],[-13,39],[-11,-37],[-25,16],[-20,34],[-29,-12],[-19,-67]],[[27769,65117],[21,0],[0,57],[54,-6],[-1,-115]],[[27709,64865],[-1,3]],[[25204,70504],[5,-25],[14,-5],[3,32],[27,2],[2,-25],[21,-21],[12,15],[24,-47],[14,14],[36,-48]],[[25276,70164],[-70,0],[0,302],[-2,38]],[[27759,65394],[155,-2]],[[27029,53039],[14,0],[6,75],[35,-32]],[[27084,53082],[8,-10],[-2,-74],[6,-18],[-6,-56],[6,-3],[-3,-104]],[[27093,52817],[-13,8],[-9,-59],[-12,8],[4,-24],[-8,-16],[1,-49],[-4,-60],[12,-91],[-3,-119],[-6,-47],[1,-58],[-4,-26]],[[27052,52284],[-15,7],[-19,-11],[-11,76],[3,71],[-7,26],[-2,57],[5,14]],[[27006,52524],[18,251],[-8,8],[-67,5],[1,254],[79,-3]],[[20378,60005],[9,-127],[-3,-163],[5,-172],[3,-27],[4,-128],[-5,-129],[-22,-34],[-6,-33],[56,-77],[34,-152],[57,-101]],[[20510,58862],[-10,-46],[-18,7],[-4,-21],[-20,20]],[[20458,58822],[0,27],[-93,0],[-1,-83],[-53,0]],[[20311,58766],[-1,41]],[[20310,58807],[0,41],[-177,-3],[0,253],[-117,-2],[-89,6]],[[19927,59102],[-1,372],[2,160],[0,141],[5,28],[23,65],[18,28],[2,73],[7,41]],[[23711,54418],[25,0],[26,67],[3,45],[16,56],[10,4],[11,-32],[14,2],[14,-56],[0,-37]],[[23902,54111],[-24,-21],[0,-80]],[[23878,54010],[-122,-1]],[[23756,54009],[-8,57],[-18,31],[-11,72]],[[27957,59121],[-1,-168],[15,-24]],[[27971,58929],[3,-55],[11,-14],[-4,-59],[-13,-49],[-12,10],[-7,-70],[-21,1]],[[27928,58693],[-31,-6]],[[19531,58850],[142,0],[253,-3]],[[19926,58847],[89,-2],[0,-807]],[[19531,57636],[0,415],[-1,30],[1,237],[0,532]],[[28398,63177],[61,0]],[[28459,63177],[59,1]],[[28518,63178],[-22,-256],[-7,-51],[3,-125]],[[28492,62746],[-25,16],[-15,-15],[-21,21],[-19,-17]],[[28412,62751],[6,75],[9,48],[1,44],[-24,90],[-25,34],[-7,41],[10,-8],[4,38],[13,39],[-1,25]],[[28860,63072],[1,-28]],[[28861,63044],[-1,28]],[[28850,63313],[27,-4],[23,-37]],[[28900,63272],[1,-9]],[[28901,63263],[-13,-33],[-5,-61],[-9,-32]],[[28874,63137],[-6,7],[-22,-81],[2,-39],[11,-31],[1,-49],[-8,-28],[0,-41],[14,-52],[7,-59]],[[28873,62764],[-11,-13],[-9,-53],[-22,-21],[-27,7]],[[28804,62684],[-2,94]],[[28802,62778],[-6,315],[0,86]],[[21479,63506],[179,-1]],[[21658,63505],[-1,-505]],[[21480,63000],[0,7]],[[26946,54151],[16,-29],[16,-12],[7,13],[18,-34]],[[27003,54089],[30,-30],[3,-27],[16,-43]],[[27052,53989],[-16,-32],[5,-31],[-12,0],[0,-351]],[[27029,53575],[-6,-1],[-20,70]],[[27003,53644],[-4,28],[-22,46],[-8,31],[-29,47],[-12,57],[-7,0]],[[25847,55067],[102,2]],[[25949,55069],[36,-1],[-9,-89],[7,-35],[-2,-52],[2,-128]],[[25983,54764],[4,-22],[-6,-31],[-22,7],[-14,-39]],[[25837,54667],[-1,347]],[[19532,61036],[61,0],[2,17],[156,-1],[13,-86],[19,13],[8,27],[6,-18],[28,20],[36,-95]],[[19861,60913],[-4,-62],[-26,-30],[-1,-66]],[[22823,73980],[83,-1],[146,0]],[[23057,73449],[-216,-1]],[[22841,73448],[7,80],[9,24],[3,62],[-15,80],[-8,124],[-6,24],[-11,98],[3,40]],[[23595,53065],[91,77]],[[23712,53182],[35,28]],[[23747,53210],[13,-245],[-10,-821]],[[23703,52474],[-6,69],[11,53],[-11,67],[-8,-4],[-7,120],[-10,12],[0,44],[-9,75],[3,41],[-11,32],[-4,65],[-8,24],[-10,-21],[-8,20],[-28,-35],[-2,29]],[[27813,56262],[10,-74],[10,-24],[16,12]],[[27849,56176],[14,-49],[11,-107],[27,0]],[[27901,56020],[-7,-45],[-16,-58],[-14,-93],[-13,-174],[3,-55],[-7,-48],[-14,-47],[-12,-18]],[[27777,55603],[-64,106]],[[27713,55709],[0,37],[12,41],[12,83],[15,63],[11,22],[18,71],[-3,22],[14,135],[21,79]],[[23212,64415],[-4,32],[2,71],[7,34]],[[23337,64552],[0,-201],[4,-1],[-1,-172]],[[23340,64178],[-109,6]],[[24694,63489],[22,38],[2,46],[20,74]],[[24838,63629],[1,-241]],[[24839,63388],[0,-33]],[[24839,63355],[-165,4]],[[24674,63359],[9,29],[12,77],[-1,24]],[[29631,68114],[3,-38],[90,-105],[71,-79]],[[29795,67892],[-19,-43],[-9,-44],[-7,-112]],[[29760,67693],[-14,-30],[-5,-74],[5,-35],[-10,-135],[6,-60],[-11,-93]],[[29624,67292],[-1,51],[-13,2]],[[29610,67345],[4,82],[8,11],[18,-31],[9,133],[-17,31],[5,112],[4,-4],[16,111],[-34,39],[11,102],[-2,23],[-23,18],[-1,22],[-23,-37]],[[29585,67957],[-6,65],[7,-9],[22,33],[3,-48],[20,116]],[[21529,72638],[251,1]],[[21888,72638],[0,-202],[-24,0],[-1,-404]],[[21863,72032],[-21,1],[0,-199],[-60,-1]],[[21701,71959],[-25,32],[-5,88],[-11,40],[-10,66],[5,42],[14,28],[-16,50],[-20,-6],[-39,-33],[-19,12],[-29,-49],[-22,10],[-20,38],[-19,3],[-1,38],[-35,-9],[-12,11]],[[21437,72320],[-17,58],[0,119],[-7,30],[8,34],[-21,23],[-14,-51]],[[21386,72533],[0,105],[143,0]],[[28230,58364],[4,-3],[30,81]],[[25135,60363],[6,38],[55,2]],[[25196,60403],[62,-207],[0,-107]],[[25258,60089],[-21,13]],[[25237,60102],[-18,49],[-35,40],[-14,39],[-34,44]],[[25136,60274],[-1,89]],[[28729,61346],[-5,-31]],[[28724,61315],[-12,-7],[1,91],[11,13],[7,-30],[-2,-36]],[[28729,61841],[11,23],[2,38],[11,57]],[[28819,61914],[2,-87]],[[28776,61584],[-15,-15],[-7,-47],[0,-60],[-8,-1],[-11,77],[11,9],[-1,53],[-8,10],[-4,-49],[-9,-33],[6,-27],[-9,-62],[-4,29],[-17,-23],[-9,12],[-16,83],[-9,13],[2,43],[-24,151],[20,14],[5,39],[-8,-7],[-9,51],[8,40],[12,22],[6,-25],[12,26],[1,-36],[22,-9],[13,-39],[3,18]],[[17303,72789],[114,0],[0,16],[36,0],[0,-118],[48,1]],[[17303,72077],[0,712]],[[29722,65346],[9,-60],[31,3],[5,-114],[-36,-15],[3,-39],[11,-6],[1,-41],[9,-30],[2,-51]],[[29757,64993],[-13,-22],[-3,20],[-15,0],[-24,-27]],[[29702,64964],[-2,29],[-19,58],[0,65],[-11,61],[-26,-18],[3,73],[-5,109]],[[29642,65341],[11,29],[0,27],[58,23],[11,-74]],[[25934,65552],[76,-2]],[[26048,65175],[-113,-1]],[[25935,65224],[-1,328]],[[21481,61891],[0,96]],[[21481,61480],[0,7]],[[21481,61487],[0,404]],[[24678,63316],[-4,43]],[[24839,63355],[2,-181],[17,-185],[0,-43]],[[24794,62944],[-41,0]],[[26483,59959],[17,38],[20,-13],[8,22],[2,47],[15,21]],[[26545,60074],[15,-32],[11,12],[11,-36],[27,-55],[14,-4]],[[26623,59959],[7,-28],[-5,-32],[-28,-58],[-16,-62],[-13,-1],[-6,-61],[-19,-71]],[[23718,64547],[128,1]],[[23846,64178],[-61,-3]],[[23785,64175],[-67,-4]],[[26781,61183],[11,50],[26,73],[-10,72]],[[26808,61378],[12,25],[8,-7],[17,62]],[[26845,61458],[16,-7],[10,28],[24,5],[2,-22]],[[26897,61462],[-1,-88],[-8,0],[0,-38],[15,-37],[10,-45],[9,-80],[15,-22],[-10,-41]],[[26927,61111],[-10,20],[-13,-10],[-9,-87]],[[26790,61133],[-9,50]],[[27577,62621],[40,6],[17,24],[7,34],[11,2]],[[27652,62687],[10,-17],[3,-44],[11,-19]],[[27599,62277],[9,33],[0,72],[-21,1],[-11,58],[-16,29]],[[27560,62470],[0,68],[17,83]],[[29475,66424],[25,275]],[[29500,66699],[67,-6]],[[29580,66478],[2,-19],[-12,-186],[-15,11],[1,-70],[17,-19]],[[29573,66195],[-1,-73],[-8,-124],[-10,5],[-1,-63],[5,-63]],[[29558,65877],[-105,13],[-15,-1]],[[29438,65889],[-3,0]],[[29435,65889],[-3,42],[43,493]],[[24249,62413],[133,-6]],[[24378,61993],[-22,4],[-9,-25],[-17,-6],[-16,-26],[-19,-70],[-18,-31]],[[24277,61839],[-15,-16],[-29,29],[-10,27],[-5,44]],[[24218,61923],[2,83],[14,59],[8,58],[-7,59],[2,91],[7,93],[-1,48],[6,-1]],[[23039,69636],[47,-26],[3,-28],[14,-2],[14,-33],[20,-18]],[[23137,69529],[18,-29]],[[23155,69500],[16,-64],[43,-128],[6,-44],[19,-16]],[[23239,69248],[0,-51],[-31,0],[-1,-101],[-167,1]],[[23040,69097],[-1,200]],[[23039,69297],[0,339]],[[28237,60859],[24,-26],[22,-1]],[[28276,60667],[-29,55],[-17,-3],[-3,29],[-22,65],[-10,-13],[1,-40],[-11,-23],[-25,39]],[[28136,60882],[1,17],[26,165]],[[19104,67269],[0,65],[65,0],[0,101],[80,0],[2,101]],[[19251,67536],[82,-2],[0,-113],[17,0],[-1,-41],[7,-24],[-6,-53],[7,-42],[5,-72],[17,-60],[11,-65],[0,-55],[14,-2],[29,-83],[7,7],[13,-95],[32,-81],[-7,-30],[11,0],[18,-36],[-1,-50],[17,-1],[1,-303],[7,1],[0,-198]],[[19531,66138],[-139,0],[-142,8]],[[18677,65828],[168,2]],[[18845,65830],[10,-83],[-9,-17],[-1,-71],[13,-41],[5,-94],[7,-28],[-2,-42],[6,-20],[-7,-48],[-1,-75],[-13,-58],[-9,-94]],[[18844,65159],[-30,-1],[-10,-17],[-12,11],[-8,-48],[-10,-8],[-10,27],[-20,8],[-4,32]],[[18740,65163],[-9,40],[11,16],[-10,67],[-9,24],[-10,-22],[-7,68],[-3,82],[-10,44],[12,110],[-12,82],[-19,73],[-12,80]],[[17580,73980],[234,-2],[134,2]],[[17579,73067],[1,333]],[[26882,51664],[20,43],[3,56],[13,30]],[[26918,51793],[31,-21]],[[26949,51772],[6,-41],[17,-10],[18,-42],[23,6],[16,-14],[6,-62],[9,-8],[6,-67]],[[27050,51534],[1,-57],[-1,-231]],[[27050,51246],[0,-36],[-22,-6],[-16,-16],[-5,11],[0,62],[-54,2]],[[26953,51263],[-42,-6],[0,67],[-28,-3],[0,34]],[[26883,51355],[0,300],[-1,9]],[[26387,60997],[7,28],[7,-30],[6,15],[-4,50],[12,-11]],[[26415,61049],[18,29],[2,-47],[22,3],[29,-31]],[[26486,61003],[-11,-46],[13,-14],[-6,-77],[2,-78],[-11,-30],[10,-88]],[[26412,60638],[-7,62],[-16,59],[-27,147]],[[22653,51137],[57,317]],[[22710,51454],[10,-22],[78,179]],[[22798,51611],[52,-164],[-3,-18]],[[22820,51145],[-27,-80],[-77,-239]],[[22716,50826],[-32,130]],[[22258,66767],[29,44],[27,24],[20,39],[8,-2],[19,-59],[13,2],[12,-25],[10,4],[14,-28],[15,7],[21,-35],[33,-15],[13,11],[31,-17]],[[22523,66717],[0,-378],[2,0]],[[22268,65933],[-4,0]],[[22264,65933],[0,404],[-3,0],[0,405],[-3,25]],[[27983,58287],[66,212],[60,136]],[[28109,58635],[2,-51],[16,-51]],[[28127,58533],[8,-40],[11,-109],[16,-20]],[[28095,58017],[-29,-38],[-23,10],[-13,62]],[[28030,58051],[3,21],[-37,188],[-13,27]],[[24538,65055],[178,-8]],[[24715,64741],[-97,6]],[[24618,64747],[-45,1]],[[24573,64751],[0,28],[-13,75],[-13,6],[-20,85],[11,110]],[[24258,67578],[97,0]],[[24355,67578],[33,-1]],[[24388,67577],[0,-184],[2,-303]],[[24257,67091],[0,152]],[[25094,58185],[-29,1],[-1,-41]],[[25064,58145],[-80,6]],[[24984,58151],[1,168],[-9,39]],[[24976,58358],[9,17],[1,102],[11,75],[-4,22],[11,66],[12,-6]],[[27769,63178],[23,0]],[[27792,63178],[130,2]],[[27883,62891],[-8,-2],[-13,-75],[-31,-60],[-5,-32]],[[27826,62722],[-5,-35],[-12,1],[-33,-103],[-10,-7]],[[27766,62578],[3,600]],[[27689,63178],[80,0]],[[27766,62578],[0,-13]],[[27652,62687],[0,159]],[[27652,62846],[-1,54],[31,165],[7,113]],[[25134,71689],[8,62],[25,65],[14,16],[30,82],[23,23],[17,47]],[[25251,71984],[60,0],[0,-100],[20,0]],[[25331,71884],[-6,-75],[-7,9],[-7,-52],[-14,-26],[-5,-67],[-12,-48],[-9,-6],[-2,-39]],[[25205,70976],[-87,0]],[[25118,70976],[1,303],[34,-1],[1,100],[-20,-1],[0,312]],[[24862,58309],[11,50],[31,80],[9,-16],[21,14],[33,-53],[9,-26]],[[24984,58151],[-35,-9],[-10,-22]],[[24816,58129],[-15,35],[-2,-43],[-12,6],[3,46],[8,17]],[[26407,66734],[58,1]],[[26465,66735],[4,-312],[0,-98]],[[26341,66322],[0,405]],[[22844,60564],[2,-555]],[[22846,60009],[-88,0]],[[22758,60009],[-95,0]],[[22663,60009],[0,449],[-1,2]],[[22662,60460],[0,102]],[[26713,61894],[36,12],[5,44],[21,46]],[[26775,61996],[6,-26],[-14,-59],[0,-44],[-14,-69],[-12,-37]],[[26741,61761],[-20,-90],[2,-102],[-31,-23]],[[26692,61546],[-20,90],[-11,-17]],[[26661,61619],[-4,20],[-32,38],[-5,82],[-12,27]],[[26608,61786],[5,100],[-6,30]],[[26607,61916],[9,55],[26,22],[15,-32],[28,-20],[11,-24],[5,-43],[12,20]],[[23768,51502],[0,-14],[-46,3],[-37,-40],[-61,-99]],[[23599,51733],[0,261]],[[23041,65462],[90,0]],[[23131,65462],[8,-42],[-7,-39],[11,-39],[-3,-56],[15,-28],[2,37],[9,-1],[0,-37]],[[23183,65122],[-109,2]],[[23074,65124],[0,51],[-11,0],[-5,34],[-11,17],[-5,51],[-1,185]],[[16055,70538],[108,1],[18,-3],[138,-1],[197,0]],[[16516,70535],[0,-239]],[[16516,70296],[-37,-27]],[[16297,70181],[-10,-25],[-47,-51],[-16,-36]],[[16224,70069],[-8,18],[-34,-4],[-19,-50],[-14,-4],[-9,75],[-34,40],[-29,-9]],[[16077,70135],[-23,32]],[[16054,70167],[-4,52],[6,14],[-26,1],[0,304],[25,0]],[[24358,62733],[2,303],[-1,68]],[[24436,62710],[-78,6],[0,17]],[[20579,66333],[3,-399],[-2,-503]],[[20580,65431],[0,-629],[1,-137]],[[20581,64665],[-125,-2],[-130,1]],[[20290,64666],[-1,461],[71,0],[-1,175],[0,614],[-1,16],[1,403]],[[27947,61230],[16,39],[-2,53],[11,93]],[[27972,61415],[10,39],[16,24],[-2,20]],[[28078,61389],[44,-62]],[[28095,61182],[-52,-244]],[[28043,60938],[-2,-41],[-32,-7],[-8,-26]],[[28001,60864],[-12,5],[5,25],[-47,336]],[[23790,62580],[13,-1],[17,49],[18,-10],[7,-25],[19,6],[0,69],[4,11]],[[23868,62679],[-5,-407]],[[23863,62255],[-94,11],[-1,-34],[-77,10]],[[23691,62242],[2,264]],[[24225,61515],[48,-4],[45,5],[61,-6]],[[24379,61510],[0,-157],[4,0]],[[24226,61565],[0,41],[22,36],[-15,72],[14,-7],[21,11],[9,39],[-4,28],[4,54]],[[24380,61994],[-1,-484]],[[23821,67982],[-34,0]],[[23787,67982],[0,405]],[[20923,73553],[324,-1]],[[21247,73552],[0,-101]],[[21247,73451],[0,-202],[16,0],[0,-290]],[[21263,72959],[-10,16],[-12,-18],[-18,19],[-33,-16],[-5,26],[-26,-13],[-14,-50],[5,-34],[-15,-27],[-26,-18],[-13,13],[-20,-35],[-23,60],[9,35],[-16,31],[-19,10],[-19,-34],[9,-41],[-10,-20],[-10,21],[-5,-76],[-15,25],[-4,-50],[-14,-19],[-13,34],[-11,-21],[-11,34]],[[20923,73268],[0,285]],[[28015,60474],[12,-60],[11,-20],[13,12]],[[28115,60439],[1,-84]],[[28116,60355],[-2,-205]],[[28114,60150],[-10,-19],[-24,3],[-23,-31]],[[28057,60103],[-11,7],[-9,55],[-9,21],[-10,-12],[-15,34],[-2,29],[-14,11],[3,52]],[[28737,62777],[32,-18],[18,24],[15,-5]],[[28804,62684],[1,-59]],[[28805,62625],[-14,-5],[-9,19],[-28,-23],[-19,2],[-17,-56],[6,-34],[-19,-65],[-12,-15]],[[28693,62448],[-12,-10],[-3,-52],[4,-31],[-12,17],[3,63],[-6,59],[-7,14],[16,136],[12,42],[-2,24],[14,25],[7,37],[24,-12],[6,17]],[[24583,63727],[1,107]],[[24694,63489],[-26,-8],[1,25],[-21,58],[-5,59],[-61,1]],[[24582,63624],[1,103]],[[28331,62595],[81,155]],[[28412,62750],[-5,-15],[16,-84],[16,-17],[17,-55],[4,-47],[30,-41]],[[28490,62491],[-29,-161],[-3,-32]],[[28458,62298],[-11,34],[-21,-70]],[[28426,62262],[-9,37],[-20,6],[-8,17],[1,48],[-23,36]],[[25293,58126],[-5,-449]],[[25288,57677],[-113,0]],[[25175,57677],[1,294]],[[23856,55376],[9,0]],[[23865,55376],[70,-1]],[[23935,55375],[0,-351],[14,0],[4,-96],[-2,-57]],[[23897,54668],[-19,0],[-1,102],[0,306],[-8,26],[6,45],[-8,122],[-8,10],[-6,47],[3,50]],[[28172,56904],[10,6],[2,41],[7,13],[9,-25],[30,32],[3,-36],[20,-76],[8,5]],[[28261,56864],[-15,-61],[-18,-95],[-14,-111],[-16,-161]],[[28198,56436],[-3,49],[4,66],[-1,110],[-5,36],[-1,94],[-16,68],[-4,45]],[[25362,70976],[0,-202]],[[25204,70504],[-16,15],[-20,-7],[-34,61]],[[25134,70573],[-16,27]],[[25118,70874],[0,102]],[[25258,60089],[8,7],[10,89],[-7,66],[-17,65],[-2,25],[9,65],[2,55],[18,43]],[[25279,60504],[0,1]],[[25279,60505],[15,-23]],[[25294,60482],[12,-8],[6,-73],[21,-73],[6,-62],[-6,-43],[7,-41]],[[25340,60182],[-10,-77],[1,-62],[5,-33],[-9,-21]],[[25327,59989],[-19,78],[-16,18],[-17,-16],[-15,-32]],[[25260,60037],[-13,14],[-10,51]],[[16039,61284],[-2,30],[14,37],[2,49],[13,70],[15,1],[5,-27],[18,-4],[21,28],[13,-9],[14,13],[30,51],[11,1]],[[16201,61437],[16,-160],[4,-12]],[[16069,60571],[-9,52],[-15,19],[0,319]],[[16045,60961],[6,39],[-12,13],[6,83],[-7,60],[7,38],[-8,22],[2,68]],[[25134,60276],[2,-2]],[[25260,60037],[-1,-94]],[[25168,59949],[-1,8]],[[25167,59957],[-33,319]],[[27230,55057],[20,28],[3,23],[19,59],[-5,62],[11,17],[0,39],[44,100]],[[27322,55385],[23,-111],[3,-35],[24,-79],[21,-150]],[[27266,54838],[-11,3],[-19,42]],[[27236,54883],[-8,40],[7,28],[-4,48],[-6,8],[5,50]],[[22913,65531],[0,-333]],[[22913,65198],[-31,-50],[-45,-43],[-21,9]],[[22816,65114],[0,418]],[[31828,37522],[7,36],[-4,40],[7,30],[10,-13],[8,22],[17,3],[6,-29],[39,5],[2,-18],[-32,-48],[-41,-30],[-19,2]],[[18762,70252],[28,-2],[12,43]],[[19047,70711],[-3,-237],[1,-236],[-2,0],[0,-227],[-17,0],[0,-77],[-17,0],[0,-202],[-33,0],[0,-204],[-2,-203]],[[18971,68934],[2,-223]],[[18973,68711],[-21,23],[-6,49],[-24,59],[2,43],[-28,117],[-15,32]],[[18881,69034],[1,697],[7,0],[-1,339],[-51,1],[-17,67],[-12,16],[-6,34],[-17,0],[0,34],[-23,30]],[[25405,58661],[14,-3],[16,-40],[10,38],[28,3]],[[25473,58659],[-7,-204],[23,-63]],[[25473,58245],[-24,2],[-52,-37],[-5,-35]],[[25392,58175],[-10,25],[15,44],[4,37],[-17,125],[5,45],[-4,66],[12,52],[5,63]],[[17519,67126],[80,1],[1,556]],[[17875,67994],[-9,-41],[-6,-90],[9,-35],[-7,-50],[0,-63],[-13,-17],[-1,-473]],[[17861,66892],[0,-167]],[[17861,66725],[-116,0],[0,97],[4,-1],[0,94],[-17,-5],[-8,18],[-21,-6],[-5,21],[-20,-19],[-21,-1],[-6,40],[-15,-4],[-25,38],[-10,-37],[2,-31],[-13,7],[-11,42],[-26,32],[1,25],[-17,17],[3,39],[-21,35]],[[21278,66343],[7,0],[-1,-97],[3,-208],[0,-100],[11,1],[1,-103]],[[21299,65836],[-46,-4],[-139,2]],[[21114,65834],[-11,1]],[[21103,65835],[0,101],[-12,0],[0,404]],[[30024,65813],[5,1],[79,128]],[[30174,65398],[-3,-54],[-4,51],[-12,-7],[-7,-49],[2,-44],[-6,-29],[-25,-23],[-12,17],[-10,-14]],[[30076,65453],[-8,41]],[[30068,65494],[-10,48],[-16,28]],[[30042,65570],[-8,61],[2,81],[-12,-6],[0,107]],[[25465,61657],[-9,-51],[-8,-9],[-13,-102],[-8,33],[-7,-41],[-5,35],[-9,-68],[-8,19]],[[25398,61473],[-1,4]],[[25397,61477],[11,36],[-7,127],[9,65],[-3,133]],[[26651,59889],[22,-6],[3,35],[21,23],[18,33],[8,40],[14,21]],[[26737,60035],[16,-23]],[[26753,60012],[-8,-52],[32,32],[27,37],[20,-49]],[[26824,59980],[3,-54],[-6,-40]],[[26821,59886],[-25,-41],[-29,-4],[-16,-80],[-2,-50],[-16,-4],[-33,-35],[-33,-50],[-8,-2]],[[26659,59620],[0,38],[-11,42],[4,58],[-7,28],[8,49],[-2,54]],[[25578,58450],[30,76],[5,147]],[[25613,58673],[50,-64],[53,-83],[18,-21]],[[25734,58505],[-9,-12],[-4,-133],[-6,-66],[-21,-72],[-9,-14],[-1,-40]],[[25615,58187],[-24,13]],[[23795,52330],[71,1],[0,102],[28,0],[0,-102],[71,0]],[[23965,52331],[0,-27],[28,0],[0,-139],[9,1],[0,-121],[29,-1],[-4,-51],[6,-34],[-31,-1],[0,-51]],[[23805,52146],[-1,52],[-16,52],[2,66],[5,14]],[[27751,58664],[85,1],[-4,38]],[[27928,58693],[-25,-300],[22,-31]],[[27925,58362],[-15,-72]],[[27910,58290],[-13,26],[-10,60],[-18,38],[-9,-11],[-14,-70],[-12,12],[-9,-44],[-3,28],[-18,-44]],[[27804,58285],[-57,-3]],[[22216,50280],[3,0]],[[22220,49772],[-201,-8]],[[22019,49764],[0,524]],[[26804,60844],[-2,-44],[12,-44],[4,-88],[-2,-65],[-8,-26]],[[26802,60596],[-20,54],[2,40],[-8,1],[-14,55],[-12,-29],[-11,41],[-21,32]],[[26718,60790],[-4,50]],[[26714,60840],[6,37],[-8,29],[12,24],[5,34],[27,52],[-5,36],[20,-29],[7,19],[8,-31]],[[18780,64505],[-36,-46],[-21,1],[-7,75],[3,41],[-14,-1],[-39,-87],[-31,-90]],[[18635,64398],[-65,358]],[[18570,64756],[86,89],[60,-1],[16,-20],[16,5]],[[18563,61769],[110,2],[17,-12],[83,0]],[[18773,61759],[-23,-90],[1,-318]],[[18751,61351],[-60,-7],[-107,5]],[[18584,61349],[5,36],[19,51],[-6,23],[8,44],[4,59],[-19,96],[-11,-11],[-3,27],[-18,59],[0,36]],[[26927,61111],[7,-53],[15,-19],[-1,-34]],[[26948,61005],[13,-61],[10,-19],[2,-52]],[[26973,60873],[-12,-2],[-10,-31],[7,-18],[-5,-30],[-14,-3],[-18,30],[-12,-11]],[[26909,60808],[-22,41]],[[24355,67981],[124,0]],[[24479,67981],[11,-86],[-3,-55]],[[24498,67577],[-110,0]],[[24355,67578],[0,403]],[[15703,70313],[18,20],[-5,55],[5,20],[17,-5],[28,30],[7,30],[16,10],[29,-32],[11,5],[1,53],[16,57],[7,-6]],[[15853,70550],[-1,-274],[0,-315]],[[15852,69961],[-23,0],[-13,32],[-17,-14],[-11,19],[-46,35],[-33,54],[0,84]],[[25383,67626],[69,1]],[[25452,67627],[-4,-95],[-20,-107],[-9,-139],[5,-68]],[[25424,67218],[-47,0]],[[25377,67218],[0,204],[6,0],[0,204]],[[18552,70796],[-3,46],[20,43],[12,-15],[14,67],[15,-1],[11,41]],[[18762,70252],[-11,27],[-19,10],[-5,32],[-15,-13],[-11,15],[-23,-21],[-8,-81],[-15,-27]],[[18655,70194],[-7,20],[-56,83],[3,60],[-9,61],[-2,108],[-8,7],[2,62],[-15,51],[4,56],[-20,-7]],[[18547,70695],[-6,68],[11,33]],[[26600,58891],[5,5],[36,-91],[14,-48],[16,12],[30,-44]],[[26716,58493],[-16,-48],[-10,7],[-5,-26],[-22,-32],[-11,-50],[-27,-7],[-6,20],[-16,-12]],[[26603,58345],[0,141],[-12,25],[-25,204]],[[26566,58715],[35,87],[-1,89]],[[31509,38018],[-10,-59],[2,-27]],[[31504,37854],[-24,-43],[-10,9],[-7,-25]],[[31463,37795],[3,113],[11,44]],[[17430,64667],[119,0],[0,-389],[44,-627],[46,0]],[[17639,63651],[3,-87],[-2,-59],[8,-106],[2,-66],[-5,-45],[1,-60],[-6,-42],[5,-163],[-5,-21],[-3,-71],[-7,-43],[-11,-16],[0,-345]],[[17619,62527],[-193,0]],[[17426,62527],[2,274],[-2,788],[2,286],[-1,729],[3,63]],[[24078,55074],[24,0],[19,-12],[7,-36],[7,3],[0,-58],[29,-1],[0,-101]],[[24164,54869],[0,-102]],[[24164,54767],[-58,1],[1,-51],[-44,1]],[[24034,54871],[6,42],[-2,66],[11,43],[0,51],[29,1]],[[24078,55371],[183,-7]],[[24261,55364],[-5,-50],[0,-97],[8,-52],[-2,-133]],[[24262,55032],[-7,-41],[-37,-90],[-1,-24],[-13,-11],[-40,3]],[[24078,55074],[0,297]],[[29982,67881],[77,-221],[26,-38]],[[30085,67622],[-8,-28],[9,-186],[-21,-81]],[[30065,67327],[-88,194],[-14,-20],[-10,66],[-11,10],[-14,74]],[[29928,67651],[-1,31],[12,5],[10,31],[1,74],[35,15],[-3,74]],[[24283,55818],[8,-24],[-8,-43],[3,-45],[-18,-28],[-26,-95],[-1,-39]],[[24241,55544],[-23,54],[-1,51],[-28,11],[-7,42]],[[24182,55702],[-8,19],[1,74],[16,105],[2,39],[-5,133],[3,76],[-3,30]],[[21676,64315],[27,0]],[[21703,64315],[131,3]],[[21834,64318],[-1,-52],[1,-357]],[[21682,63911],[-5,0]],[[28476,64246],[22,85],[0,81],[17,113]],[[28515,64525],[0,4]],[[28515,64529],[-15,36],[-8,65],[6,121],[-8,34],[-2,44]],[[28488,64829],[4,22],[26,20],[15,-4]],[[28533,64867],[0,-93],[-12,-98],[-4,-71],[36,24],[17,-30],[12,-4],[-3,-27],[11,-38]],[[28590,64530],[7,0],[1,-67],[25,10],[9,-68]],[[28632,64405],[-90,-130],[0,-6]],[[28542,64269],[-13,-6],[-47,-58],[-9,29]],[[28473,64234],[3,12]],[[28682,62165],[10,33],[17,4],[-4,36],[7,36],[40,-30]],[[28729,61841],[-15,61],[-17,14],[-8,42],[-7,-3],[-16,77],[-5,-28],[-12,20],[-1,-59],[-7,8],[3,101],[18,92],[14,-45],[8,10],[-2,34]],[[28627,62072],[5,20],[5,-46],[-10,26]],[[23336,67292],[132,0]],[[23468,67292],[0,-402]],[[23468,66890],[-132,0]],[[26313,57963],[10,31],[42,-1],[6,22]],[[26371,58015],[38,-61],[4,-34],[14,3]],[[26427,57923],[-8,-254]],[[26292,57668],[12,109],[-4,5],[14,101],[-1,80]],[[23004,62998],[95,0]],[[23099,62998],[56,0]],[[23155,62591],[-1,-105]],[[23154,62486],[-12,78],[-26,-6],[-15,27],[-11,-38],[-10,21],[-7,-44],[-16,16]],[[23057,62540],[-20,20],[0,-25],[-26,12],[-2,73],[-22,59],[-2,39],[-22,90],[5,68],[11,16],[7,51],[18,55]],[[28590,62619],[-13,27],[3,-46],[9,-21]],[[28589,62579],[-14,1],[-10,35]],[[28565,62615],[-26,47],[0,110],[51,0],[0,-153]],[[30343,68693],[10,22],[20,11]],[[30373,68726],[8,-120],[-9,-15],[16,-85],[0,-107],[23,-30],[-9,-58],[6,-7]],[[30400,68131],[-13,-58],[-11,-21],[-22,44],[-33,106],[-13,-59],[-11,4],[-22,49]],[[30275,68196],[-1,33],[42,175],[3,-3],[16,180],[-2,91],[10,21]],[[25494,62522],[19,71],[-8,48]],[[25505,62641],[101,-1]],[[25606,62640],[0,-101]],[[25526,62231],[4,55],[-18,40],[1,79],[-16,55],[-3,62]],[[25047,57095],[0,102]],[[25047,57197],[0,17],[44,1]],[[25189,57213],[0,-102]],[[25189,57111],[-15,-17],[0,-117],[-10,0],[0,-34]],[[25164,56943],[-28,0],[-1,17],[-88,0]],[[25047,56960],[0,135]],[[23468,67577],[-132,0]],[[18660,64046],[8,4],[8,-36],[21,29],[16,-58],[10,12],[17,55],[13,4],[21,63],[22,2],[13,43],[12,10]],[[18821,64174],[7,-34],[-2,-71],[-13,-43],[19,-97],[20,-5],[12,-47],[-1,-37],[19,8],[17,-12],[14,-51],[-3,-24],[13,-64],[2,-49],[-8,-81],[12,-9],[11,-66],[13,-26],[-3,-25],[13,-4],[0,-51],[53,0]],[[19016,63386],[10,0],[0,-101]],[[19026,63285],[-109,0]],[[18917,63285],[-110,0]],[[18807,63285],[-34,-3],[8,62],[-25,98],[-2,-27],[-21,-35],[-17,-102],[-21,-35],[-12,6],[6,55],[-4,42],[8,33],[-14,41],[-2,52],[-19,44]],[[18658,63516],[-1,56],[9,56],[-7,54],[8,22],[-1,45],[-12,61],[-1,72],[6,12],[-7,54],[-4,84],[12,14]],[[27360,60964],[38,58]],[[27438,60862],[1,-20],[-55,-333]],[[27384,60509],[0,1]],[[27318,60696],[9,26],[-1,36],[33,85],[19,-38],[-5,54],[-7,15],[8,29],[-14,61]],[[18917,63285],[0,-127]],[[18917,63158],[0,-276],[-15,0],[1,-201],[0,-305]],[[18903,62376],[-154,1],[0,15],[-45,0]],[[18704,62392],[-1,313]],[[18703,62705],[0,26],[16,0],[0,34],[10,18],[49,1],[0,90],[10,0],[-2,273],[37,53],[0,51],[-10,0],[-6,34]],[[25147,67732],[135,-3],[1,-101]],[[25283,67628],[-1,-202],[-4,0],[0,-205]],[[25245,67223],[-132,2]],[[25113,67225],[0,101]],[[25113,67326],[1,101],[0,305]],[[22824,69669],[61,0],[4,34],[145,0]],[[23034,69703],[5,-67]],[[23039,69297],[-119,-1]],[[22824,69500],[0,169]],[[28143,63695],[15,-37],[43,-37],[17,-47]],[[28218,63574],[-15,-67],[-23,-206],[-27,-121]],[[24066,69162],[109,1],[67,-6]],[[24242,69157],[0,-201]],[[24242,68956],[0,-169],[-50,2]],[[24192,68789],[-6,15],[-27,13],[-30,2],[-9,44],[-14,16],[1,24],[-31,87]],[[24076,68990],[-20,37]],[[24056,69027],[-1,26],[12,80],[-1,29]],[[19087,72136],[118,0]],[[19205,72136],[0,-67],[24,0],[0,-101],[36,0],[0,-51],[35,1],[1,-51],[32,0],[0,-337],[-12,-34],[0,-42],[-10,0],[1,-33],[21,-26],[3,-100]],[[19083,71446],[5,16],[-3,301],[-35,0],[1,161],[-6,17],[0,68],[6,-12],[0,72],[36,0],[0,67]],[[27371,57771],[18,-87]],[[27389,57684],[16,-76],[-4,-135],[66,-3]],[[27509,57234],[-39,-64],[6,-65],[-6,-13],[-18,8],[-12,-25],[-9,43],[-14,-41],[-1,70],[-38,-96]],[[27378,57051],[-5,34],[6,66]],[[28280,61164],[35,133],[41,165]],[[28356,61462],[12,-2]],[[28427,61349],[2,-28],[-10,-6],[-7,-48],[22,-77],[5,-57]],[[28439,61133],[-22,9],[-9,-26],[0,-68]],[[28363,60929],[-15,-14],[1,30],[-9,31],[1,41],[-6,35],[-11,-13],[-12,43],[-5,-5],[-9,49],[-9,-5],[-9,43]],[[20688,66540],[66,0]],[[20754,66540],[0,-1113]],[[20754,65427],[-174,4]],[[23996,69196],[10,4],[-1,267],[-10,0]],[[23995,69467],[1,202]],[[23996,69669],[76,-2]],[[24072,69667],[-4,-5],[1,-95]],[[24069,69567],[-3,-28],[6,-91],[-16,-58],[11,-34],[-2,-65],[6,-41],[-7,-42],[2,-46]],[[24056,69027],[-14,2],[-8,31],[-13,9],[-21,-12],[-4,139]],[[25029,60021],[12,-18],[3,25],[-15,45],[14,12],[17,-56],[8,-53],[11,14]],[[25079,59990],[9,-45]],[[25088,59945],[-11,-112],[-10,-9],[-1,-38],[15,-26]],[[25081,59760],[-1,-39],[-16,3],[-4,-44],[9,-36],[-2,-40]],[[25067,59604],[-11,-82],[-13,-18],[-19,78]],[[25024,59582],[-13,83],[-15,50],[-15,101],[-10,43]],[[24971,59859],[5,42],[10,0],[0,35],[10,-1],[5,34],[10,1],[0,34],[18,17]],[[28884,64451],[27,21],[26,39],[18,72],[28,47]],[[28983,64630],[6,-52],[13,-62],[-23,-113],[-11,5],[-9,-100],[8,-22],[-7,-30],[1,-45]],[[28923,64128],[-19,51],[7,40],[-15,68],[-14,-21],[-14,94],[-7,-18],[-10,16],[-5,61]],[[23878,54010],[0,-152],[29,0],[0,-206],[28,1],[0,-203]],[[23935,53450],[-43,0],[-14,-102],[-26,0],[-5,-45],[0,-61]],[[23847,53242],[-13,-11]],[[23834,53231],[-6,111],[-6,-2],[-12,47],[6,53],[-3,49],[-8,15],[1,32],[-14,36],[6,27],[-3,35],[-13,6],[-13,68]],[[23769,53708],[5,43],[-3,45],[7,42],[-8,56],[2,34],[-15,55],[-1,26]],[[26023,60208],[16,15]],[[26039,60223],[15,-67],[29,-18]],[[26083,60138],[7,-119],[17,-62],[-3,-19]],[[26024,59826],[-5,312],[-5,33],[9,37]],[[19140,55581],[0,-786],[-1,-7]],[[18651,54780],[0,936],[3,-53],[12,-13],[18,-58],[140,1],[1,303],[150,1]],[[19265,60008],[0,-1554],[48,-1],[0,-168],[-5,0],[1,-404],[-1,-405],[-2,0],[1,-204],[-5,-102],[5,-83],[0,-422],[-3,0],[0,-406],[-9,1],[0,-245]],[[19295,56015],[-30,11]],[[17950,55027],[5,31],[24,-13],[25,26],[-2,40],[18,63],[1,79],[-5,26],[-9,107]],[[18336,55794],[0,-1016]],[[18336,54235],[-44,59],[-368,471],[5,66],[-5,17],[1,60],[8,16],[17,103]],[[23962,70173],[83,0]],[[24045,70173],[-6,-9],[-6,-91]],[[24033,70073],[0,-76],[21,-21],[10,9],[14,-32],[-1,-31],[23,-85],[-1,-50],[-15,-47],[1,-29],[-13,-44]],[[23996,69669],[0,133]],[[24940,59062],[40,3],[1,29]],[[24981,59094],[92,-9]],[[25020,58708],[-18,76],[-23,2],[-7,-23],[-32,-5],[-4,-23]],[[26455,61607],[25,102]],[[26480,61709],[26,-31],[8,8]],[[26514,61686],[9,-19],[9,-73],[12,2],[11,-55],[-4,-21]],[[26551,61520],[-36,-122]],[[26515,61398],[-3,31],[-11,-5],[-10,24],[2,25],[-11,3],[-20,112],[-7,19]],[[23654,67982],[133,0]],[[23821,67576],[-90,0]],[[23731,67576],[-77,1]],[[26635,60400],[27,51],[13,-47],[6,0],[14,48],[17,23],[15,52],[5,-34],[21,-11]],[[26787,60238],[-16,-83],[4,-72],[-8,-23],[5,-29],[-19,-19]],[[26737,60035],[4,95],[-17,40],[7,44],[-15,34],[-19,25],[-8,82],[-13,29],[-17,-32],[-13,-67]],[[26646,60285],[-6,26]],[[23517,56176],[8,-22],[17,1],[1,-23],[16,13],[19,-73],[9,25]],[[23710,55996],[1,-11],[0,-284]],[[23711,55701],[-14,9],[-13,-14],[-8,20],[-14,-16],[-6,-28],[2,-37],[-41,17],[-10,33],[-29,-2],[-3,-18],[-25,-23],[-9,25]],[[23541,55667],[-11,51],[-11,-4],[-5,23]],[[23514,55737],[1,436],[2,3]],[[20647,69323],[158,-2],[115,-1]],[[20921,68369],[-89,1],[-196,-6]],[[20636,68364],[-1,4],[-1,405],[0,302],[3,-1],[0,249]],[[27489,56715],[14,67],[-2,67],[24,22],[-3,43],[10,-1],[11,29]],[[27623,56574],[-7,-46],[-13,-1],[-30,-65],[-2,62],[-18,-15],[-5,50],[-7,5],[-8,48],[-23,1],[-21,36],[0,66]],[[20754,66540],[168,3]],[[20922,66543],[0,-710]],[[20922,65833],[0,-354]],[[20922,65479],[0,-155]],[[20922,65324],[-167,0],[-1,103]],[[30179,66140],[13,-16]],[[30085,66184],[2,31]],[[29997,66013],[14,27],[24,24],[3,57],[8,-1],[-7,76],[16,17],[12,-11],[10,-42]],[[30133,66195],[1,-53],[9,20]],[[30024,65813],[0,40],[-32,-2]],[[29992,65851],[1,96],[4,66]],[[26040,60863],[12,-42],[13,-3],[-2,-63],[7,-1],[-14,-101],[17,-34],[3,36],[9,1]],[[26085,60656],[5,-6],[10,-98]],[[26100,60552],[-9,21],[-8,-34],[-16,18]],[[26067,60557],[-14,3],[-6,-58]],[[26047,60502],[-66,21]],[[18664,68226],[34,0],[0,101],[34,0],[0,50],[15,0],[2,151],[17,0],[0,98],[48,0],[0,172]],[[18852,68984],[19,2],[10,48]],[[18973,68711],[-1,-140],[1,-431]],[[18973,68140],[-18,-18],[-21,-42],[-14,19],[-20,-34],[-12,33],[-13,-29]],[[18875,68069],[-7,-14],[-15,20],[-15,-10],[-7,-42],[-39,0],[0,17],[-39,0],[0,34],[-39,0]],[[26252,56614],[-16,-152],[-20,1],[0,-56]],[[26122,56404],[-3,72]],[[21996,66993],[0,-177]],[[21815,65933],[-161,5]],[[21654,65938],[-162,5]],[[21492,65943],[-9,0],[0,404],[-8,0],[0,398],[-5,0],[1,249]],[[26502,56231],[12,38]],[[26514,56269],[18,-49]],[[26496,55966],[-1,18],[-21,24],[-17,98]],[[17570,55850],[171,1],[8,2],[227,6]],[[17950,55027],[-208,-60],[-178,-57]],[[17564,54910],[0,531],[7,0],[-1,409]],[[17303,72789],[0,79]],[[25560,63651],[-9,43],[5,32],[17,22],[31,114],[32,37],[11,30]],[[25647,63929],[0,-176]],[[25647,63753],[0,-305]],[[25556,63447],[-4,86],[5,38],[3,80]],[[25880,58162],[4,107],[-1,149]],[[25883,58418],[0,66],[11,18]],[[25894,58502],[17,-49],[30,-22],[15,20]],[[25956,58451],[8,-47],[2,-54],[20,-58]],[[25986,58292],[-4,-93],[3,-111],[-7,-21],[-2,-48]],[[25976,58019],[-18,33],[-7,-3],[-10,33],[-34,22],[-28,-33]],[[25879,58071],[4,16],[-10,46],[7,29]],[[25983,58660],[38,12],[19,-22]],[[26040,58650],[22,-42]],[[26062,58608],[-3,-40],[6,-8],[-4,-53],[3,-105],[11,-99]],[[26061,58301],[-27,-3],[-33,-28],[-15,22]],[[25956,58451],[-4,60],[23,129],[8,20]],[[26868,60343],[11,25],[5,52],[-4,21],[13,20],[9,69],[-3,66],[-7,1],[7,161],[-4,33],[14,17]],[[26973,60873],[11,-82],[15,-11],[7,-42],[9,2],[7,-40],[8,-1],[3,-37],[28,-30],[14,4]],[[27075,60636],[-97,-281]],[[26978,60355],[-11,-36],[-37,-39],[-18,-33]],[[26912,60247],[-4,-8]],[[26908,60239],[-17,60],[-12,-24],[-17,51]],[[26518,61094],[24,-30],[18,-6],[13,21]],[[26573,61079],[5,-26],[33,-82]],[[26611,60971],[-21,-127]],[[26586,60844],[-15,47],[-12,-13],[-3,23],[-21,-7],[-16,48],[0,52],[-11,-9]],[[26508,60985],[3,94],[7,15]],[[26010,67234],[0,-203],[2,-136],[0,-170]],[[26012,66725],[-119,-1]],[[25893,66724],[0,107],[-6,182],[-11,120]],[[25794,59584],[16,22],[27,-2]],[[25837,59604],[57,-13]],[[25894,59591],[-6,-177]],[[25873,59251],[-5,-41],[-17,-1],[4,21],[-9,25],[-3,-48],[-17,30],[-18,-43],[-8,26],[-14,-88]],[[25786,59132],[-13,11],[0,39],[-22,63],[-10,73]],[[25741,59318],[2,16],[15,-14],[12,74],[5,74],[19,116]],[[27602,57849],[15,-7],[11,25],[23,4],[14,25],[28,-12],[21,2],[17,-13]],[[27731,57873],[11,-48],[-1,-61],[21,-7],[12,-24]],[[27774,57733],[-32,-60],[-3,-43],[6,-52],[-18,-68],[1,-29],[-19,-26]],[[27709,57455],[-66,2]],[[27643,57457],[7,56],[15,56],[-6,58],[1,35],[-9,25],[6,36],[-9,37],[-4,57],[-6,3],[-13,-38],[-21,30],[-2,37]],[[21093,52637],[243,-714]],[[21336,51923],[68,-202]],[[21404,51721],[-8,-19],[-10,-111],[-34,19],[-9,-37],[-7,11],[-22,-32],[-7,10],[-8,-54],[2,-23],[-13,-40],[0,-50],[-7,0],[-2,-59],[-11,-30],[1,-33],[-7,-58],[2,-52],[-5,-48],[-10,-5],[-3,-72],[-5,-37],[10,-22],[-5,-38],[-18,-38],[-10,8],[-7,-67],[-17,-43],[-7,-36],[-4,-84],[-14,-8],[-17,15],[-15,-11],[-14,46],[-27,24],[-27,111],[-24,33],[-10,-8],[-22,38],[-19,79]],[[20994,51000],[-2,1342]],[[19998,68811],[228,-4],[34,6],[117,2]],[[20377,68815],[-2,-50],[0,-409],[2,-405],[-3,0],[0,-380]],[[20070,67577],[-1,368],[-4,0],[0,407],[-5,0]],[[20060,68352],[0,184],[-12,28],[8,24],[-11,36],[-1,55],[-11,-10],[-17,30],[3,43],[-21,69]],[[24033,70073],[99,-3],[1,101],[104,-3],[0,-100]],[[24237,70068],[-1,-501]],[[24236,69567],[-167,0]],[[24236,69567],[0,-102],[6,-1],[0,-307]],[[21214,59429],[234,0]],[[21448,58911],[-244,0]],[[28379,64310],[38,-19],[11,17],[5,-18],[16,1],[8,-40],[19,-5]],[[28473,64234],[-21,-28],[-44,-26],[4,-26],[-34,-48],[-70,-139],[3,-27],[-10,-10],[-29,-90]],[[28272,63840],[-9,-31]],[[28263,63809],[-14,134]],[[28249,63943],[39,131],[0,27],[32,79],[0,32],[36,68],[23,30]],[[25526,65014],[0,200]],[[25526,65214],[1,277]],[[25527,65491],[15,-41],[12,20],[7,-15],[-6,-40],[27,-23],[29,1]],[[25611,65393],[1,-445]],[[25612,64948],[-16,-27]],[[25596,64921],[-14,-38],[-25,-27],[-7,13],[-24,-9]],[[25526,64860],[0,154]],[[28659,65105],[17,192]],[[28676,65297],[6,124],[23,4]],[[28705,65425],[8,-8],[103,-3]],[[28816,65414],[-16,-79],[-7,-59],[8,-23],[-17,-89]],[[28784,65164],[-48,-50],[-77,-9]],[[23553,62390],[0,81]],[[23553,62471],[24,41],[11,-4],[6,-29],[17,54],[3,31],[6,-35],[22,85],[9,0],[12,-34]],[[23691,62242],[-2,-98]],[[23689,62144],[-103,10],[-33,7]],[[23553,62161],[0,229]],[[27478,64812],[73,4],[0,-13],[31,-4],[14,-51]],[[27596,64748],[-19,-81],[2,-169]],[[27478,64494],[0,57]],[[27478,64551],[0,261]],[[27478,65236],[110,-10],[35,11]],[[27623,64867],[-27,-119]],[[27478,64812],[0,10]],[[27478,64822],[1,88],[-1,326]],[[28651,65028],[8,77]],[[28784,65164],[1,-38],[25,-54],[15,-10],[2,-87],[7,-8],[3,-95],[12,-17]],[[28849,64855],[-14,-46]],[[28738,64565],[-8,-12],[-50,55]],[[28680,64608],[-6,119],[0,101],[-14,-8],[-12,93],[3,115]],[[24456,65159],[-32,1]],[[24327,65262],[1,104],[-1,304]],[[23974,64854],[0,-306]],[[23846,64548],[0,306]],[[22202,60010],[127,0]],[[22459,59386],[1,-77],[-26,-6],[-21,28],[-7,34],[-23,18],[-10,53],[-32,0]],[[22341,59436],[0,108],[-15,48],[-14,87],[-6,7],[-15,72],[-31,2],[-13,40]],[[22247,59800],[-5,43],[-17,27],[-23,140]],[[22161,59536],[86,3],[0,261]],[[22341,59436],[-1,-302],[2,-100]],[[22342,59034],[-119,4]],[[22223,59038],[-60,-1],[1,97],[-3,-1],[0,403]],[[20571,56922],[117,0]],[[20688,56621],[-1,-307],[1,-3],[0,-493],[2,-108],[-5,0],[-1,-194],[-56,-8],[-58,0]],[[20275,55913],[0,210],[30,0],[30,-12],[30,0],[0,204],[35,0],[0,506]],[[21467,71629],[-14,0],[0,34]],[[21453,71663],[0,370],[-17,0],[1,287]],[[19902,55909],[0,390],[-1,16],[0,506],[-2,0],[0,370]],[[25646,64158],[91,-1]],[[25737,64157],[21,0],[0,-151]],[[25758,63752],[-111,1]],[[25647,63929],[0,127]],[[25350,59856],[43,50],[35,58]],[[25428,59964],[6,-11],[26,28],[9,32]],[[25469,60013],[20,-42],[-3,-102],[-1,-143],[-6,-138]],[[25479,59588],[-44,-4],[1,35],[-61,17]],[[25375,59636],[-12,80]],[[25363,59716],[-13,140]],[[27774,57733],[17,-56],[12,-60],[2,-123]],[[27805,57494],[-3,-21],[6,-62],[-35,-159]],[[27773,57252],[-59,203],[-5,0]],[[25197,61015],[-123,-1]],[[25074,61014],[0,103],[-8,0]],[[25066,61117],[9,41],[7,86],[-2,76]],[[25290,61068],[66,-1],[13,-19]],[[25357,60679],[-13,29],[-54,0]],[[24669,62475],[-3,53],[6,42],[-5,71],[2,38],[-5,85],[2,35]],[[26900,56534],[18,68],[13,11],[9,-25],[35,5]],[[27053,56464],[-31,-28],[0,-49],[12,-67],[-16,-74],[-3,-49],[5,-39],[19,-66],[-5,-43]],[[27034,56049],[-10,1],[-13,38],[-6,65]],[[27005,56153],[-8,77],[-29,98],[-29,52],[-19,72],[-11,15]],[[26909,56467],[-9,67]],[[26828,57227],[2,12]],[[26832,57244],[-4,118],[-13,20],[5,58],[-4,13],[-5,197],[-8,19],[13,79]],[[28113,60814],[-50,58],[-12,23],[-8,43]],[[27451,56634],[10,1],[28,80]],[[27474,56104],[-22,79],[-2,36]],[[27450,56219],[7,51],[-10,77],[3,94],[-7,77],[13,46],[-10,51],[5,19]],[[28593,61215],[14,-25],[15,-54],[20,-23],[30,-68],[-5,-65],[-15,-24],[-4,-153]],[[28648,60803],[-15,36],[3,66],[-10,14],[-8,56],[-11,-7],[-11,19]],[[28561,61136],[5,40],[12,30],[15,9]],[[26528,61748],[20,-42],[60,80]],[[26661,61619],[-13,-37],[3,-30],[-5,-64],[-36,-95]],[[26610,61393],[-16,25],[1,29],[-15,59],[-16,-6],[-13,20]],[[26514,61686],[14,62]],[[26405,59099],[20,5],[18,-50],[2,77],[35,-23],[9,7],[11,83],[7,-37]],[[26507,59161],[10,-70],[8,-28]],[[26525,59063],[-42,-131],[9,-43],[-25,-58],[-13,7],[-11,-71],[-10,10],[0,-35]],[[26433,58742],[-14,95],[-6,66]],[[26413,58903],[-10,54],[-11,16],[-9,38],[3,26]],[[18425,72968],[233,-1],[0,-50],[36,-1],[0,-51],[18,0],[0,-68],[160,3]],[[18872,72800],[0,-336]],[[18872,72464],[-71,-1],[0,-100],[-72,0],[0,-124],[-35,13]],[[20458,60006],[138,-1]],[[20596,60005],[-4,-38],[10,-55],[-8,-79],[-2,-66],[2,-78],[-23,-1],[-4,-29],[-12,-20],[5,-51],[-7,-33],[7,-55],[-7,-11],[16,-70],[-10,-46],[8,-55],[-4,-167]],[[20563,59151],[-19,-29],[3,-53],[-7,-25],[1,-44],[-19,-110],[-12,-28]],[[26048,65010],[0,-136],[-9,0],[0,-153]],[[21494,70549],[17,15],[12,-11],[13,19],[2,-51],[24,15],[26,-35],[11,29],[8,-32],[11,-3],[5,28],[11,-9],[31,65],[6,-10],[18,40],[-1,33],[31,18],[-2,41],[27,54],[4,53],[17,10]],[[21887,70985],[8,-54],[3,-61],[-9,-55],[6,-37],[-4,-47],[-15,-74],[4,-86],[15,-74],[15,-49],[-2,-27]],[[21908,70421],[-211,1],[-203,0]],[[21494,70422],[0,127]],[[26148,59575],[5,1]],[[26153,59576],[3,-62],[-5,-49]],[[26151,59465],[-15,-4],[-15,-27],[-15,-8],[-10,-51],[-4,-59]],[[26092,59316],[-22,79],[-34,29],[-2,30],[-18,-6],[-13,-20]],[[26003,59428],[7,142]],[[23711,55701],[0,-324]],[[23711,55377],[0,-161]],[[23711,55216],[-171,-2]],[[23540,55214],[1,453]],[[30177,69643],[15,-299],[-12,-5],[5,-103],[9,-100],[1,-125],[43,74],[29,-196],[-11,-19],[75,-48],[0,-75],[8,-2],[4,-52]],[[30275,68196],[-8,11],[-9,-42],[-15,31],[-3,81],[6,26],[-11,55],[-55,-109],[-10,21],[3,-53],[15,-11],[22,-92],[-12,-64],[4,-24],[-15,-26],[4,-57]],[[30134,67917],[-6,574]],[[30107,69679],[21,15],[0,33],[25,-41],[-1,-38],[7,-43],[11,-15],[7,53]],[[26610,61393],[12,-22],[-8,-23],[27,-35],[-3,-28],[20,-18],[-10,-34]],[[26648,61233],[-21,10],[1,-41],[-11,-19],[-13,24],[-28,-34]],[[26576,61173],[-12,50],[-5,46],[-17,64],[-26,26],[-1,39]],[[27604,58271],[-32,-2]],[[27572,58269],[-7,89],[-34,114],[-1,49],[-11,-4],[-24,30]],[[27495,58547],[3,27],[-11,78],[16,-4],[2,26],[11,3],[-9,30],[13,6],[-2,89],[-5,13]],[[30441,67899],[-12,4],[-15,-42],[-5,-39],[-20,4],[-7,-49],[-20,4],[-10,-49],[-3,-50],[5,-29],[-8,-32],[-13,29],[-22,-32]],[[23619,68467],[23,-29],[21,-45],[28,-23],[19,-31],[12,17],[-6,61],[3,21]],[[28480,59670],[6,58],[10,36],[4,74],[10,33],[0,30],[-12,58],[3,47]],[[28501,60006],[42,73],[7,97]],[[28550,60176],[5,-120],[22,-19],[25,-82],[1,-27]],[[28603,59928],[-13,-15],[-61,-191],[-42,-126]],[[28487,59596],[-3,5]],[[19531,66138],[168,-1],[256,-2]],[[19955,66135],[0,-202],[5,0],[-1,-501],[-117,-4],[0,-297],[3,0],[0,-462]],[[19845,64669],[-73,-2],[-242,0]],[[19251,64664],[1,676]],[[17928,71964],[6,-50],[18,0],[0,-51],[17,-17],[6,-51],[12,0],[6,-65],[23,0],[0,-52],[18,0],[-9,-35],[-21,19],[-11,-54],[0,-151],[5,0],[-1,-100],[-35,0],[0,-12]],[[17962,71345],[-25,-47],[-6,17],[6,55],[-34,58],[-16,59],[4,71],[-9,15]],[[28338,62082],[-7,-8]],[[28331,62074],[-5,10]],[[28326,62084],[12,-2]],[[24897,67741],[52,2]],[[25113,67326],[-99,-4],[0,15],[-99,-1]],[[24915,67336],[0,31],[12,48],[21,23],[1,206],[-37,16],[4,30],[-16,18],[-3,33]],[[31401,38459],[25,0]],[[31400,38325],[1,134]],[[21641,69873],[240,0],[75,0]],[[21956,69873],[3,-33],[16,-73],[-12,-74],[15,-83]],[[21938,69204],[1,-48],[-20,-47],[-19,-64],[-19,10],[-18,62],[-11,-2],[-1,-59]],[[21851,69056],[-23,-8],[-8,23],[-25,-16],[-29,-53],[-9,18],[-23,9]],[[21734,69029],[0,287],[-101,0],[4,52],[0,404],[4,0],[0,101]],[[27173,55464],[20,74],[50,-58],[48,12]],[[27230,55057],[-4,27],[0,85],[-9,15],[-2,49],[-12,64],[5,67],[-15,43]],[[27193,55407],[-20,57]],[[26741,59057],[7,8],[16,63]],[[26900,58958],[5,-20],[-7,-45]],[[26898,58893],[-8,30],[-33,-70],[-20,-98],[-8,31],[-13,-4]],[[26646,60285],[1,-37],[-13,-43],[-1,-102],[12,-88],[0,-76]],[[26645,59939],[-22,20]],[[26545,60074],[2,43],[-6,32],[-12,-7],[-12,65],[8,44],[-1,51]],[[25294,60482],[17,49],[12,11],[48,19],[6,38]],[[25413,60569],[-2,-63],[10,-32],[16,26],[1,-53],[12,5]],[[25450,60452],[-70,-165],[-11,-18],[-1,-49]],[[25368,60220],[-7,-29],[-18,-34],[-3,25]],[[27534,57466],[12,444]],[[27546,57910],[6,18],[8,-64],[15,-10],[17,54],[10,-59]],[[26196,59320],[5,4],[4,104],[14,63],[27,32],[22,-13],[22,-53],[15,0]],[[26313,59278],[-6,6],[-4,-44],[-13,-14],[-4,-34],[-21,-14],[-3,-53],[-8,-36],[2,-61]],[[26256,59028],[-7,-11],[-20,8],[-7,20],[-20,-37]],[[26202,59008],[-5,7]],[[26197,59015],[10,60],[-11,126],[0,119]],[[25067,59604],[8,-2],[33,-66],[24,-1],[10,-17],[20,-86]],[[25162,59432],[-46,-1],[-84,6],[-13,-5]],[[25019,59432],[-20,-5]],[[24999,59427],[13,142],[12,13]],[[24980,59425],[-15,1]],[[24965,59426],[-9,58],[4,30],[21,-2],[5,-49],[-6,-38]],[[26880,61763],[14,-33],[6,-64]],[[26900,61666],[-1,-90],[8,-36],[-1,-58],[-9,-20]],[[26845,61458],[3,119],[3,20],[-13,13]],[[26838,61610],[14,69],[28,84]],[[26978,57082],[0,-16],[19,-71]],[[26900,56534],[0,20],[-14,48],[-8,67],[-12,24],[-7,68]],[[22799,51614],[81,308]],[[22880,51922],[1,-23],[49,98],[14,52]],[[22944,52049],[8,-25],[23,14],[10,-7],[7,-117]],[[22992,51914],[15,-97]],[[23007,51817],[-41,-196],[-44,-187]],[[22798,51611],[1,3]],[[16516,70296],[55,24],[13,57],[14,23],[24,-22],[15,14]],[[16637,70392],[-1,-367],[52,-1],[0,-100],[29,-1],[0,-504],[-5,0],[0,-100]],[[16570,69317],[-33,0],[0,85]],[[28083,64346],[-3,9]],[[28080,64355],[64,13],[4,-5]],[[28148,64363],[-25,-50],[-5,-25],[16,-66],[-9,-69],[14,-20],[-1,-62],[5,-17],[-34,-205]],[[30332,65028],[13,-24],[29,5],[18,17],[12,70],[16,-105],[-1,-30],[-10,-16],[-33,4],[-41,60],[-3,19]],[[27811,56284],[2,-22]],[[27713,55709],[-22,29],[-7,45],[-20,40],[-11,59],[-22,55],[-31,6],[-5,-10]],[[18773,61759],[3,9],[125,0]],[[18901,61768],[0,-11],[212,0],[145,0]],[[19285,61351],[-212,0],[-202,3],[-62,-5],[-58,2]],[[22486,53060],[147,7]],[[22594,52589],[-20,-163],[7,-20],[-8,-48]],[[22484,52935],[9,24],[-9,11],[-4,65],[6,25]],[[18285,70417],[10,0],[11,48],[18,44],[12,-16],[16,47],[1,105],[-3,101],[69,1],[0,51]],[[18419,70798],[133,-2]],[[18547,70695],[-18,-5],[-11,-45],[-27,0],[0,-102],[-21,0],[-9,-58],[-15,-6],[3,-77],[-27,-65],[-17,-12]],[[18655,70194],[-76,-7],[-10,20],[-15,-88],[-38,-69]],[[22842,66762],[-15,15],[-1,38],[-25,25],[-15,-14],[-15,13],[-7,-23],[-12,5]],[[22752,66821],[-42,1]],[[21492,68153],[11,-1],[251,1]],[[21754,68153],[0,-179]],[[21754,67974],[-6,10],[-21,-23],[-18,-48],[0,-465]],[[21463,67449],[0,101],[-8,0],[0,261]],[[26151,59465],[17,-19],[21,-69],[7,-57]],[[26197,59015],[-24,9],[-33,55],[-1,21],[-26,21],[-9,30],[-2,49],[-10,-2]],[[26092,59198],[0,118]],[[18917,63158],[8,-14],[9,-84],[8,-28],[7,21],[5,-72],[9,-35],[2,-61],[161,0],[132,0]],[[19258,62885],[4,-62],[-7,-78],[-12,-85],[7,-56],[-7,-2],[-10,-86],[4,-19],[-13,-68],[-3,-52],[17,-54],[15,8],[11,-51],[-11,0],[-7,34],[-20,-15],[-6,-91],[7,-62],[9,-32],[-3,-29],[8,-36],[-10,-46],[10,-7],[-1,-37],[15,-23],[-5,-57],[15,14],[1,-26],[-14,1],[-2,-21],[18,-14],[-3,-51],[-7,-25]],[[18901,61768],[0,189],[2,0],[0,419]],[[22736,49726],[46,260]],[[22842,50178],[15,2],[4,-24],[13,18],[18,-59],[18,-16],[7,25]],[[22952,50012],[-7,-31],[0,-76]],[[22879,49749],[-35,-60],[-17,-66]],[[22814,49622],[-16,72],[-7,-20],[-23,-3],[-16,59],[-10,-20],[-6,16]],[[21749,59428],[36,0]],[[21785,59428],[114,0]],[[19716,60010],[37,-1],[213,1]],[[19927,59102],[-1,-255]],[[19531,58850],[0,1159]],[[24360,58779],[69,-6],[0,-52],[30,-2]],[[24459,58719],[44,-1]],[[24503,58718],[-3,-47],[-11,-18],[5,-25],[-22,-54],[-13,-82],[9,-68],[-12,3],[-1,-132],[-59,5]],[[24396,58300],[-59,4]],[[24325,58503],[0,51],[-8,26],[-1,46],[6,66]],[[23980,61481],[5,10],[12,-35],[7,-62],[8,46],[8,-9],[-8,-27],[55,-9],[2,27],[17,11]],[[24041,61053],[-60,8]],[[23981,61061],[2,186]],[[22622,73980],[201,0]],[[22841,73448],[1,-1]],[[24503,58718],[46,-5]],[[24549,58713],[-1,-206]],[[24462,58193],[-66,4],[0,103]],[[22999,67577],[5,-22],[-7,-37],[22,-64],[-1,-110],[-14,-5],[7,-42]],[[23011,67297],[-2,-41],[24,-3],[2,-83],[9,-35],[-5,-43]],[[25162,59432],[2,0]],[[25164,59432],[3,-108],[-20,-20],[-17,22],[-3,-220]],[[24981,59094],[15,54],[7,64],[0,44],[12,67],[4,109]],[[27062,55974],[101,328]],[[27185,56375],[17,-74],[14,-19],[13,-76],[16,-10],[22,-31],[25,-51]],[[27292,56114],[-51,-189]],[[27241,55925],[-107,-340]],[[27134,55585],[-7,27],[-7,-12],[-13,42]],[[27107,55642],[4,30],[-28,82],[4,32],[-4,39],[7,43],[-4,24],[-15,26],[-9,56]],[[15475,68998],[126,-1]],[[15593,68489],[-115,-2],[0,-6],[-51,8]],[[15427,68489],[0,38],[-11,-1],[-1,34],[23,1],[6,17],[-2,85],[34,0],[-1,335]],[[15332,68480],[95,9]],[[15972,68464],[9,-34],[5,-153],[-9,-57],[-9,-18],[3,-30],[-10,-54],[-3,-61],[-9,4],[-21,-69],[4,-108],[-7,-119],[6,-40],[-10,-14]],[[15921,67711],[-36,-67],[-5,-43],[6,-28],[-1,-66]],[[15885,67507],[-100,2],[-70,-5],[0,125],[-102,-6],[0,77],[-8,0],[-1,202],[-58,1],[0,34],[-34,1],[0,24],[-16,-1],[0,45],[-15,0],[1,26],[-12,1],[1,34],[-12,1],[-12,26],[-34,1],[-21,-57],[-7,3],[-6,-42],[-59,1]],[[15320,68000],[5,110],[7,249],[0,121]],[[28439,61133],[11,-45],[3,-47],[-6,-19],[11,-38],[16,-10],[1,-52],[10,15],[9,-15],[19,14],[15,-77]],[[28528,60859],[9,-83],[18,-63]],[[28555,60713],[-4,-86],[6,-39],[-5,-47],[-13,-28]],[[28539,60513],[-8,41]],[[28531,60554],[-14,59]],[[24902,60157],[13,17],[9,67],[19,24],[0,17],[36,21]],[[24979,60303],[9,-13],[-1,-47],[13,-87],[11,-46],[-1,-53],[19,-36]],[[24971,59859],[-48,-12]],[[24923,59847],[2,74],[-9,35],[-1,43],[-19,113],[6,45]],[[23075,50320],[4,335]],[[23079,50655],[96,214],[25,96]],[[23200,50965],[10,-64],[-1,-80],[22,-53],[-5,-19],[5,-89],[25,-3],[7,-27],[4,-51],[12,-31],[6,-46],[18,-7]],[[23303,50495],[-43,-87],[-42,-100],[-53,-89],[-61,-112],[-44,-119]],[[22342,55817],[1,-513]],[[22343,55304],[-40,0]],[[22198,55304],[0,515]],[[24266,70670],[139,0]],[[24408,70065],[-137,3]],[[24271,70068],[-1,400],[-4,0],[0,202]],[[18574,61346],[10,3]],[[19085,60640],[-102,-1],[-224,0],[-8,-5],[-89,1],[-55,8],[-90,0]],[[18517,60643],[-1,305],[30,-1],[1,90],[-3,10],[33,0],[1,101],[-4,1],[0,197]],[[23034,65124],[40,0]],[[23187,64889],[-113,-1]],[[26998,59540],[18,36],[18,14],[-9,-51]],[[27025,59539],[-27,1]],[[22755,72433],[162,0]],[[22928,72232],[-3,-99],[8,-91],[-3,-50],[3,-64]],[[24362,57080],[-2,-289],[33,-6],[18,-16],[4,-85],[17,-10],[2,-62]],[[24434,56612],[-16,-8],[-13,38],[-9,-20],[-7,16],[7,26],[-17,15],[-14,38],[-9,4],[0,-127],[-5,34],[-58,-1],[0,-34]],[[24215,56591],[0,196],[5,-1],[2,306]],[[24486,59147],[5,-38],[22,-23],[6,-46],[21,-27],[6,10],[65,-3]],[[24611,59020],[18,0],[-12,-65],[-9,-16],[-8,-130]],[[24600,58809],[-6,-101],[-45,5]],[[24459,58719],[2,396],[5,16],[20,-1],[0,17]],[[28343,60282],[-4,50],[17,26],[-4,-65],[-6,-6]],[[23151,54197],[174,91]],[[23325,54288],[1,-76],[-8,-69],[8,-40],[-7,-95],[10,-9],[5,-57],[-2,-29],[17,-31],[18,-91],[1,-75]],[[23368,53716],[-106,-59],[2,-17],[-26,-27]],[[23238,53613],[-3,56],[9,2],[-3,34],[5,38],[-7,44],[-6,-12],[-3,-53],[-5,24]],[[23225,53746],[-4,65],[-22,29],[1,64],[-30,38],[2,53],[-5,10],[7,40],[-16,-2],[7,46],[-7,51],[-10,25],[3,32]],[[25088,59945],[5,-33],[19,17],[7,-12],[20,26],[28,14]],[[25168,59746],[-71,0],[-10,28],[-6,-14]],[[26462,58620],[6,-11],[3,45],[15,19],[20,-9],[-5,38],[23,0],[10,-34],[16,-6],[16,53]],[[26603,58345],[-31,-8],[-15,-45],[-16,-8],[-8,-48],[-11,-17]],[[26522,58219],[-2,3]],[[26520,58222],[6,28],[-20,33],[4,43],[-24,-14],[-4,40],[-10,1],[-16,40]],[[25201,58919],[11,2],[0,62],[34,-2],[0,42]],[[25246,59023],[89,-7],[0,-30]],[[25345,58667],[-1,-34]],[[25258,59430],[121,-5]],[[25379,59425],[-2,-62],[20,-97]],[[25246,59023],[4,407]],[[29573,66195],[13,36],[19,-13],[2,-78],[-9,-31],[11,-26],[4,28],[18,-5],[3,-43],[27,-19],[-1,35],[9,17],[6,54],[10,-7],[-7,-40],[9,-26],[52,24],[3,-54],[8,25],[40,44]],[[29790,66116],[-12,-71],[18,-26],[18,0],[0,-153]],[[29814,65866],[-104,5]],[[29710,65871],[-27,-4],[-42,6],[-3,-39],[-14,-6],[1,45],[-54,3]],[[29571,65876],[-13,1]],[[23972,62785],[-10,-6],[-7,31],[-10,-4],[3,-42],[-11,-44],[-7,12],[-6,-31],[-15,-2],[-1,-69],[-17,-28],[-4,48],[-19,29]],[[22689,51891],[17,50]],[[22706,51941],[93,-327]],[[22710,51454],[-5,20],[-19,18],[-5,36],[-8,7],[-4,47],[-5,-8],[-5,44],[-7,10],[-2,52],[-7,17]],[[22643,51697],[-5,30],[28,71],[9,49],[14,44]],[[29472,67872],[44,15],[-4,82],[53,11],[4,-48],[16,25]],[[29610,67345],[-108,16]],[[29502,67361],[2,279],[-13,29],[-2,53],[-19,0],[-7,-66],[-10,26],[7,114],[12,76]],[[15990,69125],[8,-5],[177,-3],[200,-2]],[[16375,69115],[-9,-31],[5,-39],[0,-230]],[[16371,68815],[-123,-1],[0,-100],[-45,0],[0,-101],[-33,1]],[[16170,68614],[-205,2]],[[27093,60176],[13,37],[26,32],[7,43]],[[27282,60284],[-17,-22],[6,-50],[-14,-16],[-4,-24],[16,-13],[0,-40],[-24,-41],[-12,0],[-17,-26],[7,-30]],[[27223,60022],[-12,-28],[1,38],[-28,-34],[-30,-66],[-7,52],[-20,-22]],[[27127,59962],[-13,111],[-18,69],[-3,34]],[[28171,62647],[57,-154]],[[28191,62355],[-12,-40]],[[28179,62315],[-15,46],[-11,-7],[-15,27]],[[28138,62381],[22,165],[-1,31],[12,70]],[[31378,38070],[14,30],[8,-1]],[[31400,38099],[7,-37],[-3,-73]],[[26685,52165],[33,0]],[[26718,52165],[0,-89],[6,-82],[12,-22],[7,18],[25,-33],[1,-19],[15,-39],[2,-24],[12,-21],[9,-42],[1,-42],[13,-40]],[[26821,51730],[-4,-70],[-8,-3]],[[26698,51656],[-9,-1],[0,76],[-5,1],[1,433]],[[23298,60457],[-122,4]],[[25397,61477],[-45,-4]],[[22462,72716],[-28,2],[-11,56],[-2,42],[-22,-21],[-9,22],[-6,68],[-31,-65],[-21,-16],[-3,73],[-19,-36],[0,100],[-11,-1],[-8,42],[-17,14],[0,251]],[[23340,64178],[48,-2]],[[23388,64176],[0,-116],[6,0],[0,-253]],[[23394,63807],[-105,3]],[[23289,63810],[1,32],[-18,26],[-12,110],[1,39],[-11,34],[-1,40],[13,42],[-11,18],[-5,-39]],[[27841,59477],[35,605]],[[27876,60082],[25,-36],[9,23],[18,-33]],[[27928,60036],[1,-49],[24,5],[6,-33],[15,53],[4,-74],[-7,-21],[22,-72],[-4,-39],[6,-70],[-7,-26],[12,-51]],[[28000,59659],[-8,-11],[-10,-55],[-1,-70],[-5,-46]],[[27976,59477],[-18,0]],[[27863,59477],[-22,0]],[[28426,62262],[22,-73],[-1,-37]],[[28447,62152],[-19,4]],[[28428,62156],[-11,38]],[[28411,62214],[15,48]],[[15740,73454],[0,40],[20,-41],[-17,-26],[-3,27]],[[15785,73566],[258,-3],[183,-2],[0,19],[43,0]],[[16200,73160],[-269,1],[-115,1]],[[15816,73162],[-8,33],[-28,45],[-13,48],[1,39],[-29,-33],[-7,33],[4,45],[-13,-17],[3,39],[24,28],[13,-15],[9,-49],[19,7],[-10,108],[17,6],[5,34],[-18,53]],[[15715,73495],[8,29],[12,-47],[-15,-33],[-5,51]],[[20732,71200],[0,51],[35,0],[0,33]],[[20924,71234],[0,-117]],[[20924,70813],[-1,-326],[1,-64]],[[20924,70423],[0,-73]],[[20924,70350],[-25,0],[0,101],[-71,2],[0,98],[-35,0],[0,95],[-103,0]],[[28416,60141],[23,84],[17,33],[-1,24],[12,18]],[[28467,60300],[8,-17]],[[28475,60283],[9,-37],[12,8],[18,-13],[15,-55],[9,-2],[8,58],[7,-29],[-3,-37]],[[28501,60006],[-29,-60]],[[28472,59946],[-4,65],[1,63],[-20,18],[-11,-4],[-22,53]],[[16972,71178],[-4,-39],[1,-309],[35,1],[0,-102],[34,0],[-1,-241]],[[17037,70488],[-276,-1]],[[16761,70487],[13,32],[0,44],[-10,86],[-18,62]],[[26327,56999],[19,-1],[0,-36],[91,0]],[[26437,56962],[0,-54]],[[26437,56908],[0,-173]],[[26437,56735],[-27,-11],[-2,-62],[-16,-17],[0,-41]],[[26392,56604],[-67,5]],[[23095,70207],[138,1]],[[23233,70208],[0,-203],[3,0],[0,-202]],[[23236,69803],[-103,0]],[[23133,69803],[-35,0],[0,202],[-3,0]],[[23095,70005],[0,202]],[[23175,60359],[0,-350]],[[23175,60009],[-10,0]],[[23165,60009],[-146,0]],[[23019,60009],[0,354]],[[23554,63649],[2,304]],[[23556,63953],[107,-3]],[[23663,63950],[-1,-288]],[[23554,63548],[0,101]],[[28070,62132],[17,69],[10,72],[-10,7],[6,68]],[[28093,62348],[42,11],[3,22]],[[28179,62315],[-20,-78],[4,-24],[-19,-32]],[[28101,62058],[-2,25],[-29,49]],[[22215,51428],[114,-5],[7,-11],[-2,-57],[16,-3],[33,150]],[[22383,51502],[1,-196],[0,-316]],[[22384,50803],[-170,1]],[[23478,63294],[77,-1]],[[23555,62956],[-140,3]],[[23415,62959],[-1,48],[17,24],[-2,24]],[[20924,70350],[1,-154],[0,-625]],[[26003,69060],[49,1]],[[26052,69061],[11,-11],[19,145],[3,98],[13,20],[-8,-158],[-15,-44],[-6,-67],[14,-14],[8,65],[16,65]],[[26137,68755],[-135,1]],[[26002,68756],[1,304]],[[25293,57677],[45,0]],[[25351,57057],[-48,1]],[[25303,57058],[-1,322],[-10,18]],[[25292,57398],[1,279]],[[19530,56260],[1,113],[-1,145],[1,675]],[[27820,63550],[10,56],[13,35],[7,-11],[7,60],[5,3],[24,141]],[[27792,63178],[-2,40],[12,30],[-2,46],[-15,38],[6,55],[29,163]],[[28552,66556],[58,5],[0,-10],[54,6]],[[28664,66557],[3,-252]],[[28667,66305],[-13,-26],[16,-25],[-2,-78],[-28,25],[-18,0],[0,-64],[-17,1],[0,20],[-17,1]],[[28588,66159],[-23,1]],[[28565,66160],[-20,2],[1,105],[-3,200]],[[28739,67208],[7,-33],[-2,-74],[16,-2],[6,-348]],[[28766,66751],[-105,-22]],[[28661,66729],[-9,49],[-14,42],[-26,-5],[-3,187],[-9,-1],[-1,113],[7,5],[-2,141]],[[27882,56867],[117,-414]],[[27999,56453],[31,-108]],[[28030,56345],[-13,-8],[-36,-51],[-27,-66],[-35,-121],[-18,-79]],[[27849,56176],[-20,127],[-1,90],[-9,10],[-12,81],[11,68],[16,45],[-2,26],[12,50],[4,51],[17,52],[1,38]],[[19058,73978],[159,0],[190,2]],[[19407,73980],[0,-101],[-4,0],[0,-403],[2,-49],[9,0],[0,-85],[-9,0],[0,-67],[-6,0],[0,-118],[-9,0],[0,-84],[5,0],[0,-101]],[[19395,72972],[-54,-2],[0,103],[-33,-3],[0,101],[-217,1],[0,-101],[-37,0]],[[29244,66680],[103,53],[1,4]],[[29348,66737],[11,9],[9,39],[13,-52],[4,10]],[[29385,66743],[-9,-104],[-14,-93],[2,-56],[-9,-119]],[[26348,56220],[30,97],[8,73],[-2,23],[12,40],[8,50],[-7,32],[-5,69]],[[26437,56735],[0,-89],[19,-27],[13,-36],[12,-6]],[[26481,56577],[-19,-26],[-4,-34],[-9,6],[-14,-20],[-4,-34]],[[26411,56108],[-30,1],[0,-113]],[[26381,55996],[-31,-31],[-11,-26]],[[26272,55950],[9,10],[-4,29],[6,33]],[[24242,68956],[135,-1]],[[24377,68955],[0,-102]],[[24377,68853],[-97,0],[-7,-7],[-6,-93],[-11,-120]],[[24256,68633],[-36,36],[-8,19]],[[24212,68688],[-17,57],[-3,44]],[[25555,55208],[29,1],[0,-51],[83,6]],[[25668,55039],[-9,-126],[2,-25],[-11,-34],[0,-39],[-9,-56],[-86,-7],[0,-203],[-14,-1]],[[25541,54548],[-14,0],[0,203]],[[25527,54751],[0,202],[14,1],[0,203],[14,0],[0,51]],[[8956,91740],[-211,0],[-30,35],[-38,69],[-12,-4]],[[26855,55649],[22,24],[9,32],[24,30],[36,-61]],[[26946,55674],[-43,-120],[2,-60],[-24,7]],[[26881,55501],[-21,57],[2,38],[-5,36]],[[26857,55632],[-2,17]],[[21579,54292],[120,0]],[[21698,53784],[-142,0]],[[19250,68168],[1,-225],[0,-407]],[[18974,67578],[-1,210],[0,352]],[[20643,63071],[0,3]],[[20547,62997],[0,211]],[[20547,63208],[0,193]],[[20547,63401],[70,1]],[[20617,63402],[21,-16],[5,17]],[[20643,63403],[0,-144]],[[20643,63259],[0,-109],[-8,-31],[8,-22],[-16,-29],[16,-6]],[[20644,62998],[-10,-83],[-14,-28],[4,-43],[-14,-31],[2,-53],[-19,-134],[-27,-136]],[[20566,62490],[-19,-1],[0,508]],[[19961,62592],[0,-639]],[[19717,61952],[0,188],[66,90],[15,71],[-2,14],[31,93],[21,1],[14,22],[25,-42],[22,51],[14,64],[38,88]],[[26430,56108],[11,-67],[-11,-48],[-3,-132],[-17,1],[0,-97]],[[26410,55765],[-9,-1]],[[26401,55764],[1,59],[-5,26],[5,44],[-10,36],[-6,66],[-5,1]],[[25865,61975],[0,-308]],[[25762,61634],[-1,153]],[[25761,61787],[0,187]],[[29842,64964],[3,18],[27,22],[-21,-43],[-9,3]],[[29812,64781],[5,20],[11,-16],[0,-50],[-6,35],[-10,11]],[[29792,64880],[16,16],[-12,-43],[-4,27]],[[29435,64577],[3,27],[22,-30],[2,41],[9,-28],[20,-8],[18,-23],[23,28],[2,43],[17,8],[10,-12],[75,3],[39,20],[14,18],[30,63],[9,40],[12,13],[13,50],[21,21],[12,-2],[-18,-52],[-9,-6],[15,-31],[5,-44],[17,-12],[11,25],[16,-72],[15,17],[23,48],[2,28],[17,11],[12,-12],[-5,-21],[-67,-94],[-78,-123],[-50,-62],[-81,-93],[-53,-78],[-43,-41],[-27,-12],[-6,15],[-27,-27]],[[28633,68013],[16,50],[-5,-45],[-11,-5]],[[28892,68412],[-28,-133],[17,-34],[-5,-75],[-13,-2],[2,-47],[-17,5],[-43,-108],[-23,6],[-3,-107],[18,-5],[3,-115]],[[28682,67787],[-8,144],[-20,40],[11,50],[14,11],[2,-33],[21,41],[-3,43],[-19,47],[-22,-15],[5,29],[-15,51],[-15,1],[1,80],[16,115],[19,5],[23,42],[0,48],[18,22],[27,55],[9,-5],[30,70]],[[28611,68032],[12,40],[9,-5],[-21,-35]],[[23552,61627],[0,-383]],[[23552,61244],[0,-26]],[[23552,61218],[-130,0]],[[26992,58227],[11,35],[-2,25],[18,10]],[[27019,58297],[5,-12],[31,17],[10,23],[10,-30],[17,18],[18,1],[5,38]],[[27115,58352],[20,45],[17,-39]],[[27130,57892],[-29,5]],[[27101,57897],[-27,3]],[[26993,58140],[-5,58],[4,29]],[[28983,64630],[-4,24],[30,59],[16,64]],[[29025,64777],[55,-214]],[[29080,64563],[-10,-34],[-3,-52],[-20,-57]],[[18136,61841],[280,0],[148,0]],[[18564,61841],[-1,-72]],[[18574,61346],[-216,2],[-221,0]],[[27111,59928],[39,-163],[22,-181],[4,5]],[[27176,59589],[-12,-30]],[[27114,59561],[-27,3],[-3,-26],[-59,1]],[[26998,59540],[-14,0]],[[26973,59672],[30,62],[34,42],[-4,22],[12,45],[26,27],[10,-17],[17,29],[13,46]],[[26082,56450],[0,-61],[-20,1],[-9,-17],[0,-33],[14,-1],[0,-51],[-15,-34],[0,-145],[-5,-25],[-24,-31],[0,-52],[-15,1]],[[26008,56002],[1,34],[-56,1],[-8,17],[-1,53],[-6,31],[-27,7]],[[26674,56167],[32,42],[3,32]],[[26709,56241],[45,-73],[20,19],[14,-25]],[[26788,56162],[13,-38],[-18,-94],[8,-70],[-7,-60]],[[26784,55900],[-42,-133]],[[26742,55767],[-10,47],[-13,5],[1,22],[-11,76]],[[27448,63962],[31,6]],[[27479,63968],[-1,-280]],[[27478,63688],[-21,21],[-24,10]],[[27433,63719],[8,69],[10,23],[5,65],[-2,57],[-6,29]],[[5246,85264],[5,41],[14,-83],[-7,-25],[-12,67]],[[5213,85252],[8,77],[5,-57],[-13,-20]],[[6115,85440],[-43,-32],[-21,-31],[-29,-22],[-5,-21],[-41,-28],[-44,-61],[-79,-73],[-26,5],[-28,53],[-5,73],[-20,49],[-40,38],[2,46],[11,17],[9,167],[-12,-3],[-25,-101],[-41,-54],[-6,-58],[5,-58],[-8,-37],[-14,-12],[-3,-32],[9,-80],[16,-91],[19,-76],[-26,-87],[-28,-21],[-42,32],[-39,161],[-47,208],[-26,73],[-23,42],[-31,13],[16,65],[-16,44],[-25,-9],[-6,-87],[-15,7],[1,-65],[-29,-30],[-24,79],[3,26],[-19,19],[-11,-30],[-16,6],[-1,59],[-22,-18],[-25,61],[18,47],[-17,89],[-44,-52],[-46,-72],[-31,-62],[-20,-95],[-13,57],[-46,-46]],[[5033,85142],[7,131],[39,52],[21,6],[39,76],[5,-2],[-55,-273],[-22,-32],[-32,-4],[-2,46]],[[5036,85417],[-75,-101]],[[18336,56517],[164,1],[131,-137],[9,27],[0,42],[13,39],[9,85],[122,-56],[64,0]],[[25605,61809],[19,-1],[7,-33],[12,25],[10,-26]],[[25653,61774],[-1,-329]],[[25652,61445],[-62,-1],[-5,17]],[[25585,61461],[0,158],[-26,-7],[0,70],[-10,0],[-5,35],[0,79]],[[26212,62696],[-6,-117],[-13,-301]],[[26192,62257],[-18,-2],[-1,-17]],[[26173,62238],[-67,-1]],[[22479,60863],[183,2]],[[22662,60460],[-151,-2]],[[22472,62999],[155,-1]],[[22628,62695],[0,-101]],[[22628,62594],[-156,0]],[[22472,62594],[0,405]],[[22167,61480],[4,0],[0,-204]],[[21988,61176],[0,304]],[[23026,62187],[0,-51],[31,0],[0,-101],[10,0]],[[22906,61884],[1,236],[10,0],[0,67]],[[23881,70666],[0,-201],[-24,1],[1,-288]],[[23859,69973],[-69,1]],[[23788,70280],[-1,187],[-12,0],[0,202]],[[23775,70669],[0,101],[4,0]],[[25189,57111],[54,0],[0,-51]],[[25243,57060],[0,-438]],[[25243,56622],[-49,0],[0,-17]],[[25165,56605],[-1,338]],[[24915,57163],[14,1]],[[24929,57164],[51,-1],[15,-39],[30,6],[22,-35]],[[25047,56960],[0,-254]],[[24974,56707],[0,34],[-59,1]],[[24915,56742],[0,421]],[[24632,53941],[5,68],[0,237]],[[24637,54246],[136,2]],[[24773,54248],[-5,-21],[17,-96],[15,-107],[-7,-16],[2,-51],[11,-12],[-3,-43]],[[24803,53902],[-34,-41]],[[25075,53531],[56,0]],[[25131,53531],[29,0]],[[25160,53531],[0,-507],[2,0]],[[25162,53024],[0,-102],[-14,0]],[[25077,52921],[-2,106],[0,504]],[[22847,73041],[-1,-24]],[[28916,63579],[23,-103]],[[28939,63476],[12,-46],[-8,-71],[14,-13]],[[28957,63346],[-16,-19],[-24,-11],[-17,-44]],[[29911,65511],[91,8],[6,30],[15,-1]],[[30023,65548],[6,-46],[-2,-52],[-22,17],[12,-39]],[[30017,65428],[-17,-23],[-4,-37],[-85,-7]],[[29911,65361],[0,51]],[[29911,65412],[0,99]],[[24197,65671],[130,-1]],[[23011,65530],[31,0],[-1,-68]],[[22913,65194],[0,4]],[[27997,62961],[-20,-83],[-11,-19],[-23,-136],[-9,-2],[-12,-58],[-15,-48]],[[27907,62615],[-43,87],[-38,20]],[[24335,57718],[10,23],[18,15],[16,-24],[1,-18],[15,-2],[1,77],[33,-3]],[[24453,57174],[-60,5],[-1,-101],[-22,1]],[[19295,56015],[16,-38],[6,-60],[18,2],[5,42],[13,26],[6,47],[11,-1],[6,35],[20,11],[9,35]],[[19512,54686],[-32,-2],[-263,2],[-78,2]],[[20420,64069],[13,-14],[-2,-62],[13,-72],[23,-66],[9,-49]],[[20476,63806],[-7,-69],[3,-50],[9,-14],[-1,-117],[-14,-36],[-1,-86],[5,-10]],[[20470,63424],[-7,-48],[3,-46]],[[20466,63330],[-13,-55],[-18,-1],[-6,-21],[-18,13],[1,-70],[-12,-44]],[[20400,63152],[-20,-17],[-17,47],[-7,95],[-13,44],[-20,23],[-14,59],[-40,0],[-11,12]],[[20258,63415],[-53,0]],[[20205,63415],[-3,90],[1,395],[-6,0],[1,121]],[[20100,61346],[1,324],[210,-3]],[[20311,61667],[47,1],[5,38],[13,-12]],[[20376,61694],[34,-123],[9,-49],[17,-39]],[[20436,61483],[2,-24],[32,-99],[5,-78],[8,-29],[7,-68],[12,-67],[14,-14],[10,-51]],[[20526,61053],[12,-51],[-1,-55],[-6,-10],[0,-52]],[[20101,61123],[-1,223]],[[27305,49119],[75,-2]],[[27380,49117],[26,2],[1,-99],[27,0]],[[27360,48615],[-14,47],[-1,51],[-7,8],[-7,45],[4,22],[-13,31],[-5,-8],[-12,38],[1,26],[-19,65],[-2,45],[20,81],[0,53]],[[26454,57238],[-16,-24],[0,-34],[-23,14],[-3,-21]],[[26412,57173],[-7,-16],[-79,0]],[[26326,57157],[0,40]],[[26899,53572],[29,0],[4,-60],[18,0]],[[26950,53512],[7,-61],[0,-63],[9,-55],[12,-44],[9,-2]],[[26987,53287],[0,-37],[21,-25],[0,-100],[21,-86]],[[27006,52524],[-57,15]],[[26949,52539],[-3,36],[-2,242],[-16,-1],[1,167],[-8,0],[-8,44],[-12,21],[-22,192]],[[24193,62743],[62,-8],[103,-2]],[[24249,62413],[2,205],[-59,7]],[[24192,62625],[1,118]],[[20311,58766],[-1,-88]],[[20310,58678],[0,-19]],[[20310,58659],[21,-13],[-10,-58],[-11,-26]],[[20310,58562],[-9,42],[-21,29],[-15,-7],[3,20],[0,154],[23,-9],[5,24],[14,-8]],[[19205,72136],[15,-1],[23,38],[13,36],[8,-4],[25,53],[18,22],[0,76],[5,50],[-2,74],[32,-11],[13,37],[38,5]],[[19393,72511],[8,7],[24,-29],[31,45],[11,40],[40,-14],[18,24],[34,-11],[7,-41],[-7,-32],[15,6]],[[22141,66682],[39,-16],[28,42],[6,22],[22,9],[22,28]],[[22264,65933],[-119,-2]],[[21247,73451],[182,0]],[[21429,73451],[72,1],[0,-204],[14,1],[0,-407],[15,0],[-1,-204]],[[21386,72533],[-8,-7],[-23,33],[-18,0],[-22,51]],[[21315,72610],[-2,91],[23,78],[4,35],[-12,15],[-4,40],[-16,5],[1,30],[-27,22],[-1,40],[-18,-7]],[[25478,61055],[10,-4],[-3,-75],[11,-3],[13,40],[-11,64],[7,66],[8,-6],[6,-49],[14,-19],[14,37]],[[25547,61106],[20,-6],[22,-44]],[[25589,61056],[-6,-92],[14,-43],[-14,-47],[-20,-20],[-4,-48]],[[25535,60764],[-67,-10]],[[29908,65840],[84,11]],[[30042,65570],[-12,-23]],[[30030,65547],[-7,1]],[[29911,65511],[-3,222],[0,107]],[[26436,59535],[9,1]],[[26512,59533],[1,-34],[17,-155],[5,-9]],[[26535,59335],[-4,-37],[-9,15],[-5,-54],[-1,-65],[-9,-33]],[[22782,48693],[8,0]],[[22790,48693],[-7,-145],[-2,-108],[1,-103],[8,-205],[16,-227]],[[22806,47905],[-7,-1]],[[22799,47904],[-12,146],[-9,88],[-3,106],[1,138],[-1,122],[7,189]],[[22612,48613],[10,28],[30,13],[16,46],[16,-21],[25,19]],[[22709,48698],[3,-45],[24,-16],[25,38],[8,2],[-5,-116],[3,-4],[-4,-202],[-6,-207],[-4,-3],[4,-113],[7,-128]],[[22764,47904],[-117,-2],[-27,16]],[[22620,47918],[-8,5],[0,192]],[[28193,66835],[0,50],[12,46],[0,50]],[[28297,66930],[10,-92],[-12,-13],[0,-106],[-7,0],[4,-106],[31,-2],[-1,-108]],[[28322,66503],[-47,3],[0,-52],[-17,0],[-1,-75]],[[28170,66438],[-7,13],[29,157],[1,227]],[[26924,61653],[29,33],[23,11],[5,49],[5,107]],[[27005,61863],[46,-136]],[[27051,61727],[2,-117]],[[27053,61610],[-14,-8],[-6,-27],[-16,-5],[-9,-59],[-9,-21],[-7,-49]],[[26992,61441],[-10,13],[-1,64],[8,10],[-11,32],[-9,-29],[-45,122]],[[16078,63679],[10,0],[-1,-42],[11,-34],[-15,-82],[3,-67],[-1,-101],[15,-19],[2,-34],[19,-52],[21,-94],[11,-17],[9,-67],[17,-36]],[[16179,63034],[-9,-35],[-12,-14],[-2,-42],[-23,9],[0,-16],[-18,7],[-2,-50],[-7,-18],[1,-41],[-11,-71],[-9,-29],[-19,-7],[-3,-19],[-22,-14],[-13,16],[-4,-27]],[[16026,62683],[-1,11],[-78,-2]],[[15952,62785],[6,77],[-2,70],[6,32],[-39,-4],[-2,28],[4,100],[-2,32],[15,31],[-5,45],[-7,-1],[-17,72]],[[20400,63152],[0,-30],[21,-34],[16,-9],[5,-29],[-15,-54]],[[20427,62996],[3,-31],[-14,-25],[4,-14],[-16,-56],[-15,-22],[4,-27],[-12,-15],[-8,-46],[-9,-4],[-22,24]],[[20342,62780],[-20,0]],[[20322,62780],[0,23],[-13,80],[-1,67],[12,7],[0,54],[9,34],[-2,54],[-12,10],[-9,44],[-8,5],[-14,60],[-12,12],[-11,88],[-3,97]],[[26756,56837],[5,85],[-4,-3],[4,84],[12,92]],[[26773,57095],[16,-19]],[[26850,56854],[-39,-47],[-18,-44],[-11,28],[-16,-12]],[[24617,64243],[1,504]],[[25690,62890],[70,-4]],[[25760,62886],[15,0],[1,-144]],[[25776,62742],[-16,-12],[1,-198]],[[25658,62534],[0,203],[31,0],[1,153]],[[25653,61774],[22,-2],[14,-24],[5,15]],[[25694,61763],[13,-12],[11,36],[43,0]],[[25731,61413],[-63,-2]],[[25668,61411],[-16,1],[0,33]],[[22318,61986],[2,0]],[[22320,61986],[1,-406]],[[22321,61580],[-61,3],[-93,-2]],[[24197,65671],[0,506]],[[26409,59963],[2,35],[9,12],[-2,73],[13,46],[-3,58]],[[26426,59947],[-14,-7],[-3,23]],[[22323,61175],[31,0],[0,303]],[[22354,61478],[120,0]],[[22474,61478],[3,0],[-1,-102]],[[22476,61376],[1,-406]],[[23935,53450],[68,-4],[3,-16]],[[24006,53430],[5,-17],[24,-17],[0,-34],[14,-42],[0,-281],[1,-141]],[[24050,52898],[0,-17],[-43,3]],[[24007,52884],[-43,0],[-6,6],[-78,-2],[-12,-26],[-12,24],[-10,-13]],[[23846,52873],[0,50],[9,22],[-12,55],[1,33],[13,21],[-2,54],[-8,31],[6,102],[-6,1]],[[26465,66735],[65,5]],[[26530,66740],[66,3]],[[26596,66743],[6,-410]],[[24155,67966],[0,-389]],[[23994,67576],[-7,0]],[[24952,53531],[38,0]],[[24990,53531],[0,-102],[29,1],[-1,-392]],[[25018,53038],[-21,0],[0,-32],[-14,0],[-7,36],[-14,-14],[-29,1]],[[24933,53029],[0,502]],[[24637,55669],[45,0],[0,68],[29,1]],[[24711,55738],[0,-73],[11,-37],[13,5],[0,42],[10,32]],[[24745,55707],[0,-195],[-8,-48],[-3,36],[-17,-34],[0,-41],[14,-22],[5,-36]],[[24736,55367],[-24,-2],[0,-100],[-58,-1]],[[24654,55264],[0,203],[-13,-1]],[[24641,55466],[6,123],[-14,36],[4,44]],[[22654,66340],[98,1]],[[22752,66341],[32,1],[0,-102]],[[22784,65937],[-130,-2]],[[26611,60971],[12,-8],[18,15],[8,36]],[[26649,61014],[18,-50],[13,-6],[14,-41],[2,-30],[18,-47]],[[26718,60790],[-23,6],[-17,29],[-7,-11],[-12,-70],[-10,-12],[-7,22]],[[25450,60452],[-4,-33]],[[25483,60184],[-8,-148],[-6,-23]],[[25428,59964],[-27,125],[-19,125],[-14,6]],[[21494,69367],[0,-613]],[[21494,68754],[-1,0]],[[26222,60745],[1,56]],[[26223,60801],[78,40]],[[26301,60841],[11,-18],[2,-34],[11,-40]],[[26325,60749],[0,-19],[-25,-37]],[[26300,60693],[0,0]],[[26300,60693],[-27,-44]],[[26219,60645],[3,100]],[[26925,58820],[13,35],[12,76]],[[27029,58641],[-17,-103],[-23,-36]],[[26989,58502],[-2,25],[-14,28],[-8,83],[-13,-3]],[[26952,58635],[-2,48],[-11,47],[-11,11],[4,45],[-7,34]],[[25696,54963],[5,-112],[-2,-36],[13,-100],[10,-30],[-6,-29],[8,-34],[0,-35]],[[25699,54246],[-76,-1],[-3,45],[-12,18],[-8,53],[-5,-3],[-13,64],[-11,-2],[-7,49],[-15,34],[-8,-4]],[[25541,54499],[0,49]],[[26370,55568],[13,29],[16,0],[6,-22],[35,-1]],[[26433,55344],[-61,3],[-10,-27]],[[25756,53636],[0,-102],[7,0],[3,-78],[-10,-28],[0,-178]],[[25756,53250],[-18,-12],[0,92],[-184,-1]],[[25554,53329],[9,47],[10,20],[17,97],[19,62],[6,5],[11,71],[9,142],[22,42],[2,47],[17,0],[23,41]],[[24125,57814],[3,-67],[-15,-70],[15,-49]],[[23980,57417],[-59,1]],[[23921,57418],[0,102],[5,50],[15,34],[31,99],[18,69]],[[26412,57173],[8,-110],[17,-3],[0,-98]],[[26327,56999],[-1,158]],[[26711,55572],[6,84],[30,59],[-5,52]],[[26784,55900],[8,-25],[23,-10],[14,5]],[[26829,55870],[7,-18],[1,-62],[5,-11],[5,-112],[8,-18]],[[26857,55632],[-8,0],[-21,-49],[-13,-79],[-19,-23],[-11,-33],[-12,0]],[[26773,55448],[-14,-35],[-5,38],[6,79],[-27,29],[-22,13]],[[26328,54461],[8,0],[5,-49],[10,-1],[11,-64],[27,-1]],[[26385,54152],[-3,-56],[-40,1]],[[26342,54097],[-16,0]],[[26326,54097],[0,126],[3,1],[1,153],[3,27],[-5,57]],[[25990,63757],[0,186]],[[26069,63944],[1,-352]],[[26070,63439],[-80,-2]],[[25990,63437],[0,320]],[[25694,61763],[0,363],[6,0],[0,101]],[[21869,60868],[-122,0]],[[21747,60868],[0,108],[-4,-1],[1,507]],[[23285,62826],[109,1]],[[23394,62827],[0,-338],[-2,-99]],[[23392,62390],[-31,-2],[-12,-13],[-27,45],[-17,-15]],[[23305,62405],[-27,9],[2,176]],[[25789,64563],[0,-204]],[[25789,64359],[-47,0],[-3,-44],[6,-19],[-9,-20],[1,-119]],[[25645,64360],[0,118],[32,0],[-1,86],[16,1]],[[26308,60288],[46,137],[15,-32]],[[26409,59963],[-16,-14],[-45,-93]],[[26276,60008],[-20,57],[2,81]],[[24582,63322],[0,302]],[[24193,54360],[0,153]],[[24193,54513],[41,-1],[3,-21],[13,0],[0,21],[20,1]],[[24270,54513],[12,-1],[-4,-55],[8,-15],[-1,-58],[24,-3],[0,-14]],[[24309,54367],[8,-70],[-12,-8],[2,-104],[4,-28]],[[24311,54157],[-5,0],[0,-51],[-28,-1]],[[24278,54105],[-85,1]],[[24193,54106],[0,254]],[[23859,61822],[-154,13]],[[23705,61835],[-16,2],[1,101],[-3,0],[2,206]],[[24796,60706],[80,2]],[[24876,60708],[-1,-443],[-1,-108]],[[24874,60157],[-26,2],[0,-85],[-10,-17],[-32,1]],[[24806,60058],[0,52],[-31,1],[1,266]],[[24553,60122],[16,2],[-1,-51],[52,-4]],[[24620,60069],[14,-1],[-1,-57],[10,-35],[5,-51]],[[24648,59925],[5,-51],[-1,-83]],[[24652,59791],[-65,2],[-61,12]],[[24526,59805],[-30,3],[0,67]],[[23036,64685],[0,-270]],[[23036,64111],[-125,1]],[[29093,64340],[47,45],[12,-70],[-3,-57],[17,29]],[[29166,64287],[3,-23],[13,15],[-6,-55],[-10,-24]],[[29166,64200],[-14,-20],[-4,-26],[19,-74],[-20,-64],[-15,-27],[-10,-51]],[[29122,63938],[-9,20],[-19,-19],[-8,57]],[[28051,66841],[109,3],[33,-9]],[[28094,66437],[-43,-2],[0,20]],[[28051,66455],[0,284],[-7,0],[1,102],[6,0]],[[28429,66394],[33,1],[0,-25],[28,0],[-2,91]],[[28565,66160],[-6,-57],[-26,17],[0,53],[-64,-8],[0,-10]],[[28469,66155],[-38,-7],[-2,246]],[[26508,64065],[2,61],[32,4]],[[26542,64130],[0,-8],[100,-27],[0,-6]],[[26642,64089],[-8,-319]],[[26634,63770],[-66,18],[1,17],[-64,16]],[[26642,64089],[29,2]],[[26740,63669],[0,-42],[-10,1]],[[26730,63628],[-83,4]],[[26647,63632],[2,133],[-15,5]],[[27956,64557],[1,-211]],[[27909,63964],[-12,28],[-12,-46],[-17,-12],[1,28],[-11,20],[-47,48],[-19,5],[-10,37],[-5,-10],[-1,58]],[[26047,60502],[2,-30],[-10,-41],[-3,-69],[7,-40],[-4,-99]],[[26023,60208],[-45,-25],[-42,22]],[[25908,60401],[21,19],[2,34],[15,16],[-8,64]],[[25662,60663],[25,81],[6,-8],[31,59],[-14,41],[12,33]],[[25786,60667],[-20,-21],[15,-176]],[[25781,60470],[-41,-106],[-5,26],[-11,3],[2,-43],[-21,-66],[-4,-26]],[[25701,60258],[-23,66],[-1,55],[-19,62],[-10,-12],[-4,-37],[-9,9],[11,47],[-1,47]],[[21931,70015],[199,-1]],[[22130,70014],[2,0]],[[21956,69873],[-14,46],[-15,-3],[-12,31],[16,68]],[[26657,59050],[2,-23],[24,-2],[28,-26],[11,-54]],[[26600,58891],[-10,64],[11,-15]],[[26353,61748],[20,18],[3,40]],[[26376,61806],[8,-15],[13,36],[54,25]],[[26451,61852],[-2,-31],[15,-1]],[[26464,61820],[-7,-66],[15,-17],[8,-28]],[[26455,61607],[-24,-66],[-28,-43],[-18,6]],[[26735,58281],[-14,12],[-20,-53],[-12,-13],[-3,-48],[6,-34],[1,-77]],[[26693,58068],[-26,-7],[-10,-32],[-8,2],[-51,-23]],[[26598,58008],[-1,52],[17,24],[8,37],[2,67],[-7,-9],[-34,24],[-20,-3],[-30,24],[-11,-5]],[[23259,55308],[99,3]],[[23402,55370],[0,-129]],[[23401,54854],[-3,-30],[-11,32],[-9,-13],[-30,56],[-11,-9]],[[23337,54890],[0,0]],[[23337,54890],[-4,5]],[[23333,54895],[0,0]],[[23333,54895],[-1,1]],[[23332,54896],[0,-2]],[[23332,54894],[-1,0]],[[23331,54894],[0,0]],[[23331,54894],[0,1]],[[23331,54895],[0,0]],[[23331,54895],[-1,0]],[[23330,54895],[0,0]],[[23330,54895],[-17,0],[-35,95]],[[23267,55029],[-8,279]],[[28401,59133],[21,218],[3,44],[14,10],[-6,45],[-15,7],[-5,25]],[[28413,59482],[69,-3]],[[28482,59479],[4,-26],[-13,-59],[4,-80],[32,-44],[16,-13],[18,-66]],[[28543,59191],[2,-22]],[[28545,59169],[-8,-39]],[[28537,59130],[-70,-6],[-66,9]],[[23486,52437],[32,-5]],[[23449,51727],[-5,42],[4,61],[-13,25],[-18,202]],[[23417,52057],[-19,207]],[[25863,62395],[66,2]],[[25929,62397],[0,-17],[61,6],[17,32]],[[25983,62029],[-27,40],[-12,-14],[-18,32],[-12,-25],[-14,25],[-25,-23]],[[25863,62328],[0,67]],[[22321,61580],[0,-101],[33,-1]],[[24240,52210],[15,36],[2,36],[9,24],[5,-24],[12,9]],[[24283,52291],[10,-10],[-4,-40],[5,-57],[-8,-19],[10,-28],[-10,-29],[-1,-34],[17,7],[4,-39],[-13,-95]],[[23091,70512],[0,101]],[[23095,70207],[0,204],[-4,0],[0,101]],[[24819,54655],[-1,46],[8,3],[7,45],[15,13],[34,119],[15,-8]],[[24912,54449],[0,-204]],[[24912,54245],[-139,3]],[[24773,54248],[-5,57],[0,64],[15,40],[2,37],[-6,19],[9,63],[18,68],[5,48],[8,11]],[[24683,54781],[24,47],[5,30]],[[24712,54858],[0,-99],[56,-1],[1,-102],[50,-1]],[[24637,54246],[-3,206]],[[27874,57885],[1,21]],[[27875,57906],[27,26],[33,19],[15,34],[28,8],[30,-25]],[[28008,57968],[-3,-86],[-9,-109],[4,-100],[21,-63],[21,-95]],[[27929,57491],[-15,90],[-23,46]],[[27891,57627],[1,12],[-15,92],[-7,98],[4,56]],[[27192,58983],[13,29],[12,68],[-6,46]],[[27211,59126],[18,48],[13,3],[0,87],[13,17],[11,-22],[8,14]],[[27274,59273],[18,38],[7,39],[7,-23],[12,32],[14,-34],[5,-44],[13,4],[4,29]],[[27354,59314],[27,-88],[-1,-105]],[[26398,64300],[49,1],[0,-34],[32,2],[0,-18],[63,2]],[[26542,64253],[0,-123]],[[26388,63915],[-6,5],[0,380]],[[22847,58121],[0,101]],[[22847,58222],[144,-1]],[[22991,58221],[1,-72]],[[22992,58149],[-9,-10],[-20,38],[-14,-23],[0,-588]],[[22949,57566],[-10,52],[-20,-22],[-13,45]],[[22906,57641],[-24,-67],[-17,26],[-18,-1]],[[23171,58020],[0,101]],[[23245,58325],[103,0],[0,-302]],[[23348,58023],[-13,41],[-17,-37]],[[23318,58027],[-13,6],[-4,-41],[-30,-48],[3,29],[-17,-26],[-1,-22],[-23,-36],[-10,23],[-22,-13],[-10,-50],[-21,10]],[[23170,57859],[1,161]],[[15513,69827],[91,1],[7,-34],[23,0],[17,-67],[13,-1],[4,-33],[12,-1]],[[15680,69692],[0,-67],[5,0]],[[15624,69410],[-119,0],[-64,2]],[[15441,69412],[-16,0],[-1,163],[90,0],[-1,252]],[[28881,63990],[-12,33]],[[28869,64023],[-32,82],[-69,186]],[[28768,64291],[37,68]],[[26100,60552],[18,12],[17,-7],[17,-40],[2,-21],[28,56],[12,-14],[15,-46]],[[26184,60372],[-8,-45],[-33,-30],[1,-22],[-12,-41]],[[26132,60234],[-11,53],[-11,79],[-13,68],[-30,79],[0,44]],[[25958,59688],[-7,42],[-19,54],[4,27],[-6,30],[0,45],[-28,25],[3,23]],[[22784,52350],[-35,-247],[-43,-162]],[[22689,51891],[-129,386]],[[23417,52057],[-43,-144],[-12,-19],[-36,102],[-14,-14],[-8,47],[-14,32],[-11,-41],[-8,0],[-14,-40],[-25,-17],[-12,4]],[[23220,51967],[0,181]],[[23220,52148],[0,107],[-7,341]],[[21580,54802],[144,-2]],[[26824,59980],[12,38],[12,2],[16,39],[0,86],[25,45],[19,49]],[[26912,60247],[2,-91],[14,-76],[4,-43],[28,-49],[5,-29],[10,18]],[[26975,59977],[8,-76],[-30,-34]],[[26851,59778],[-18,55],[-12,53]],[[28128,62542],[0,35],[14,-24],[-13,-62],[-1,51]],[[26945,64658],[4,0],[0,-197],[9,-18],[2,-94],[11,0],[1,-200]],[[26892,64143],[-1,185],[-28,3]],[[24912,54245],[19,0],[2,-39],[0,-268],[1,-3]],[[24934,53935],[-29,-7]],[[24844,53913],[-41,-11]],[[24160,62628],[32,-3]],[[24218,61923],[-39,45],[5,27],[-14,40]],[[24170,62035],[-4,29],[8,52],[-18,34],[-15,98]],[[24124,62304],[-2,33],[15,105],[23,186]],[[19395,72972],[-2,-461]],[[19087,72136],[-1,35],[-35,-1],[0,93],[-27,-1],[-7,32],[-13,-6],[-32,60],[21,116],[-121,0]],[[18872,72800],[0,169]],[[22529,64514],[38,134],[16,30],[25,80],[32,42],[16,69]],[[20310,58659],[0,19]],[[20458,58822],[-2,-126]],[[20311,57729],[0,204]],[[20311,57933],[-1,104],[0,525]],[[28008,57968],[10,60],[12,23]],[[28135,57903],[-3,-112],[4,-16],[3,-206],[-14,-187],[18,-37],[6,13]],[[28149,57358],[-12,-49],[-28,-146]],[[22991,58221],[1,205]],[[23171,58020],[-129,0]],[[23042,58020],[0,207],[-8,-5],[-7,-40],[-16,29],[-4,-19],[9,-54],[-14,23],[-10,-12]],[[22579,59537],[179,0]],[[22758,59537],[0,-499]],[[22758,59038],[-59,0]],[[22579,59038],[0,347]],[[26648,61233],[18,-19]],[[26666,61214],[-3,-106],[-14,-61],[0,-33]],[[26573,61079],[-2,82],[5,12]],[[20563,59151],[132,0],[0,-51],[120,1]],[[20815,59101],[-1,-29],[10,-45],[-3,-37],[12,-66],[4,-98],[8,-26],[-7,-23],[3,-33],[-13,-61],[5,-94]],[[22784,65532],[-129,-1]],[[22691,65126],[29,1],[0,-73]],[[16170,68614],[0,-201],[2,-93],[32,-5],[0,-202],[66,-4],[0,-100],[103,1],[0,-101],[34,0],[0,-101],[100,0]],[[16107,67713],[-186,-2]],[[16981,65827],[160,2],[166,2]],[[17307,65831],[3,-1]],[[17310,65830],[0,-1163]],[[17310,64667],[-1,-416],[-63,-1],[-15,-135]],[[17231,64115],[0,175],[-96,9],[0,202],[-221,-2],[-97,0],[0,122],[-146,0]],[[16671,64621],[-5,0],[-1,319],[7,0],[1,209],[-6,0],[-1,205],[1,470]],[[28289,65830],[135,0],[44,2]],[[28468,65832],[11,1]],[[28479,65833],[8,-224],[7,-247]],[[28494,65362],[-24,-53],[-178,-11]],[[28292,65298],[-3,532]],[[25781,60470],[35,-38],[5,-48]],[[25764,60010],[-48,66],[-27,15]],[[25689,60091],[13,22],[-8,64],[1,43],[7,-3],[-1,41]],[[25859,61385],[17,-50],[1,-94],[26,-55],[22,-1],[13,-58],[4,36],[10,11]],[[26325,60749],[11,-48],[41,-115],[7,-10]],[[26645,59939],[6,-50]],[[26659,59620],[-19,2],[-33,-49],[-8,-27]],[[26599,59546],[-4,-21],[-67,5]],[[26248,61945],[18,42],[24,26]],[[26290,62013],[3,-118],[26,-69],[15,-87],[13,-14]],[[28488,57978],[14,-44],[59,22],[6,51],[1,68]],[[28568,58075],[30,-18],[8,-31],[1,-40],[-7,-56],[-13,-54],[1,-28],[-9,-53],[-15,-42],[-50,-112],[-44,97]],[[28501,58520],[9,34],[4,65],[12,70]],[[28526,58689],[19,93]],[[28545,58782],[5,-11],[40,10],[37,47],[9,-46]],[[28636,58782],[-4,-35],[7,-62],[-15,-87],[0,-104]],[[28624,58494],[-64,9]],[[28560,58503],[-58,1],[-1,16]],[[27290,61789],[18,44],[13,54]],[[27321,61887],[15,65]],[[27336,61952],[15,-50],[2,-37],[12,-16],[2,-40],[11,-44]],[[27378,61765],[17,-33],[-26,-75],[-89,-176]],[[27280,61481],[-6,127],[-8,117],[24,64]],[[19847,69324],[216,-1],[14,-4],[229,-3]],[[20372,69316],[3,-159],[0,-175],[2,-167]],[[19998,68811],[-4,39],[-25,23],[-16,62],[-25,36],[-15,-18],[-2,22],[-18,17],[-2,58],[-22,36],[4,18],[-12,65],[3,45],[-9,39],[-1,56],[-7,15]],[[31468,38436],[11,-15]],[[31476,38395],[-8,-19],[1,-30]],[[31469,38346],[-16,6]],[[31453,38352],[-1,71],[16,13]],[[31221,38068],[10,28]],[[31250,37954],[-24,16],[-11,-11]],[[28997,65367],[23,-108],[1,-34],[11,5],[15,-33],[-2,-18],[25,3],[14,-21]],[[29101,65083],[-16,-13],[-22,-69],[-14,-124],[-11,-49],[-20,-54]],[[29018,64774],[-10,-14],[-13,71],[-22,11],[7,118],[-64,-15]],[[28916,64945],[5,18],[8,90],[-11,42],[24,5],[4,47],[18,35],[5,38],[28,147]],[[26287,62172],[38,-93]],[[26325,62079],[-34,-14],[-1,-52]],[[26223,62062],[38,38],[22,-3],[-6,44],[10,31]],[[27804,58285],[4,-23],[-7,-33],[9,-54],[11,-27],[7,-64],[23,-44]],[[27851,58040],[-11,-46],[16,-31],[3,-31],[16,-26]],[[27874,57885],[-7,-9],[-14,31],[-20,23],[-25,-60],[-34,-137]],[[27731,57873],[-12,30],[-5,65],[-9,21],[-1,44],[-15,203],[-1,42]],[[27805,57494],[43,-5],[43,138]],[[27938,57083],[-28,-67],[0,-35],[-11,-19],[-10,-82],[-7,-13]],[[27776,57241],[-3,11]],[[22794,52331],[37,-76],[33,-91],[16,-242]],[[23323,53094],[133,382]],[[23456,53476],[-1,-44],[17,-25],[6,-51],[-6,-30],[11,-26],[-1,-40],[6,-63]],[[23488,53197],[-27,-122],[-73,-253]],[[27372,59500],[18,-3]],[[27390,59497],[37,4],[26,-5]],[[27453,59496],[47,-9]],[[27354,59314],[5,20],[-7,40],[13,56],[7,70]],[[20923,73979],[188,-1],[121,1]],[[21232,73979],[0,-325],[15,0],[0,-102]],[[20923,73553],[0,426]],[[31571,38386],[10,-1],[12,-44]],[[31593,38341],[-5,-21],[4,-29],[-1,-59]],[[31591,38232],[-2,-13]],[[31589,38219],[-13,12],[-3,-20]],[[31573,38211],[-4,3]],[[27401,55560],[2,5]],[[27546,54792],[-16,-45],[-8,21],[-15,-28],[-2,30],[-15,-15]],[[26005,59000],[9,-62],[15,4],[10,-20],[11,-58]],[[26050,58864],[-5,-51],[7,-104],[-9,-30],[10,-3],[-13,-26]],[[25983,58660],[-1,21],[-30,111],[-5,9]],[[25947,58801],[-12,146]],[[22718,53710],[92,184]],[[28547,57639],[14,31],[13,2],[27,30],[4,62],[11,-14],[3,-66],[8,-31],[18,-5],[-9,75],[20,-29],[2,-85],[-17,-75],[-18,-13],[0,-34],[-11,-20],[-14,-84],[-7,-71],[-17,20],[1,80],[-10,19],[1,-82],[-16,-7],[42,-64],[23,123],[33,120],[24,75],[47,176],[8,-21],[-28,-83],[-26,-96],[-22,-62],[-21,-78],[-18,-82],[-21,-115],[-3,-32],[-4,67],[-35,55],[-39,1],[-60,-38],[-21,-24]],[[22162,53599],[18,-10],[7,-69],[5,23],[6,-26],[10,28],[-2,34],[11,-34],[25,-42],[3,27],[18,58],[10,-18]],[[22304,53563],[0,-606]],[[26397,65488],[1,-103],[4,0],[1,-120],[10,0],[0,-33]],[[26413,65232],[0,-68]],[[26285,65163],[-1,121]],[[26284,65284],[0,193]],[[23200,50965],[8,39]],[[23208,51004],[14,52],[12,20],[28,-39],[21,57],[3,58],[5,6],[0,50],[24,1],[11,164]],[[23326,51373],[22,7],[4,15],[19,-7],[2,-45],[11,2]],[[23384,51345],[-5,-105],[49,-306]],[[23428,50934],[-12,-34],[-3,26],[-13,-8],[-2,-88],[6,-26],[11,37]],[[23415,50841],[-4,-52]],[[23411,50789],[-34,-104],[-40,-143],[-15,-8],[-19,-39]],[[27377,63688],[50,-2]],[[27427,63686],[-1,-65],[-9,-30],[2,-50]],[[27394,63328],[-116,21]],[[27278,63349],[1,97]],[[26546,62626],[15,-28],[8,47],[54,134]],[[26623,62779],[60,-1]],[[26683,62778],[-5,-128],[13,-20],[-2,-61]],[[26689,62569],[-9,-166]],[[26680,62403],[-63,-42],[-17,1]],[[26600,62362],[-56,1],[2,263]],[[26671,65387],[1,-138]],[[26670,64962],[0,-101]],[[26542,64862],[-1,287]],[[25282,68443],[59,-2]],[[25341,68441],[41,-2]],[[25383,68033],[-34,0]],[[25349,68033],[0,53],[-67,1]],[[25282,68087],[0,356]],[[28269,64352],[68,110],[20,27]],[[28357,64489],[3,-47]],[[28360,64442],[0,-123],[19,-9]],[[28249,63943],[-2,-11],[-27,-4],[-16,39],[25,109],[-5,67],[15,72],[30,82],[-6,-3],[6,58]],[[22050,59537],[111,-1]],[[22223,59038],[0,-177]],[[22223,58861],[-20,-9],[-12,-30],[-5,-62],[-10,-30],[-2,-40],[-17,-27],[-27,20],[-17,33],[-9,48],[0,82],[-13,5],[-16,-57],[-3,-48],[-21,-38]],[[22050,59428],[0,109]],[[21754,68153],[5,0],[0,202]],[[21759,68355],[190,0]],[[21957,67829],[-10,23],[-27,-17],[-32,55],[-27,-66],[-19,10],[1,18]],[[21843,67852],[0,0]],[[21843,67852],[-9,-14],[-10,49],[-6,-5],[-10,42],[-18,39],[-5,-25],[-12,46],[-19,-10]],[[25479,59588],[15,1]],[[25494,59589],[14,-315]],[[25379,59425],[6,64],[-10,147]],[[21202,56314],[1,141],[0,416]],[[21203,56871],[0,11]],[[21203,56882],[119,0]],[[31330,38045],[7,26]],[[31337,38071],[6,7]],[[31373,37865],[-11,-16],[-14,24],[-12,-19],[-7,13]],[[31329,37867],[6,143],[-5,35]],[[22094,57108],[50,1],[0,253]],[[22261,57475],[9,5],[9,39],[10,-12],[-1,-60],[-7,-50],[7,-61],[27,-1],[2,-29],[-14,-9],[-2,-36]],[[22301,57261],[5,-55],[-22,-3],[-16,-109],[-2,-125],[10,-38],[-5,-21]],[[22271,56910],[-18,56],[4,22],[-16,5],[-18,57],[-4,-92],[-12,-4],[-10,26]],[[22197,56980],[-12,21],[-17,2],[-6,-49],[-30,15],[-24,78],[-14,61]],[[27025,57433],[9,-42],[8,-6],[4,-47],[19,-50],[9,-5],[17,-62],[13,-27],[3,16]],[[27165,57139],[-16,-94],[-6,-3],[-17,-99],[-15,-26],[-15,-46],[-3,-47],[-12,-69]],[[20924,70423],[170,0],[122,0]],[[21216,70423],[15,0]],[[27261,62555],[-8,-41],[18,-51],[4,-84],[19,8],[5,-13]],[[27299,62374],[-31,-110],[-1,-25]],[[27267,62239],[-18,-21],[-29,53],[-16,-28]],[[27204,62243],[-13,57],[5,45],[-14,24]],[[27182,62369],[44,128],[7,2],[28,56]],[[25225,68846],[101,-6]],[[25326,68840],[15,2],[0,-401]],[[25282,68443],[-94,-1]],[[21494,70549],[0,177]],[[21467,71222],[0,100]],[[15490,70789],[21,10],[13,-45],[-1,-55],[19,-42]],[[15542,70230],[-100,-7],[0,12],[-69,0]],[[15373,70235],[0,145],[-7,45],[16,36],[1,109],[-19,193],[27,-79],[14,-14],[-3,38],[23,10],[7,17],[11,-28],[12,31],[15,0],[20,51]],[[28632,64405],[20,31],[6,95],[22,77]],[[28768,64291],[-29,-44],[-5,-72],[-15,2],[-29,-52],[-24,-20],[-23,-2],[-28,-23]],[[28588,64149],[-46,120]],[[28494,65362],[17,-8]],[[28511,65354],[18,-215],[43,-118],[41,-33]],[[28613,64988],[-41,-138],[-13,-2]],[[28559,64848],[-26,19]],[[28488,64829],[-18,11],[-5,-71],[-22,-3],[-24,-19]],[[28419,64747],[-6,0],[-44,175],[-8,1],[-34,110],[-1,27],[-14,24],[-16,96],[-4,44]],[[28292,65224],[0,74]],[[26154,58599],[5,-24]],[[26159,58575],[-5,24]],[[26050,58864],[10,36],[6,-6],[8,38],[15,10],[55,-59],[-1,-45],[13,-16]],[[26156,58822],[6,-77],[9,-3],[-8,-117],[-8,-19]],[[26155,58606],[1,33],[-27,-29],[-24,29],[-20,-35],[-14,17],[-9,-13]],[[24377,68853],[34,0]],[[24411,68853],[0,-407],[-20,-41],[-3,-46],[13,-27],[9,-61],[-11,-68],[4,-15]],[[24403,68188],[-10,7],[-32,85],[-3,29],[-27,41],[-12,34]],[[24319,68384],[-9,44],[-1,51],[-8,15],[0,53],[-14,40],[-31,46]],[[90501,34555],[4,28],[2,101],[9,-12],[20,67],[5,-22],[-14,-80],[4,-63],[-13,7],[0,-73],[-12,18],[-5,29]],[[31256,37931],[0,-48],[-6,-45]],[[31250,37838],[-1,17],[-21,8],[-14,-33]],[[31230,38250],[7,101]],[[31237,38351],[26,-19],[4,19]],[[31267,38351],[6,-32]],[[31273,38319],[2,2]],[[31275,38321],[-5,-75],[1,-58]],[[31271,38188],[-11,18],[-26,14],[0,10]],[[31234,38230],[-4,20]],[[21486,60002],[132,3]],[[21754,60008],[34,0]],[[21788,60008],[0,-174],[-3,0],[0,-406]],[[21485,59429],[0,406],[1,167]],[[28613,64988],[11,38],[27,2]],[[28590,64530],[4,89],[-14,47],[-1,63],[-14,12],[-6,107]],[[21908,70421],[4,0]],[[21912,70421],[31,-86],[3,-62],[19,-126],[-8,-52],[-19,-15],[-7,-65]],[[21641,69873],[-147,0]],[[23368,53716],[18,-26],[11,15],[7,-51],[12,-24],[0,-59],[10,4],[17,-53]],[[23443,53522],[13,-46]],[[23231,53136],[-3,48],[13,33],[-5,21],[6,104],[19,54],[-1,46],[-9,21],[-5,92],[-10,4],[2,54]],[[22332,53590],[7,-39],[11,-19],[16,10],[4,-35],[23,-2],[-2,-38],[8,12],[4,48],[9,-27],[-2,-70],[15,26],[5,-17],[-2,-47],[17,10],[-11,-62],[13,-6],[4,-40]],[[22451,53294],[-1,-37],[16,-50],[-11,-37],[7,-40],[12,35],[7,-48],[-8,-14],[13,-43]],[[28409,60582],[15,-23],[8,-36],[21,-28],[22,-7],[0,-31],[11,24],[0,-31]],[[28486,60450],[-2,-34],[10,20],[0,-122]],[[28494,60314],[-19,-31]],[[28467,60300],[-11,66],[-16,-42],[-5,48],[-11,-9],[-41,21]],[[28383,60384],[6,71]],[[28001,61878],[15,96],[11,51],[11,-6],[32,113]],[[28086,61905],[-13,-52],[1,-25],[-15,-46],[-5,-54]],[[28045,61665],[-17,6],[-3,24],[-18,22],[-3,37],[-16,16],[13,108]],[[22181,66993],[-185,0]],[[21991,67449],[0,101],[-4,1],[0,275]],[[20994,51000],[-12,22],[-39,21],[-17,28],[-19,61],[-11,12],[-19,81],[0,24],[-14,47],[-21,7],[-12,27],[-5,34],[-30,78],[-9,43],[-7,110],[-12,56],[-7,60],[-13,63],[0,59],[-7,57],[6,72],[-3,54],[2,55],[-7,68],[-11,30],[-3,44],[-13,39],[-1,30],[-13,34],[2,33],[-13,177],[-7,40],[-12,4],[-4,24]],[[18517,60643],[-60,0],[0,-51]],[[18457,60592],[-38,0],[0,-29],[-61,9],[0,54],[-61,0],[0,104],[-32,0],[0,-16],[-129,0]],[[23461,54010],[136,-1]],[[23597,54009],[7,-53],[2,-108],[5,-61]],[[23632,53288],[-16,57],[-4,33],[-15,22],[-13,98],[-13,-1],[0,32],[-40,22],[-38,38],[-12,50]],[[23481,53639],[-7,17],[0,43],[-9,2],[-2,49],[-10,88],[0,66],[11,14],[-12,19],[9,73]],[[22944,52049],[15,43],[2,51],[13,17],[13,47]],[[22987,52207],[61,55],[30,47],[4,-6]],[[23082,52303],[9,-23],[19,28],[14,-17],[-2,-45]],[[23122,52246],[19,-48],[-2,-74]],[[23139,52124],[-18,-21],[1,-76],[-10,-4],[13,-79]],[[23125,51944],[-4,-19],[-28,25],[-8,25],[-64,-37],[-19,-1],[-10,-23]],[[18740,65163],[-9,-16],[-16,9],[3,-64],[-20,-34],[-57,0],[-71,-302]],[[18570,64756],[-85,-89],[-112,0],[-234,0]],[[18139,64667],[0,1156]],[[22752,56420],[7,-14],[-1,-63],[5,-30],[20,-5],[11,64],[9,7],[13,-19],[2,42],[10,19],[9,-28],[2,-66],[-10,-30],[12,-94],[11,-14],[11,31],[-3,64],[13,22],[-11,42],[13,-19],[16,57],[-3,73],[14,0]],[[22902,56459],[0,-620]],[[22902,55839],[-122,16]],[[22751,55859],[1,561]],[[22197,56618],[0,362]],[[22271,56910],[5,-140],[18,3],[2,-20],[12,11],[9,-15],[16,27],[10,-10]],[[22343,56766],[0,-441]],[[23099,53507],[126,239]],[[23098,52995],[-5,38],[5,64],[-8,20],[-7,72],[0,48],[-10,83],[3,122]],[[22716,50826],[-40,-120],[51,-225]],[[22670,50311],[-13,3],[-25,58],[-25,-35]],[[22607,50337],[-26,113]],[[27350,60351],[-9,-20],[44,-149]],[[27369,60096],[-34,-31],[-22,-28],[-15,2],[-16,27],[-17,-33],[-26,-78]],[[27239,59955],[-16,67]],[[28286,59868],[62,134]],[[28348,60002],[68,139]],[[28472,59946],[-46,-100],[-63,-124],[-24,-52]],[[28339,59670],[-17,16],[9,165],[-14,-21],[-19,8],[-12,30]],[[28043,59884],[14,219]],[[28114,60150],[2,-27],[17,-46],[24,-47],[22,7]],[[28179,60037],[-6,-285]],[[28173,59752],[-24,24],[-36,11],[-22,48],[-21,17],[-7,-14],[-20,46]],[[27299,62374],[8,17],[9,-27],[19,-14]],[[27349,62010],[-13,-58]],[[27321,61887],[-5,31],[-16,6],[-3,112],[-16,62],[2,59],[-5,43],[-11,39]],[[27075,60636],[11,-29]],[[27093,60176],[-24,-16],[-13,-90],[-32,-11]],[[27024,60059],[4,10],[-6,70],[-22,119],[-4,70],[-12,39],[-6,-12]],[[28000,59659],[43,225]],[[28173,59752],[-6,-272]],[[28167,59480],[-77,-1]],[[28053,59478],[-77,-1]],[[26515,61398],[-29,-89]],[[26486,61309],[-57,-56]],[[26429,61253],[-26,54],[7,75],[-5,35],[-8,-1]],[[27246,59515],[49,-3],[77,-12]],[[27274,59273],[2,18],[-7,76],[-7,21],[-16,94],[0,33]],[[28143,60540],[19,-3],[14,23],[0,23],[32,-19],[10,-22],[3,-45]],[[28221,60497],[-6,-1],[-1,-59],[12,-33],[11,-5],[-3,-34],[13,-41],[16,31],[15,-36]],[[28278,60319],[-27,-84],[-14,0]],[[28237,60235],[-8,11],[-113,109]],[[28555,60713],[17,-18],[26,-60],[18,-26]],[[28625,60476],[-12,-39],[11,-39],[7,-55],[9,-14],[-19,-11],[-22,-27]],[[28554,60453],[-15,60]],[[28029,62404],[25,-33],[1,33],[16,53],[13,-7],[0,-42],[9,-60]],[[28001,61878],[-63,185]],[[27938,62063],[20,130],[23,71],[0,-36],[10,24],[15,66],[7,-21],[14,63],[-6,16],[8,28]],[[27024,60059],[-13,-12],[-18,-49],[-7,11],[-11,-32]],[[31293,38270],[16,2]],[[31309,38272],[10,28],[5,-39],[30,14]],[[31354,38275],[12,-34]],[[31337,38071],[1,26],[-8,49],[-18,10],[-6,29],[-10,-24]],[[31296,38161],[-3,16],[0,93]],[[24237,70068],[34,0]],[[24408,70065],[0,-402]],[[24373,69565],[-137,2]],[[31178,38330],[22,47]],[[31200,38377],[8,-30]],[[31208,38347],[1,-84]],[[31209,38263],[-15,-5]],[[15337,71411],[72,-2],[131,0]],[[15540,71409],[1,-267],[2,-1],[0,-207]],[[15543,70934],[-102,1],[-1,-111]],[[15440,70824],[-9,-17],[-13,10],[-19,-51],[-9,7],[-21,74],[-10,8],[-7,-47],[-10,-10],[6,139],[1,124],[-4,165],[13,-61],[-2,-100],[4,-137],[17,0],[1,37],[-10,40],[0,61],[12,-37],[14,83],[-19,116],[11,42],[25,53],[-17,37],[-6,-27],[-18,-2],[4,-23],[-16,4],[-20,44],[-1,55]],[[27013,61145],[40,47],[32,12]],[[27085,61204],[-14,-45],[20,-14],[14,-31],[22,-16],[6,-56],[-6,-22],[16,-67],[21,25],[11,-49]],[[27175,60929],[-24,-17],[-20,-27],[18,-58],[-28,-48]],[[27121,60779],[-18,22],[-10,-21],[-3,22],[-18,-14],[-4,-24],[-14,63],[-11,0],[-7,57],[0,59],[-11,45],[10,23],[-4,46],[-11,15],[-7,73]],[[16328,60062],[18,61],[69,78],[34,4],[15,19]],[[16464,60224],[81,272],[31,1],[0,50],[10,1],[0,38],[9,0],[0,77],[76,253]],[[16682,60871],[15,-29],[5,26],[21,-3],[16,-58],[9,-63],[3,-52]],[[25460,68909],[8,38]],[[25468,68947],[101,-2]],[[25569,68945],[-18,-82],[-9,-62],[-20,-261]],[[25459,68540],[1,369]],[[24920,62948],[47,1]],[[25077,62745],[0,-153]],[[24938,62338],[-17,-1]],[[19961,62592],[14,15],[6,31],[10,-1]],[[19991,62637],[6,-20],[-1,-48],[6,-29],[16,-23],[4,-40],[60,0],[20,-58],[-2,-31],[27,-59],[12,21],[4,-27],[13,-10],[15,75],[15,15],[11,-13],[15,-54]],[[20212,62336],[11,1],[25,-100],[15,12],[26,-23],[-8,-56],[-19,-51],[1,-102],[-9,-32],[6,-44],[16,-45],[7,-68],[4,-78],[24,-83]],[[20100,61346],[-158,0]],[[19942,61346],[2,13],[-7,106],[-13,61]],[[25845,62734],[36,2]],[[25928,62739],[1,-342]],[[25863,62395],[-15,0],[0,236],[-3,103]],[[26782,52851],[13,23]],[[26795,52874],[35,-40],[4,-62],[10,-46],[27,-9],[27,-24],[6,-21],[-1,-121]],[[26903,52551],[-29,7]],[[26874,52558],[-125,30]],[[26749,52588],[1,193],[8,17],[5,52],[19,1]],[[27851,58040],[59,250]],[[27925,58362],[58,-75]],[[28667,66305],[34,3]],[[28701,66308],[14,-209],[-2,-51],[-8,-1],[3,-218]],[[28708,65829],[-11,0]],[[28697,65829],[-115,2]],[[28582,65831],[5,60],[-6,121],[7,0],[0,147]],[[28582,59255],[29,31]],[[28611,59286],[22,-139],[16,-21],[12,-60]],[[28661,59066],[13,-68],[10,-27],[-7,-14],[-31,45],[-13,5],[-5,29],[-18,24],[23,-73],[21,-23],[-7,-19],[-24,-11]],[[28623,58934],[-22,11],[-23,27],[-5,152],[5,22],[4,109]],[[25524,58838],[0,-27],[-21,-27],[-14,-36],[-13,-11],[-3,-78]],[[20523,60683],[12,40],[11,1],[9,31],[20,22],[17,-44],[14,-1],[-9,-44],[11,-42],[1,-104],[5,1],[8,-53],[-10,-27],[0,-116],[3,5]],[[20615,60352],[0,-347]],[[20615,60005],[-19,0]],[[20664,63541],[0,0]],[[20674,64664],[124,5],[124,-1]],[[21055,64669],[0,-349],[-2,-6],[0,-202]],[[20895,63504],[-95,-1],[-131,0]],[[20669,63503],[0,51],[-11,-21],[3,-21],[-18,-9]],[[20643,63503],[-1,1],[1,303]],[[20643,63807],[-1,102],[31,0],[0,287],[1,101],[0,367]],[[26190,57412],[3,60],[20,0],[0,52],[11,8],[12,136]],[[26236,57668],[47,0]],[[26254,57256],[-3,-21],[-35,8]],[[26444,62138],[5,-26],[45,-40]],[[26494,62072],[21,19],[20,-22]],[[26535,62069],[-24,-203]],[[26511,61866],[-12,-13],[-14,17],[-10,-39],[-11,-11]],[[26451,61852],[-8,280],[1,6]],[[25990,63757],[-106,-3]],[[25884,63938],[0,34],[106,4]],[[26165,59923],[8,84],[11,42],[34,178]],[[26212,59846],[-15,-37],[-32,68],[5,-36]],[[25350,59856],[-9,79],[-14,54]],[[22178,60454],[1,-444]],[[22179,60010],[-129,2]],[[22050,60012],[-24,1]],[[22026,60013],[-1,448],[-4,0],[0,102]],[[28028,58872],[-38,61],[-19,-4]],[[28806,57915],[1,-17]],[[28807,57898],[-54,-93],[-19,-51],[8,68],[8,0],[47,86],[9,7]],[[28624,58494],[38,-8],[-7,-95],[22,-12],[11,66],[2,50],[7,5],[15,-38],[13,-5]],[[28725,58457],[9,4]],[[28734,58461],[31,0],[9,-100]],[[28774,58361],[-13,-52],[-10,-9],[-3,-43],[-7,-11],[-7,-71],[-13,-15],[-3,-46],[-17,-25],[-3,-24],[-26,25],[-29,-4],[-26,18],[-5,25],[-10,-14],[-15,45],[-13,115],[31,3],[2,51]],[[28607,58329],[-10,30],[-10,2],[-17,61],[0,40],[-10,41]],[[24582,55363],[0,105],[59,-2]],[[24654,55264],[-29,-101],[0,-25],[19,1],[-6,-29],[7,-28],[-15,-43],[22,-47],[-6,-29],[-6,31],[-4,-33]],[[24636,54961],[-68,1],[1,204],[13,123],[0,74]],[[31330,38045],[-15,-19],[-6,24]],[[31309,38050],[-8,-1]],[[31301,38049],[-8,44]],[[31293,38093],[-1,67],[4,1]],[[26773,55448],[-5,-62],[6,-49],[-7,-45]],[[26767,55292],[-21,72],[-58,-96]],[[26668,55570],[18,-6],[25,8]],[[22469,66993],[9,-59],[34,-52],[10,-24]],[[22522,66858],[1,-141]],[[22258,66767],[1,226]],[[27870,61354],[6,37],[16,15],[7,-20],[-3,-44],[-8,-25],[-10,5],[-8,32]],[[23076,64719],[10,-27],[22,-30],[17,25],[10,36],[21,21],[13,-16],[30,1]],[[22413,68388],[103,0]],[[19530,53413],[-64,2],[-201,-1],[-128,-1]],[[23594,57109],[2,258]],[[23655,56742],[-63,-3]],[[23592,56739],[2,370]],[[27378,57051],[11,-45],[13,-7],[7,-42],[-16,-126]],[[27393,56831],[-38,-19],[-37,-45],[-24,8],[1,-54],[-28,65],[-11,11]],[[27256,56797],[-14,101],[-15,149],[0,47]],[[16637,56552],[8,-17],[11,14],[0,-30],[-17,-4],[-9,21],[7,16]],[[16634,57567],[17,0],[0,-25],[29,0],[0,-26],[10,1],[0,-51],[74,-2],[0,-25],[26,0]],[[16790,57439],[64,-544],[6,-95],[-10,-6],[0,-80],[-34,0],[-42,-108],[-1,-35]],[[16773,56571],[-40,62],[-12,2],[-24,53],[-17,141],[-10,10],[-17,53],[-4,-3],[-20,65],[-5,3]],[[16596,55679],[14,7],[20,-35],[8,-31],[-13,-15],[-20,21],[-9,53]],[[17004,56219],[6,18],[2,52],[16,82],[15,38],[0,46],[53,1]],[[17127,56368],[26,-118],[12,-14],[1,-55],[16,-8],[18,-52],[-28,-145],[1,-34]],[[17173,55942],[0,-41],[-20,-18],[-4,-78]],[[17149,55805],[-10,50],[-15,37],[-9,-2],[-19,95],[-26,59],[-14,15],[-20,57],[-18,66],[-14,37]],[[26880,50342],[69,1],[0,-34],[44,2]],[[26877,50038],[4,60],[-2,41],[5,83],[-6,66],[2,54]],[[27127,54368],[43,43],[53,60]],[[27223,54471],[12,-169]],[[27235,54302],[7,-56],[18,-57],[10,-103],[18,14],[18,-78],[-11,-46],[1,-61],[5,-44]],[[27301,53871],[-12,0]],[[23731,67576],[0,-284]],[[23731,66887],[-132,1]],[[23599,66888],[0,404]],[[21482,60760],[0,110]],[[21617,60463],[-135,0]],[[20615,60352],[12,6],[31,82],[19,31],[14,-10],[36,23],[16,43],[2,61],[7,-1],[29,86],[4,55],[24,142],[30,92]],[[21102,60760],[92,-1]],[[20934,60006],[-92,-3],[-184,0],[-43,2]],[[24949,62040],[1,-102],[-31,-1]],[[24791,62074],[13,38]],[[24804,62112],[1,51],[-38,82],[-7,4]],[[26961,48307],[34,-1],[0,102],[55,-1]],[[27187,48102],[-138,1]],[[27049,48103],[2,37],[-2,86],[-8,14],[0,40],[8,10],[-4,31],[-12,-4],[-5,-33],[-11,-11],[8,-148],[-20,-24]],[[27005,48101],[-15,24]],[[26990,48125],[-5,44],[-24,138]],[[25585,61461],[0,-52],[-42,0],[0,-42]],[[25543,61367],[-62,4]],[[25398,61442],[0,31]],[[24587,65565],[31,0],[20,-43],[11,31],[27,-3],[11,20],[19,-3],[17,-51],[26,-1]],[[24749,65515],[1,-36],[-9,-59],[1,-66],[-16,-21],[-18,-57],[-26,1],[-10,-13],[-16,-56],[-24,-17],[-14,3]],[[15843,66991],[4,83],[48,0],[8,98],[8,44],[-1,31],[18,51],[-9,33],[-3,82],[-12,55],[-19,39]],[[16234,65824],[-44,-1],[-114,4]],[[15841,65840],[1,327],[1,824]],[[22893,50819],[-91,-279]],[[25262,54067],[12,388]],[[25277,54549],[137,3]],[[25414,54552],[-25,-30],[3,-116],[-8,-47],[-2,-73],[-7,-24],[-14,-10],[1,-42],[12,-31]],[[25374,54179],[1,-37],[-15,-10],[10,-33],[-12,-20],[-3,-47],[-11,-50],[10,-80],[11,10],[5,-72]],[[25370,53840],[-105,-1]],[[25265,53839],[-3,228]],[[25286,54863],[6,197],[5,212]],[[25297,55272],[2,72]],[[25299,55344],[47,5]],[[25435,54810],[0,-20],[-17,3],[-11,-52],[-22,-46],[-4,-66],[21,-38],[12,-39]],[[23760,59427],[78,0]],[[23913,59427],[6,-1]],[[23919,59426],[-1,-372],[-1,-66]],[[23917,58988],[-49,4]],[[23868,58992],[-20,1],[0,34],[-10,1],[0,35],[-10,18],[1,67],[-13,19],[2,32],[-44,4]],[[16425,58601],[183,0]],[[16608,58601],[204,1],[119,0],[86,2],[17,-3]],[[17129,57476],[-184,-4],[-147,-2],[-8,-31]],[[16626,57567],[0,205],[-5,17],[-20,-5],[2,108],[-31,-6],[0,102],[-40,1],[0,102],[-20,0],[0,102],[-32,1],[-10,69],[-15,32],[0,103],[-30,-1],[0,204]],[[27187,48102],[0,-299]],[[27187,47803],[1,-105],[-27,-2],[0,-121],[-45,-1],[-7,16]],[[27109,47590],[-7,57],[-28,113],[-11,9],[-1,52],[-12,23],[0,-64],[-14,-11],[-1,66],[-8,113],[-12,51],[3,24],[13,-3],[9,-39],[9,122]],[[26992,48019],[5,-18],[19,-211],[8,-28],[17,-26],[7,17],[14,-21],[-14,-31],[-9,-1],[-21,50],[-7,28],[-13,115],[-6,76],[0,50]],[[27005,48101],[-9,-7],[-5,-50],[-1,81]],[[20012,64670],[128,0]],[[20205,63415],[-8,-6],[-106,-1]],[[20090,63609],[0,156],[-112,-2]],[[19978,63763],[-1,129],[3,0],[1,242],[16,0],[0,67],[16,0],[-1,469]],[[24970,60670],[0,5]],[[24970,60675],[14,-10],[6,44],[83,0]],[[25073,60709],[31,-4]],[[25104,60705],[-1,-311]],[[25103,60394],[-57,7]],[[25046,60401],[-66,-1]],[[24980,60400],[14,11],[4,62],[-26,161],[-2,36]],[[22202,60010],[-23,0]],[[25589,61056],[9,-23]],[[25598,61033],[13,-34],[18,-13],[8,-62],[11,3],[7,27],[5,97],[19,42]],[[25149,51924],[13,-63],[5,-76],[-3,-101],[-10,-105],[-4,3],[8,90],[4,100],[-1,46],[-12,106]],[[25020,51931],[11,38],[32,81],[2,-14],[-13,-63],[2,-28],[13,-33],[-15,-50],[-3,47],[-10,-10],[-17,10],[-2,22]],[[24877,51859],[3,-49],[8,-25],[12,4],[13,25],[-4,-59],[8,-34],[15,-19],[13,11],[6,29],[5,101],[-2,13],[24,54],[3,44],[18,-34],[13,6],[0,-21],[-17,-34],[0,-34],[15,-17],[3,-61],[15,14],[11,82],[16,-25],[-4,-55],[-13,0],[-12,-44],[22,2],[-3,-29],[-31,-22],[13,-66],[11,22],[-7,-59],[-9,26],[-14,11],[-12,-55],[-1,-99],[-9,-5],[-6,86],[-11,1],[-2,-66]],[[24967,51478],[-10,-6],[-16,18],[-16,41],[-10,49],[-20,4],[-7,47],[-12,-10],[-14,87]],[[24862,51708],[-5,62],[-12,4],[-11,25],[6,51],[10,-10],[16,25],[11,-6]],[[18690,67021],[3,-37],[-10,-20],[2,-27],[-13,-7],[-6,-57],[8,-75],[-7,-47],[2,-46],[9,-60],[14,22],[24,0],[7,-51],[0,-45],[8,-22],[0,-108],[9,-41],[2,-85]],[[18742,66315],[-5,0],[-1,-186],[-24,0],[0,34],[-39,0]],[[18591,66416],[1,76],[8,4],[2,87],[-11,0],[0,34],[-11,25],[0,42],[-11,0],[0,67],[-5,0],[-1,142],[-19,71],[-16,-37],[-16,-7],[-10,-35],[-3,53]],[[18499,66938],[2,44],[10,2],[14,36],[165,1]],[[21658,63505],[24,1]],[[26476,53117],[32,-1]],[[26508,53116],[0,-42],[74,-4]],[[26582,53070],[-2,-442]],[[26580,52628],[-73,16]],[[26507,52644],[-22,5]],[[26205,53385],[-1,63],[8,80],[-2,43],[7,57]],[[26217,53628],[5,-36],[25,20],[33,-3]],[[26331,53531],[-1,-203]],[[26252,53111],[-29,3]],[[26223,53114],[-3,38],[-20,91],[3,54],[-5,51],[7,37]],[[18875,67719],[0,350]],[[28737,62777],[-11,13],[18,70],[-10,6],[12,122],[-30,-17]],[[28716,62971],[-20,89],[-7,47],[-11,31],[-5,41]],[[26926,67191],[4,-77],[18,-110],[2,-48],[-11,-46],[-7,-145],[4,-47],[-12,-113],[-4,-67],[-18,-66],[-15,4],[-12,-42],[1,66],[-9,27],[10,16],[15,62],[-14,26],[-9,-5]],[[26869,66626],[-7,44],[-2,206],[-68,-5]],[[24544,57270],[130,-5]],[[24674,57265],[-1,-30],[12,-61],[-7,-45]],[[24678,57129],[-5,-33],[6,-83],[-25,-57],[0,-63],[-10,1],[3,54],[-19,-1],[-5,-27],[8,-45],[-7,-30],[-19,-15],[-4,-71],[-16,43],[-9,-29],[14,-43],[20,1],[2,-25],[-13,-28],[-16,33],[-12,-53]],[[24571,56657],[-45,0]],[[24526,56657],[10,29],[-4,38],[10,47],[-6,38],[7,101]],[[15847,61244],[23,-7],[12,-26],[23,36],[21,6],[16,-24],[18,22]],[[15960,61251],[8,-40],[12,-15],[15,10],[15,40],[6,40],[23,-2]],[[16045,60961],[-111,-113],[-16,32],[4,19],[-13,41],[-26,7],[-11,14],[-13,72],[-13,32],[-12,-10]],[[15834,61055],[-18,9],[-14,68],[8,-9],[9,26],[0,40],[19,-2],[9,57]],[[29578,65411],[12,6],[2,-43],[-4,-59],[19,7],[10,-21],[12,33],[13,7]],[[29702,64964],[-9,15],[-26,1],[-7,-26],[-18,23],[-40,-27],[-3,60],[-9,-17],[-19,-82],[-12,0],[-16,-48]],[[29543,64863],[-4,12],[4,59],[11,83],[-13,36],[-20,89],[-34,70]],[[29487,65212],[-3,41],[46,14],[-3,48],[20,15],[10,43],[21,38]],[[25668,61411],[0,-99],[-15,0],[-5,-80],[-18,5],[0,-35],[-8,-15],[-24,-100],[0,-54]],[[25547,61106],[0,109],[-6,0],[2,152]],[[25953,61661],[0,82],[10,16],[21,2],[10,67]],[[26071,61880],[21,1],[5,-24],[14,0]],[[26111,61857],[3,-53],[-5,-19]],[[26109,61785],[-11,-21],[-7,-44],[-30,-34],[-9,-69]],[[26052,61617],[-10,-92],[-19,-39],[-13,24]],[[27079,50651],[82,1],[0,102],[6,0],[-1,266]],[[27166,51020],[7,-82],[15,-7],[8,-27],[9,-92],[10,-2],[2,-38],[29,-92],[0,-102],[-4,-21]],[[27242,50557],[-14,-63],[1,-46]],[[27161,49938],[-37,-1],[0,18],[-18,0],[0,-18],[-28,-1]],[[26420,62364],[8,-77],[14,-64],[2,-30]],[[26444,62193],[-43,-73],[-9,-7]],[[26392,62113],[-13,52],[7,66],[-6,44],[3,56],[-11,32],[-4,86]],[[26368,62449],[9,31],[8,-8],[4,-69],[31,-39]],[[24509,53025],[33,0]],[[24607,53025],[-10,-66],[4,-63],[-3,-34],[6,-53],[-4,-110]],[[24475,52618],[-3,5]],[[24472,52623],[-3,53],[8,19],[4,50],[12,43],[0,34],[13,130],[3,73]],[[26718,52165],[11,60],[-1,38],[12,47]],[[26740,52310],[4,38],[20,24],[2,-14],[21,4],[10,-14],[23,-61],[24,-33]],[[26844,52254],[1,-408],[9,-24],[-11,-39]],[[26843,51783],[-18,-25],[-4,-28]],[[24381,53025],[128,0]],[[24472,52623],[-6,6]],[[24374,52992],[7,33]],[[24357,53078],[18,-1],[0,-58]],[[24349,53048],[8,30]],[[30793,68290],[11,-48],[-5,-69],[-16,-10],[-3,85],[3,51]],[[30712,67988],[8,37],[1,-75],[-9,38]],[[30703,68290],[8,41],[25,45],[11,-50],[-9,-8],[14,-78],[-11,-39],[-18,-13],[-12,24],[5,25],[-3,50],[-10,3]],[[30680,68449],[-7,-90],[-13,-78],[19,-30],[-13,-28],[10,-57],[-10,-38],[-27,4],[-13,-72],[-15,-1],[-2,-58],[-11,-9],[0,52],[7,37],[-9,15],[-3,-30],[-12,-13],[2,61]],[[30583,68114],[3,60],[10,-8],[2,32],[11,22],[-8,50],[2,43],[-9,90],[-19,1],[-8,19],[-5,101],[12,17]],[[26633,66337],[131,14]],[[26764,66351],[59,5]],[[26823,66356],[-7,-77],[-17,-53],[-30,-25],[-18,-97],[2,-127],[-3,-44],[-15,-25],[0,-43]],[[26735,65865],[-32,75],[-66,-10]],[[24914,57677],[0,-260]],[[24914,57417],[-53,0],[0,-16],[-32,-58],[-22,29],[-6,32],[-12,-2],[-8,-40]],[[24781,57362],[0,158],[-29,0]],[[24752,57520],[-2,13],[18,44],[0,45],[-17,55]],[[28412,62750],[0,1]],[[28492,62746],[13,-45],[16,-19],[-5,-33],[27,-61]],[[28543,62588],[-13,-40],[-12,-60],[-15,-29]],[[28503,62459],[-13,32]],[[24796,60757],[10,35]],[[24806,60792],[31,175],[17,62]],[[24854,61029],[10,-6],[16,42],[13,-28],[1,-29],[15,-12],[19,-51]],[[24928,60945],[2,-59],[14,-3],[9,-42],[19,-24],[2,-79],[9,-34],[-13,-29]],[[24970,60670],[-19,9],[-3,33],[-7,-17],[-28,14],[-6,-12],[-15,15],[-16,-4]],[[24636,62599],[3,-80],[8,-78],[-9,-36],[11,-85],[3,-58]],[[24652,62262],[-5,-21],[-12,11],[-22,-17],[-1,-39],[-33,12]],[[24579,62208],[0,0]],[[24579,62208],[-2,-2]],[[24577,62206],[0,0]],[[24577,62206],[-2,1]],[[24575,62207],[0,0]],[[24575,62207],[-5,-19]],[[23536,72129],[3,-505],[0,-201],[-36,0]],[[23503,71423],[-104,1]],[[23399,71424],[0,202],[-2,0],[0,203]],[[23397,71829],[0,201],[-4,0],[0,102]],[[23550,60009],[-108,1]],[[23442,60010],[-18,0]],[[23424,60010],[-1,56],[0,340]],[[22933,70005],[162,0]],[[23133,69803],[-1,-201],[5,-73]],[[23034,69703],[-14,57],[-27,38],[-18,4],[-14,55],[-9,73],[-19,75]],[[28873,62764],[21,-61],[10,-68],[3,-58],[-5,-35],[2,-126],[16,-48],[9,-92]],[[28929,62276],[-19,18],[-6,-50],[-23,-17],[-10,-56],[-10,-24],[-46,-6]],[[28808,62505],[-3,120]],[[17343,68337],[124,-2]],[[17395,67934],[-39,-16],[-12,17],[-5,33],[-12,1],[0,50],[-7,0]],[[17320,68019],[0,41],[12,81],[1,43],[-11,32],[-1,42],[12,17],[10,62]],[[26284,65284],[-108,-5]],[[26805,51386],[46,-7],[4,-26],[28,2]],[[26953,51263],[1,-314],[-37,-1],[0,-198]],[[26917,50750],[-17,-17],[-5,-24],[-21,28],[-7,-3],[-13,-44]],[[26854,50690],[0,71],[-16,26],[5,33],[-1,49],[-7,13],[-47,23],[-9,-51],[-7,-4],[-9,100],[3,45],[-14,32],[-11,7]],[[26949,52539],[-11,3]],[[26938,52542],[-35,9]],[[26795,52874],[0,366]],[[25888,65551],[1,363]],[[25889,65914],[128,-3]],[[25934,65552],[-46,-1]],[[24936,57677],[81,-2]],[[25017,57675],[0,-174],[15,0],[1,-304],[14,0]],[[24929,57164],[0,152],[-15,0],[0,101]],[[26078,66725],[-66,0]],[[21479,64671],[224,0]],[[21703,64671],[0,-356]],[[21479,64375],[0,294]],[[21479,64669],[0,2]],[[29286,63620],[-13,-221],[-5,-173],[-40,-241],[-20,-65]],[[29208,62920],[-19,-1],[-11,68]],[[29178,62987],[8,45],[0,207],[-45,356]],[[29141,63595],[40,108],[41,-6],[5,-60],[25,-18],[13,43],[10,-56],[11,14]],[[25525,63046],[41,0]],[[25617,63045],[0,-101],[-11,1],[0,-305]],[[25505,62641],[-2,26],[9,68],[13,9],[0,150]],[[28468,65832],[1,323]],[[28582,65831],[-103,2]],[[26266,62223],[20,-11],[1,-40]],[[26174,61979],[-1,259]],[[23398,71322],[1,102]],[[23503,71423],[3,-477],[13,-30]],[[20686,67576],[235,5]],[[20922,66996],[0,-453]],[[23552,61730],[84,-7],[15,-25],[9,11],[14,-16],[25,12],[5,-10]],[[23704,61695],[-2,-271],[7,0]],[[23706,61217],[-14,1],[-13,23],[-23,-36],[0,29],[-104,10]],[[22532,63506],[0,404]],[[22658,63911],[0,-406]],[[22658,63505],[-31,0]],[[22627,63505],[-95,1]],[[26137,62031],[-21,2],[-12,-33],[7,-143]],[[29236,64822],[85,-158],[3,-1]],[[29324,64663],[-6,-92]],[[29318,64571],[-5,-42]],[[29299,64433],[-9,28],[-23,-55],[-13,12]],[[29254,64418],[4,39]],[[29258,64457],[3,45],[-6,126],[-30,29],[-6,34],[17,131]],[[29300,65041],[122,52]],[[29422,65093],[-2,-82],[19,-97],[-68,-130],[20,-102],[-1,-33]],[[29390,64649],[-7,-42],[-21,-42],[-2,-42]],[[29360,64523],[-42,48]],[[29324,64663],[2,154],[-12,88],[-11,50],[7,50],[-10,36]],[[28051,67145],[0,-47]],[[28051,67098],[-13,11],[-26,-30],[-34,16],[-21,-24],[-11,-54],[-14,3],[-1,26],[-14,27],[-21,-1]],[[27896,67072],[-15,13],[9,77],[-5,125],[-3,13],[28,22],[38,42],[56,47],[40,20],[7,-4]],[[27141,59301],[26,-48],[20,-90],[4,5],[20,-42]],[[27119,58976],[-6,67],[-7,29],[-8,-5],[-7,31],[4,65],[-6,18]],[[23155,69500],[220,0]],[[23309,69035],[-12,21],[8,19],[-32,74],[-16,62],[-11,0],[-7,37]],[[22846,60009],[110,0]],[[22956,60009],[0,-252],[-20,-17],[-3,-28],[-15,9],[-12,-76],[-28,18],[-9,-20],[5,-95],[-3,-11]],[[22871,59537],[-113,0]],[[22758,59537],[0,472]],[[25279,60709],[0,-204]],[[25196,60403],[1,305]],[[28849,64855],[16,72],[10,10]],[[28875,64937],[41,8]],[[29018,64774],[7,3]],[[20311,57933],[-98,3],[-12,-17],[-5,17],[-150,2]],[[18514,68126],[-83,1],[-1,304]],[[26203,69750],[0,-36],[14,-1],[13,-73],[10,22],[65,-2]],[[26305,69660],[-1,-102]],[[26122,69565],[5,73],[17,49],[10,3],[18,48],[31,12]],[[26125,70269],[7,-20],[-12,-20],[5,40]],[[26084,70289],[21,-39],[-4,-36],[-19,38],[2,37]],[[26055,70019],[7,48],[3,69],[6,15],[1,57],[18,-7],[-1,-85],[4,-83],[-19,-44],[-19,30]],[[26035,70180],[13,8],[-5,-54],[-7,1],[-1,45]],[[26572,65927],[3,-418]],[[26542,65505],[-134,-16]],[[24319,68384],[-61,0],[0,-101]],[[24126,68386],[0,202],[34,0],[0,101],[52,-1]],[[23555,62524],[0,346]],[[23553,62471],[2,53]],[[22847,58526],[1,253]],[[22848,58779],[144,-1]],[[22847,58222],[0,304]],[[25175,57677],[-10,0]],[[25111,57676],[-51,0]],[[25060,57676],[1,20],[3,449]],[[23603,73631],[13,13],[33,-15],[11,-58],[61,-7],[48,-21],[8,-66],[-3,-49],[6,-12],[42,2],[5,15],[22,-2],[23,20],[-1,48],[33,46],[39,18],[9,-22],[25,5]],[[23979,72689],[-194,9],[0,-62],[-179,0]],[[23603,73243],[0,388]],[[23147,71828],[-36,-1]],[[23111,71827],[-177,-1]],[[25494,62522],[-4,17],[-25,8],[-57,-5]],[[25391,62780],[-1,118],[15,1]],[[23290,71827],[107,2]],[[23117,71323],[0,302],[-6,0],[0,202]],[[23127,65675],[130,-4]],[[23131,65462],[11,17],[-6,54],[8,20],[3,46],[-12,23],[-8,53]],[[24678,57129],[48,-117]],[[24711,56603],[0,-101]],[[24711,56502],[-57,2]],[[21038,58136],[69,0],[2,8],[0,298],[2,101]],[[21204,58543],[0,-136]],[[21204,58407],[-1,-511]],[[21203,57629],[-67,0],[0,-104],[-29,1],[-1,-102],[-29,1],[0,-102],[-59,1],[0,-101],[-9,-1]],[[21009,57222],[-58,1]],[[20901,57425],[1,423]],[[29166,64200],[44,11],[4,-19],[21,14],[3,-13]],[[29238,64193],[-4,-40],[-9,-16],[-3,-50]],[[29222,64087],[0,-43],[10,-14]],[[29232,64030],[-6,-53],[-30,-96],[-11,-53],[-25,-30]],[[29160,63798],[0,23],[-39,60],[1,57]],[[27804,62289],[60,-168]],[[27864,62121],[22,-60]],[[27886,62061],[-9,-48],[-1,-71],[-8,1],[-29,-212]],[[27839,61731],[-24,-77]],[[24431,55807],[-1,-446]],[[24430,55361],[-169,3]],[[24261,55364],[-11,27],[-6,45],[0,57],[5,44],[-8,7]],[[24711,56502],[0,-203]],[[24711,56299],[0,-561]],[[24637,55669],[-13,0],[0,301]],[[24723,57488],[19,32],[10,0]],[[24781,57362],[-8,-31],[4,-60],[-7,-24],[6,-77],[6,-6]],[[24782,57164],[0,-51]],[[24674,57265],[-1,34],[10,21],[-1,-49],[11,-18],[14,50],[-2,31],[-20,2],[-6,40],[7,14],[-2,35],[10,27],[-2,-57],[5,-34],[14,19],[-6,72],[5,25],[-8,44],[2,29],[11,-2],[8,-60]],[[24081,64189],[8,-34],[-4,-38],[6,-33],[-9,-62],[12,-44],[-5,-16],[0,-60]],[[23899,63948],[-2,230]],[[27261,62555],[-1,19],[12,76],[6,1]],[[27278,62651],[5,46],[28,7],[21,17],[10,26]],[[27342,62747],[13,-13],[8,58],[14,-34],[-2,-77]],[[27334,62967],[26,78]],[[27342,62747],[-5,129],[-10,17],[-16,-22]],[[27311,62871],[5,35],[18,61]],[[27573,60142],[14,12]],[[27587,60154],[6,-53],[-4,-101],[-6,-48],[-8,3],[-7,-59],[-11,-34]],[[27557,59862],[-15,-17],[-15,-52],[-12,-18],[-2,-62],[-14,4],[-5,-46]],[[27494,59671],[-48,260]],[[20593,72571],[-36,0],[0,-303],[-12,-1],[0,-405]],[[20545,71862],[-119,0],[0,-103],[-36,0],[1,103],[-36,0]],[[20263,72766],[-3,70],[8,51],[22,-7],[25,-34],[29,5],[-5,-28],[14,4],[2,29],[20,-33],[3,31],[24,-34],[5,35],[16,-28]],[[23305,62405],[-1,-218]],[[23180,62187],[0,266],[-26,33]],[[22918,68387],[121,1]],[[24679,52619],[-96,-1]],[[24684,71167],[12,6],[25,-27]],[[24857,70836],[0,-370],[-32,0]],[[24753,70465],[0,202],[-35,-1],[0,101],[-35,0],[1,400]],[[21045,53785],[79,-1]],[[21271,53785],[9,0]],[[21280,53368],[-17,-31],[-29,97],[-22,24]],[[21212,53458],[-13,17],[-3,-24],[-31,6],[-18,22],[-5,45],[-19,-18],[-18,22],[-18,-3],[-8,36],[-4,53],[2,53],[-5,37],[1,51],[-6,19],[-12,-11],[-10,22]],[[22343,56766],[9,-36],[17,-24],[13,-3],[13,-26],[21,-4],[12,37],[10,-9]],[[22490,56327],[-147,-2]],[[22806,47905],[18,-220]],[[22824,47685],[-5,0]],[[22819,47685],[-11,152],[-24,16],[18,27],[-3,24]],[[22764,47904],[7,-54],[1,-84],[9,-1],[8,-80]],[[22789,47685],[-11,0],[-16,-101],[-9,13],[-12,-15],[-1,-28],[-93,57]],[[22647,47611],[0,99],[-40,18],[13,190]],[[24304,54779],[7,44],[14,-29],[0,29],[9,32],[16,-16],[12,65],[9,-2],[10,65]],[[24381,54967],[11,0],[0,-99],[42,0]],[[24431,54816],[-8,-50],[3,-103]],[[24426,54663],[-44,-1],[-18,-42],[-7,-42],[-11,2],[-4,-107],[-12,-34],[-3,-38],[-18,-34]],[[24270,54513],[7,100],[7,59],[11,41],[9,66]],[[24359,64199],[9,-53],[18,-14],[-1,-36],[16,-57],[10,-2],[1,-56],[11,-31],[19,-7]],[[24442,63943],[-8,-18],[-13,-99],[-1,-34]],[[24420,63792],[-126,10]],[[24294,63802],[0,51]],[[27513,63080],[13,-29],[54,-2],[52,-171],[8,-13]],[[27640,62865],[-24,-59],[-17,-18],[-10,18],[-21,-10]],[[27568,62796],[-24,49],[-59,40]],[[27134,62549],[8,41]],[[27142,62590],[10,12],[3,55],[31,-7],[3,83],[25,76],[9,5],[18,-77]],[[27241,62737],[13,-51],[18,-7],[6,-28]],[[27182,62369],[-46,81]],[[27568,62796],[-1,-142],[10,-33]],[[27560,62470],[-21,-11]],[[27539,62459],[-82,74]],[[20051,73979],[195,-1],[102,0]],[[20348,73978],[0,-103],[-11,0],[0,-101],[36,0],[0,-303],[61,0]],[[30059,66688],[3,7]],[[30062,66695],[18,-6],[-1,62],[15,36],[19,-18],[9,62],[36,32],[15,-30],[8,13]],[[30181,66846],[2,-72],[9,-136],[25,-47],[12,42],[14,-34],[-16,-90],[-23,-7],[-38,-35],[12,-50],[-18,-50],[-7,9],[-5,-59],[-7,30]],[[30123,66348],[-7,37],[4,56],[-10,8],[5,50],[8,0],[-9,41],[-21,-12],[-34,67],[5,15],[-5,78]],[[26982,59308],[14,27],[17,-23],[42,100],[15,26]],[[27085,59155],[-27,-157],[-15,-29]],[[27004,59029],[-2,39],[-11,23],[3,27],[-17,31],[-6,-8]],[[25656,59595],[83,7]],[[25739,59602],[48,4],[7,-22]],[[25741,59318],[-19,-64],[-20,45],[-5,-7]],[[25697,59292],[-21,-16],[-5,27],[-32,74]],[[25639,59377],[1,110],[-4,15],[5,92]],[[24432,56010],[29,0],[7,-52],[22,-2],[4,52]],[[24498,55970],[9,-25],[-14,-80],[18,16],[-1,51],[14,-27],[-4,-54],[-17,-10],[-3,-19],[10,-24],[17,14],[10,73],[5,-32],[-23,-90],[0,-64],[12,-68],[3,42],[10,13],[2,-23],[-13,-52],[2,-75],[-3,-23],[-14,-8],[-11,14],[-5,-39],[23,-62],[-13,-51]],[[24512,55367],[0,-8]],[[24485,55360],[-48,1]],[[24437,55361],[-7,0]],[[25990,63437],[0,-17],[-21,-2]],[[25969,63418],[-84,-1]],[[25847,64156],[58,2]],[[25847,64005],[0,151]],[[25969,63418],[0,-67],[-5,-16],[1,-185]],[[25882,63076],[-21,-2]],[[25758,63345],[-88,2]],[[24712,54858],[12,1],[23,48],[13,52],[22,4],[43,93],[7,70],[15,88]],[[24847,55214],[65,6]],[[26164,71367],[18,9],[30,-7],[32,14],[-22,-84],[-2,-135],[2,-45],[-8,-19],[9,-51],[16,-8],[9,16],[6,-26],[15,3],[17,-28],[34,49],[13,-4],[11,-46],[-1,-35],[25,28],[7,-7],[10,65],[19,24],[23,-19],[11,9],[8,39],[27,-5],[5,-30],[-10,-100],[7,-120],[1,-95],[-29,-2],[-8,-65],[15,-12],[5,21],[15,-4],[8,-38],[19,-19],[-13,-40],[24,-75],[12,-1],[20,-45],[8,38],[14,-35],[8,26],[-16,100],[14,-15],[41,13],[12,-15],[14,-91],[16,-31],[-10,-64],[-14,-20],[-27,39],[-31,-16],[-31,42],[-11,-12],[-27,1],[-27,23]],[[26477,70462],[-35,7],[0,101],[-35,0],[0,101],[-208,0],[-1,102],[-34,0]],[[26327,70327],[8,17],[9,-60],[65,-63],[-17,-58],[-23,18],[-14,61],[-28,85]],[[26477,70462],[-60,-26],[-13,-28],[-37,69],[-15,48],[-13,-7],[-13,30],[-10,-41],[2,-51],[-15,-32],[1,-45],[9,-63],[-12,-20],[-24,42],[-3,31],[-21,37],[-5,30],[-22,64],[-38,46],[-13,-7],[-33,49],[-18,-5],[-13,23],[-5,-20],[-19,11],[-25,-75],[-17,-73],[-9,-8],[-32,23],[-15,-14]],[[25989,70450],[0,322]],[[27093,52817],[9,-32],[17,-3],[18,-28],[7,-25],[33,-19],[17,-18],[14,15],[13,-19]],[[27221,52688],[4,-13],[-4,-113],[0,-106]],[[27221,52456],[-20,66],[-4,-47],[-13,13],[-2,31],[-8,-12],[2,36],[-18,-28],[-15,13],[-4,-44],[-7,1],[-19,-79],[-61,-226]],[[27052,52180],[0,104]],[[27640,62865],[12,-19]],[[26269,58090],[22,-43],[14,-68],[8,-16]],[[26236,57668],[5,32],[-9,23],[-9,118],[5,55],[17,121]],[[26617,52620],[71,-16]],[[26688,52604],[23,-6]],[[26711,52598],[10,-136],[-2,-49],[8,-20],[-2,-38],[12,-16],[3,-29]],[[26685,52165],[-28,0],[0,51],[-98,-1]],[[26559,52215],[9,33],[-5,25],[3,38],[10,0],[10,57],[-4,85],[18,53],[10,-1],[9,34],[-2,81]],[[24745,55707],[12,11],[2,31],[-12,42],[41,-49]],[[24907,55604],[-13,-64],[0,-34],[-8,-24],[-3,-81],[-11,-46],[-6,-79],[-19,-62]],[[24847,55214],[-104,152],[-7,1]],[[25164,59432],[3,0]],[[23990,68708],[0,51],[24,-10],[10,12],[0,30],[35,0],[0,101],[17,0],[0,98]],[[23828,60508],[122,-12]],[[23950,60496],[31,-2]],[[23832,60125],[1,213],[-6,1]],[[23827,60339],[1,169]],[[26051,55931],[81,-4],[13,-11]],[[26145,55916],[3,-64]],[[26164,55505],[1,-25]],[[26065,55479],[-17,-1]],[[20274,54191],[-67,0],[-1,-101],[-7,-18],[3,-38],[10,-25],[-1,-23],[16,-20],[5,-28]],[[20232,53938],[-214,0]],[[28357,64489],[24,73],[21,96],[17,60]],[[28419,64718],[0,29]],[[28515,64525],[-8,11],[-32,0],[-23,-35],[-8,14],[-75,-61],[-9,-12]],[[21904,68796],[-26,23],[-7,36],[9,127],[-5,35],[-24,39]],[[30141,67625],[-17,-68],[-4,55],[-21,-27],[-4,77],[-10,-40]],[[29982,67881],[-9,154],[57,26],[-6,124],[10,54],[-10,34],[-1,67],[-8,14],[0,52]],[[27617,60369],[13,32],[16,-8],[9,-22],[-4,-61],[-15,-53],[-12,47],[-10,12]],[[23464,64551],[0,-202],[4,0],[0,-177]],[[23468,64172],[-80,4]],[[27451,56634],[-28,-35],[-37,122],[-5,9],[12,101]],[[18427,67124],[0,-289],[53,1],[6,16],[13,86]],[[15303,67706],[96,-3],[0,-108],[16,1],[0,-99],[15,0],[0,-202],[17,0],[0,-199],[-16,-4],[0,-101],[-17,0],[0,-201],[3,-41]],[[15231,66942],[12,136],[0,52],[9,80],[6,99],[-6,42],[17,53],[8,43],[16,132],[10,127]],[[15843,66991],[-33,0],[-17,-66],[-27,-1],[0,-17],[-33,-51],[-17,-67],[-10,7],[-6,-59],[-43,-4],[-17,-27],[-39,5],[-22,-62]],[[15303,67706],[17,294]],[[24651,67195],[-6,1],[-15,-57],[-15,-17],[-14,-37],[-26,-18],[-4,-21],[-30,-60],[-21,8],[-5,-13]],[[24515,66981],[-6,107]],[[24509,67088],[0,60],[9,24],[6,52],[18,60],[-13,76],[-27,41],[-1,86]],[[27607,61119],[15,9],[19,-7],[13,-71],[23,-14],[16,5],[16,-48],[12,35]],[[27721,61028],[12,-14],[-19,-115]],[[27617,60764],[-3,15],[-31,-74],[-21,36]],[[27562,60741],[-17,34],[-4,41]],[[27621,60896],[4,-15],[7,65],[-5,12],[-6,-62]],[[27384,60509],[21,-39],[4,-26],[41,71],[19,47],[12,9],[4,-54],[6,-13]],[[27491,60504],[12,-125]],[[26844,52254],[14,-23],[16,19],[12,72],[-5,68],[-10,25],[-8,98],[11,45]],[[26938,52542],[0,-521]],[[26938,52021],[1,-36],[-18,-35],[-7,-65],[-9,-34],[13,-58]],[[26882,51664],[-21,35],[-9,43],[-1,36],[-8,5]],[[31470,38195],[13,24]],[[31501,38239],[4,7]],[[31491,38138],[-7,-14],[-1,35],[-7,-5]],[[31372,38083],[9,18],[-2,55],[5,36],[13,1]],[[31419,38095],[-11,-12],[-8,16]],[[23996,69196],[-9,33],[-22,0],[-14,-36]],[[23951,69193],[-6,24],[-2,148],[-5,-1]],[[23938,69364],[0,104],[57,-1]],[[19271,63277],[0,1168]],[[19530,64274],[-1,-189],[0,-323]],[[19529,63762],[0,-655]],[[19529,62918],[-10,-6],[-5,-36],[-256,9]],[[19258,62885],[3,26],[-7,87],[15,114],[-2,45],[18,55],[2,42],[10,23],[-26,0]],[[27587,60154],[12,44],[22,13],[12,-41],[33,103]],[[27666,60273],[34,-39],[5,-47],[8,4],[23,-131]],[[27736,60060],[-13,-217]],[[27612,59771],[-7,55],[-48,36]],[[6166,41601],[15,31],[4,-42],[8,-9]],[[23415,62959],[15,-41],[1,-29],[16,-31],[6,-32]],[[23453,62826],[-59,1]],[[29823,65864],[84,-6],[1,-18]],[[29911,65412],[-19,5],[-26,-12],[-56,39],[-2,-12],[-23,66]],[[29785,65498],[23,46],[-2,95],[-15,0],[0,143],[33,1],[-1,81]],[[29722,65346],[16,22]],[[29738,65368],[23,3],[-2,45],[19,39],[7,43]],[[29911,65361],[-3,-209],[-12,-8],[3,-76],[-8,-29]],[[29891,65039],[-7,19],[-17,2],[-21,-24],[-18,3],[-13,-24],[-16,28],[-6,-37],[-36,-13]],[[15680,69692],[6,34],[28,-17],[0,118]],[[15714,69827],[27,0],[2,33],[229,0]],[[15972,69860],[12,-68],[22,-34],[-2,-49],[7,-40],[-5,-46]],[[16006,69623],[4,-33],[-18,-28],[15,-103],[8,3],[2,-62],[-17,-33],[-17,-1],[-7,-30],[5,-77],[20,-46],[-5,-23]],[[23769,53708],[-18,30],[-24,-49]],[[23597,54009],[-8,67],[-9,26],[0,58]],[[27320,64552],[53,-1],[0,34],[21,0],[0,-34],[84,0]],[[27478,64246],[-18,-27],[-14,1],[-9,-39]],[[27437,64181],[-22,1],[0,16],[-32,2]],[[27320,64350],[0,202]],[[16598,59415],[13,0],[-1,-101],[15,-1],[0,-153],[-15,0],[-2,-153],[0,-406]],[[16425,58601],[-6,0]],[[15358,63504],[133,1]],[[15660,63268],[0,-59],[7,0],[6,-45],[2,-150]],[[15675,63014],[-1,-60],[-13,-14],[-25,2],[-11,-17],[-3,-112],[10,-83],[6,-17],[0,-51],[6,-49],[-14,-72],[-9,0],[-4,-119],[8,-8],[2,-51],[8,-28],[12,0],[4,-75],[6,-38],[16,-5],[-1,-17],[21,-36]],[[15693,62164],[-73,3],[-15,-15],[0,-36],[-65,-3],[0,-34],[-36,2],[-10,-12]],[[15494,62069],[-33,100],[-24,116],[14,78],[-1,42],[-14,126],[-16,123],[-7,105],[3,99],[13,132],[-5,52],[0,65],[-14,92],[-4,108],[-16,36],[-6,55],[-26,106]],[[20752,62489],[-103,1]],[[22428,51565],[-15,-9],[-11,-24],[-11,4]],[[22391,51536],[-39,72]],[[23919,59426],[123,0]],[[24042,59426],[0,-39],[-9,31],[-1,-439]],[[24017,58980],[-100,8]],[[22758,59038],[30,-6]],[[22788,59032],[0,-203],[9,30],[8,-6],[5,-38],[15,-10],[5,-23],[18,-3]],[[22847,58526],[-148,1]],[[28805,67542],[62,-59],[118,228]],[[28957,66855],[-10,-10]],[[28947,66845],[-53,-9],[-5,81],[-24,-2],[-3,124],[-12,-3],[-1,30],[-11,22],[-4,40],[-15,27],[-5,29],[-44,-8]],[[26591,57972],[7,36]],[[26693,58068],[6,-77],[10,-42],[16,11],[0,-94],[10,-28],[12,-65],[-1,-28],[11,-62]],[[26757,57683],[-104,-8]],[[26653,57675],[-13,18],[-16,96],[-14,35],[-7,45],[-21,-5]],[[26582,57864],[2,51],[9,30],[-2,27]],[[29216,68299],[53,20],[-14,314],[65,26]],[[29320,68659],[58,19],[9,-5],[27,28],[5,20],[16,4],[9,60],[35,10]],[[29479,68795],[9,-54],[4,-69],[-12,-80],[6,-126]],[[29486,68466],[-22,-87],[-5,-89],[-8,-79],[9,-27],[-1,-103],[10,-67],[-1,-78]],[[29468,67936],[-17,-6]],[[29451,67930],[-172,-69]],[[29279,67861],[3,61],[-16,10],[-13,29],[-18,-22],[-34,133],[22,52],[-7,175]],[[27759,61385],[-4,-34],[13,22],[12,-9],[-16,-78],[3,-11]],[[27767,61275],[-14,-97],[-21,-79],[-11,-71]],[[27085,61204],[-11,29],[5,80],[7,39],[14,-18],[-3,36],[10,6],[5,42]],[[27112,61418],[19,21],[8,-34],[3,27],[23,-1],[-1,-41],[13,-13],[9,-43],[15,-29],[-6,-42],[13,-10],[8,-47],[1,-46]],[[27217,61160],[-14,1],[-9,-20],[-6,-61],[0,-90],[13,-27],[0,-32]],[[27201,60931],[-17,-32],[-9,30]],[[27238,61139],[14,223],[28,119]],[[27280,61481],[22,-43],[5,10],[17,-45],[4,31],[14,-20],[7,20],[11,-34],[-2,-30],[19,-75]],[[27360,60964],[-9,16],[-22,3],[-5,47],[-62,16],[-2,51],[-12,50],[-10,-8]],[[27150,61904],[18,-84],[31,68]],[[27199,61888],[16,-73],[45,-18],[8,-15],[22,7]],[[27238,61139],[-15,-2],[-6,23]],[[27112,61418],[7,13],[2,51],[-4,60],[-28,12]],[[27089,61554],[5,85],[13,27],[35,51],[-8,67],[0,67],[16,53]],[[31591,38232],[1,7]],[[31592,38239],[10,-34],[7,21],[20,3]],[[31629,38229],[13,-45],[-7,-43],[-11,19],[3,-28],[-9,2]],[[31618,38134],[1,18],[-30,67]],[[31354,38275],[5,12]],[[31375,38302],[20,24]],[[19529,63762],[119,-1],[330,2]],[[25845,62734],[-69,1],[0,7]],[[25760,62886],[0,60],[11,51],[-3,42]],[[24179,53953],[14,116],[0,37]],[[24278,54105],[-1,-363],[1,-337]],[[24278,53405],[-5,20],[-17,-9]],[[24256,53416],[1,35],[-19,46],[-3,73],[-10,12]],[[24170,62035],[-28,-362]],[[24106,61676],[-61,193],[1,102]],[[27731,65656],[0,-263]],[[27478,65236],[0,13]],[[27478,65249],[0,407]],[[26692,61546],[9,-78],[2,-49],[16,-21]],[[26719,61398],[11,-19],[-5,-51],[-11,-19]],[[26714,61309],[-20,-36],[-13,-38],[-15,-21]],[[25622,58904],[36,-5]],[[25658,58899],[4,-65],[31,74],[38,-19],[48,-80]],[[25779,58809],[-2,-61],[6,-70],[-2,-76],[-14,1],[-11,-80],[4,-14]],[[25760,58509],[-26,-4]],[[25613,58673],[3,126]],[[22614,70412],[-8,1]],[[31277,37922],[6,-31],[1,-51]],[[31284,37840],[-15,-8],[-4,-24],[-15,30]],[[17490,71031],[17,-63],[31,0],[8,-48]],[[17398,70483],[0,281],[5,6],[-9,96],[63,0],[6,30],[27,-9],[1,85],[-14,60],[13,-1]],[[17304,70983],[0,135]],[[17304,71118],[89,1],[6,52],[21,49],[46,-1]],[[17466,71219],[2,-152],[22,3],[0,-39]],[[17372,70320],[-18,55],[-16,107]],[[17338,70482],[-11,93],[-7,11],[17,93],[-12,40],[0,63],[-8,54],[-17,51],[4,96]],[[22468,63505],[64,1]],[[22627,63505],[0,-405]],[[22472,62999],[-5,0]],[[22941,63504],[95,0]],[[23099,63503],[0,-505]],[[23004,62998],[-63,0]],[[23500,59034],[66,1]],[[23585,58566],[6,-140]],[[23591,58426],[-93,0]],[[26653,57675],[-19,-1]],[[26634,57674],[-19,-7],[-89,1]],[[26526,57668],[-19,0]],[[26507,57668],[14,45],[-3,21],[16,40],[19,76],[7,-6],[22,20]],[[26757,57683],[28,31]],[[26773,57095],[-15,48]],[[26758,57143],[-18,80],[-17,7],[-30,88]],[[26693,57318],[-4,34]],[[26689,57352],[9,50],[-1,36],[26,105],[31,68],[3,72]],[[23733,58568],[14,-1]],[[23747,58567],[0,-34],[-14,2],[-6,-33],[0,-50],[-25,1],[-1,-101],[15,-1],[-5,-36],[2,-49],[-5,-28],[7,-19],[-13,-18]],[[23702,58201],[-19,5],[-5,-17],[7,-42],[-19,-45],[-28,-9],[-11,22],[1,43],[-13,46],[-14,-23]],[[23601,58181],[-10,245]],[[31708,38299],[11,-21],[12,13],[9,-36],[-17,-36],[-12,19],[-3,61]],[[24933,53029],[-20,0]],[[24913,53029],[-30,-1]],[[24883,53028],[0,85],[-24,0],[-5,68],[-19,-1],[0,50],[-7,1],[-2,186]],[[24826,53417],[0,68],[22,-4]],[[24856,56710],[59,-1],[0,33]],[[24858,56399],[0,283],[-2,28]],[[21996,63910],[29,2]],[[15582,70936],[238,2],[34,-2]],[[15854,70936],[1,-3],[-2,-383]],[[15584,70688],[-2,248]],[[25718,57673],[15,0]],[[25733,57673],[0,-221],[-2,-293]],[[25644,57317],[-10,44],[-23,46],[-11,-6]],[[26123,52522],[59,-3],[1,51],[66,-2]],[[26249,52568],[-16,-95],[-3,-80],[5,-17],[-14,-25],[5,-13],[-19,-210],[-9,-33]],[[26198,52095],[-77,1]],[[26917,50750],[21,3],[11,-40],[22,-29],[8,-32]],[[26880,50342],[-13,31],[4,42],[-9,109],[12,64],[-13,79],[-7,23]],[[24512,55367],[70,-4]],[[24636,54961],[8,-30],[-8,-20]],[[25880,61667],[62,-6]],[[25979,61384],[-1,-109],[-5,-70],[-6,-21]],[[21486,60002],[-4,0]],[[27101,57897],[22,-173],[11,-120],[12,-23]],[[22783,62492],[0,-202]],[[22628,62290],[0,304]],[[19895,71048],[157,1],[6,-17],[0,-84],[35,-1],[0,-103],[6,-1],[0,-200],[19,3],[0,-310]],[[20118,70336],[-32,0],[0,50],[-34,0],[0,51],[-70,0],[0,101],[-24,0]],[[22882,66240],[0,477]],[[22989,66441],[-25,0],[-1,-287]],[[22963,66154],[0,-16],[-27,0]],[[24045,70173],[16,40],[20,148],[20,47],[25,23],[8,38],[14,-13],[10,56],[24,-7],[6,59],[10,10],[0,96]],[[24198,70670],[68,0]],[[24882,67235],[9,38],[21,15],[3,48]],[[25113,67225],[-1,-408]],[[25013,66814],[0,14],[-131,1]],[[24882,66829],[0,406]],[[24496,51891],[33,44]],[[24529,51935],[28,19],[12,-15]],[[24569,51939],[1,-103],[9,1],[0,-51],[11,1],[0,-35]],[[24590,51752],[-17,-132],[-16,-90]],[[24557,51530],[-22,-103]],[[24531,51512],[2,119],[-12,42],[-15,13],[-7,68],[-12,75]],[[28887,65414],[-6,416]],[[28881,65830],[23,0]],[[28904,65830],[12,0],[14,-59],[5,4],[8,-100],[15,4],[17,-22]],[[28975,65657],[20,-61],[-8,-32],[14,-21],[3,-150],[-7,-26]],[[28875,64937],[18,31],[-6,446]],[[28934,66697],[12,47],[1,101]],[[29082,66836],[32,-40]],[[29096,66434],[-17,-15],[-19,8],[-35,-51],[-14,-46],[-21,-10],[-29,-72],[-18,10],[-13,-53],[-30,-9]],[[28900,66196],[6,46],[-3,32],[9,41],[-9,73],[11,88],[11,27],[-1,113],[10,81]],[[22701,57514],[205,-1]],[[22906,57513],[0,-253]],[[22730,57108],[0,199],[-29,4]],[[29146,68274],[70,25]],[[29279,67861],[-44,-18],[15,-416]],[[29250,67427],[6,-137]],[[29256,67290],[-24,-6],[1,-31],[-28,-8],[-1,31],[-58,-16],[-50,68]],[[23868,58992],[-1,-51],[10,-1],[-1,-131],[-10,-17],[-6,-84],[-5,1],[2,-138]],[[23857,58571],[-50,6]],[[23807,58577],[-60,7],[0,-17]],[[28708,65829],[101,-1],[72,2]],[[28887,65414],[-71,0]],[[28705,65425],[-1,101],[-7,303]],[[26322,51623],[29,47],[0,-29],[-16,-37],[-11,-6],[-2,25]],[[26223,51829],[5,49],[129,-3]],[[26357,51875],[8,-26],[13,15],[9,-29],[27,-19]],[[26414,51816],[-1,-71],[-10,-7],[-15,15],[-5,26],[-24,-22],[-31,-73],[-65,-132],[-6,2],[7,44],[-10,12],[-7,-39],[-15,-41],[-36,1],[13,-49],[2,-38],[16,-22],[30,53],[29,40],[27,84],[3,-13],[-24,-82],[-28,-43],[-35,-66],[-12,-14],[-10,33],[-16,22],[-24,51]],[[26167,51487],[6,39],[27,76],[19,4],[5,32],[-9,120],[10,47],[-2,24]],[[26430,52660],[-15,-104],[-10,-18],[-5,-60]],[[26400,52478],[0,0]],[[26400,52478],[-2,-53],[-6,-23],[-28,-14],[-35,-74]],[[26329,52314],[-10,0],[0,34],[-9,0],[0,50],[-19,-1],[0,69],[-10,17],[-18,0],[0,84],[-14,1]],[[26249,52568],[7,15],[12,107]],[[26198,52095],[-11,-126],[5,-7],[0,-50],[6,-23],[24,-42],[1,-18]],[[26167,51487],[-18,7],[-17,-28],[-13,94],[-5,119],[8,42],[0,-105],[6,-91],[7,-22],[10,39],[1,97],[-24,135]],[[26488,52181],[0,187],[9,45],[0,57],[18,0],[-8,101],[0,73]],[[26580,52628],[37,-8]],[[26559,52215],[-5,-26],[-22,-41],[-4,-66],[-6,-3],[-11,-119]],[[26511,51960],[-9,22],[-15,-9]],[[26487,51973],[1,208]],[[26835,49734],[4,-128],[9,-7],[-2,112],[-4,23]],[[26884,49736],[1,-178]],[[26885,49558],[-11,8],[1,-65],[-11,-28],[11,-37],[16,-6],[11,-110],[-10,-42],[0,-62],[-4,-27],[-21,-6],[-3,-32],[7,-38],[-9,-30],[-4,40],[2,83],[-14,85],[-9,26],[-8,58],[6,182],[-5,66],[-4,111]],[[22229,57818],[170,0],[4,-17],[24,26],[8,-31]],[[22435,57796],[0,-283]],[[22378,57210],[-49,0],[0,51],[-28,0]],[[23807,58577],[-4,-458]],[[23715,57931],[-15,3],[2,267]],[[22884,59436],[1,-24],[18,-35],[19,18],[10,58],[19,52],[9,-18],[9,-85],[-2,-46],[10,-20],[11,6],[10,-51],[7,-9],[10,30],[5,-40],[-10,-20],[-4,-38],[16,-20],[16,39],[7,-54],[13,-22],[13,-43],[23,-5],[4,-27],[-7,-47]],[[23091,59035],[-9,0]],[[22992,59033],[-55,-2],[0,102],[-29,0]],[[22908,59133],[0,101],[-30,0],[0,203],[6,-1]],[[22935,57107],[87,0]],[[23022,57107],[0,-100],[30,-2]],[[23052,57005],[0,-304]],[[23052,56701],[-13,0],[0,-50],[-37,0]],[[23002,56651],[-9,55],[-14,13],[-74,0]],[[23785,64175],[0,-123],[3,1],[1,-243]],[[23789,63810],[-1,-153]],[[23663,63950],[0,100],[-5,0],[0,118]],[[24934,53935],[70,19]],[[25004,53954],[0,-423]],[[25004,53531],[-14,0]],[[15543,70934],[39,2]],[[15490,70789],[-34,9],[-3,34],[-13,-8]],[[27052,52080],[103,4],[0,-81]],[[27155,52003],[-3,-91],[2,-31],[22,-63],[-1,-54],[8,-88]],[[27183,51676],[-65,-4],[-14,-43],[-13,-7],[-8,-54],[-19,-9],[-12,-24]],[[27052,51535],[1,33],[-1,461]],[[27052,52029],[0,51]],[[25989,70450],[-16,-23],[2,-34],[-23,37],[-21,17],[-24,-14],[-10,11],[-23,-24],[-13,-42],[-2,-63],[-9,-72],[-14,4],[-13,-42]],[[25823,70205],[1,161],[-9,0],[0,305],[-35,1]],[[24276,71309],[20,-30],[34,11],[75,77]],[[24198,70670],[0,303]],[[26508,54807],[-2,-10]],[[26506,54797],[-12,1]],[[26494,54798],[14,9]],[[26438,54623],[0,28],[16,6],[21,122],[19,19]],[[26494,54798],[10,-18]],[[26504,54780],[23,-1],[24,-43]],[[26551,54736],[3,-101],[-3,-106]],[[26458,54458],[-11,1],[1,75],[-11,1],[1,88]],[[23935,55375],[69,-1]],[[24004,55374],[74,-3]],[[15693,62164],[20,-53],[16,-109],[12,-5],[6,-45]],[[15747,61952],[-5,-81],[7,-44],[21,-47],[4,-59],[13,-20],[-4,-33],[14,-52],[-3,-14],[18,-73],[-3,-27],[10,-40],[5,-62],[-6,-42],[-10,-2]],[[15808,61356],[3,-16]],[[15811,61340],[-12,-29],[-14,-9]],[[15785,61302],[-22,90],[-22,-7],[-26,30],[-47,133],[-16,-5],[-10,-24]],[[15642,61519],[-17,7],[-1,67],[-17,106],[-20,51],[-14,19],[-22,64],[-37,176],[-20,60]],[[22906,57641],[0,-128]],[[22700,58073],[0,2]],[[22910,63504],[0,406]],[[23497,55777],[9,-37],[8,-3]],[[23540,55214],[-14,0]],[[23522,55243],[-14,25],[-14,66]],[[23494,55334],[3,443]],[[22700,58121],[-1,406]],[[23204,55609],[21,41],[15,59],[16,-3],[25,66],[23,-13],[28,28],[16,-12],[10,18]],[[23259,55308],[-1,22],[-54,0]],[[29083,67050],[61,-72],[124,-3]],[[29268,66975],[1,-32]],[[29269,66943],[2,-68],[-48,-99],[-2,-18]],[[22956,60009],[63,0]],[[23165,60009],[0,-669]],[[23165,59340],[0,-306],[-74,1]],[[22884,59436],[4,26],[26,26],[4,28],[-9,30],[-23,-21],[-15,12]],[[25627,53025],[106,-2]],[[25729,52312],[-34,-19]],[[25695,52293],[0,19],[-43,-28],[-29,-33],[-15,17],[1,41],[21,25],[8,110],[-9,41],[-15,23],[-13,66],[-4,123],[-8,2],[-3,79],[5,30],[-6,40],[9,48],[-1,43],[9,7],[7,35],[18,44]],[[27242,50557],[3,-36],[10,-16],[27,-2],[2,-28],[11,-31],[11,11],[9,43],[11,-18],[4,-46],[-3,-27],[13,-66],[-1,-22],[9,-72]],[[26389,53534],[61,-1],[19,5]],[[26469,53538],[-3,-30],[-12,-25],[-1,-43],[-32,-39],[-14,-96],[-40,-135],[0,-53]],[[26061,57664],[37,-1]],[[26098,57663],[31,0]],[[26068,57520],[-7,144]],[[26383,53750],[43,0]],[[26426,53750],[71,2],[7,31]],[[26504,53783],[6,-29],[-1,-211]],[[26509,53543],[-40,-5]],[[26509,53543],[0,-127]],[[26509,53416],[-1,-300]],[[26265,52709],[-11,29],[-6,75],[-2,83],[-11,52],[-6,79]],[[26229,53027],[-6,87]],[[22788,59032],[60,0],[-1,101],[61,0]],[[26153,59576],[84,-13]],[[26132,60234],[-8,-28],[-41,-68]],[[23021,55137],[0,197]],[[31858,38286],[13,39],[11,-4],[15,-28],[-13,-4],[1,-49],[-9,20],[-13,-5],[-5,31]],[[31846,38320],[13,6],[-2,-23],[-11,-2]],[[20681,54191],[0,-218],[2,-947],[1,-191],[-3,0],[0,-201]],[[20663,52594],[-7,67],[-15,0],[-14,66],[-12,10],[-3,24],[-15,34],[-12,-4],[-7,28],[-31,39],[0,39],[-44,118],[-13,107],[-12,37],[-18,26],[-9,33],[-9,2],[-2,36],[-24,106],[-20,35],[-4,54],[-12,25]],[[20380,53476],[11,43],[0,64],[-10,0],[-1,610]],[[27199,61888],[-7,69],[7,178],[-1,89],[6,19]],[[25131,53986],[10,2]],[[25141,53988],[41,11],[38,24],[42,44]],[[25265,53839],[4,-306]],[[25269,53533],[-109,-2]],[[25131,53531],[0,455]],[[24717,67229],[1,-452]],[[24718,66777],[0,-356]],[[24587,66617],[-23,27],[-24,61],[-10,154],[-12,25],[-3,97]],[[24407,53901],[40,2],[6,-24]],[[24453,53879],[-5,-25],[-1,-106],[-18,0],[-10,28],[-5,-38],[9,-30],[18,13],[4,-32],[-12,-35],[-20,-18],[1,-74],[13,-75],[0,-29],[-9,-7],[-8,29],[-4,50],[-9,-39],[7,-16],[1,-45],[12,-37],[-2,-43],[-17,-20],[-18,7],[-1,-38],[15,-50]],[[24394,53249],[-10,-67],[1,-28],[16,-50],[-7,-58],[-13,-21]],[[24357,53078],[5,71],[-4,34],[12,62],[-38,57],[-6,34]],[[24326,53336],[3,31],[-11,11],[0,61],[5,25],[16,-2],[-19,57],[0,84],[9,-6],[5,-60],[19,-9],[0,42],[-17,7],[5,67],[-13,48],[3,54],[12,35],[10,-40],[9,33],[-3,39],[5,65],[17,-3],[10,38],[15,-46],[1,34]],[[23448,54622],[0,-271]],[[23448,54351],[-132,-3]],[[23316,54348],[-5,13],[4,64],[-7,39],[11,70],[0,70]],[[29287,69318],[12,-335],[5,1],[6,-156],[3,2],[7,-171]],[[29092,69317],[18,5],[91,-8],[53,-1],[33,5]],[[24398,54053],[18,56],[-5,34],[9,36],[-4,35],[6,80],[-4,66],[3,67]],[[24421,54427],[48,-1],[14,33],[10,-24],[14,41],[14,4],[3,-44]],[[24544,54335],[6,-5]],[[24550,54323],[-14,-41],[-5,-36],[-13,39],[-5,-25],[19,-26],[0,-50],[-19,-14],[-7,-25],[2,-50],[-19,-56]],[[24470,53894],[-17,-15]],[[24407,53901],[-10,51],[3,37],[-2,64]],[[24394,53249],[4,38],[10,17],[3,-28],[12,15],[5,107],[12,-5],[23,29],[10,24],[26,-4],[15,-12]],[[24514,53430],[18,-30]],[[25141,53988],[-1,126],[0,337]],[[22407,69607],[1,0]],[[25504,57687],[5,63],[-1,98],[5,56],[0,242]],[[25004,53531],[71,0]],[[25021,52921],[0,106],[-3,11]],[[15540,71409],[58,2]],[[15598,71411],[0,-34],[152,-3],[115,1]],[[16073,71399],[7,-48],[17,-19],[-2,-46],[-9,-3],[-1,-41],[7,-32],[-7,-73],[-11,-29],[5,-67],[14,-76],[-3,-26],[-35,0]],[[16055,70939],[-201,-3]],[[27736,60060],[15,4],[17,-47],[5,19],[-8,42],[13,-3]],[[27778,60075],[11,10],[0,32],[20,40],[10,-25],[10,31],[22,-72],[15,24],[10,-33]],[[27841,59477],[-35,-1]],[[27771,59476],[-12,0]],[[28050,62940],[34,-59]],[[28084,62881],[-4,-62],[5,-28],[-6,-36],[7,-11],[-23,-106],[6,-15],[-11,-54],[10,-36],[-16,-62],[-13,-29]],[[28039,62442],[-15,50],[-12,10],[-5,-25],[-21,34],[-10,2],[-46,57],[-23,45]],[[16179,63034],[19,49]],[[16122,62379],[-7,21],[-17,-24],[-13,-42]],[[16085,62334],[-21,-5],[-15,-23],[-9,-62],[-10,162],[7,37],[-9,108],[1,54],[-6,38],[3,40]],[[28250,65829],[39,1]],[[28292,65224],[-109,-5]],[[28124,65386],[-1,444]],[[22647,47611],[0,-324],[-2,-15]],[[22645,47272],[-5,11],[-23,-17],[-4,18],[-13,-1],[-3,-29],[-10,31],[-20,-14],[-8,22],[-6,-22],[-14,20],[-8,30],[3,25],[-16,1],[-3,44],[-15,-1],[-21,75],[-9,-11],[-25,48]],[[22445,47502],[26,222],[27,210],[21,183]],[[28755,60650],[28,6],[14,-30],[-7,-64],[27,-28],[11,16]],[[28828,60550],[5,-14],[-18,-91],[-12,-79],[-9,-11],[1,-57],[-11,-86],[-18,-64],[-16,2],[4,-35],[-9,-5],[-1,84],[-10,55],[-4,61],[2,70],[9,59],[3,89],[11,122]],[[26399,54672],[9,16],[-1,-35],[12,0],[-1,-29],[20,-1]],[[26389,54384],[0,76],[5,0],[0,76],[6,0],[-1,136]],[[24390,67090],[119,-2]],[[28543,59191],[16,38],[8,-6],[15,32]],[[28623,58934],[-13,-59],[-16,-22],[-17,1],[-8,31],[-20,12],[-12,121],[0,61],[12,78],[-4,12]],[[25798,57154],[5,-52],[18,-30],[12,5],[9,45],[15,-10],[10,81],[-7,23]],[[25860,57216],[50,0],[0,-91],[14,1],[3,-65],[8,11]],[[25867,56634],[-30,123],[-12,63]],[[25825,56820],[-7,51],[-29,2]],[[28701,66308],[31,-1],[43,8]],[[28775,66315],[6,-182],[7,-12],[50,-1],[1,-62],[61,0]],[[28900,66058],[-1,-178],[5,-50]],[[29269,66943],[24,-26],[14,-42],[14,16],[3,-70],[24,-84]],[[23007,52672],[31,57],[19,139],[14,66],[27,61]],[[23118,52820],[-4,-30],[6,-32],[-4,-70],[4,-59],[-7,-69],[16,-127],[7,-80],[-14,-107]],[[23082,52303],[1,39],[7,4],[-6,33],[-14,35],[-5,79],[-15,-3],[-3,56],[-17,19],[-7,28],[-25,15],[9,64]],[[28198,61985],[8,1],[10,-57],[4,-105],[12,-32],[22,-137],[12,16],[16,-19]],[[28282,61652],[5,-49]],[[28287,61603],[-8,12],[-16,-20]],[[28263,61595],[-19,37],[-3,-33],[-13,20],[-22,0],[-1,-13],[-33,-49],[-2,-19],[-16,-1]],[[28154,61537],[3,19],[-10,48],[6,20],[-6,56],[-31,114]],[[22897,52511],[95,202]],[[22992,52713],[15,-41]],[[22987,52207],[-15,28],[-14,-1],[-13,83],[-23,78],[-13,95],[-12,21]],[[25119,52114],[15,7],[15,31],[-4,-29],[-21,-27],[-5,18]],[[25071,52140],[21,-1],[8,13],[-5,-43],[-10,-7],[-17,26],[3,12]],[[25148,52650],[0,-300],[11,-16],[8,-35]],[[25167,52299],[-1,-17],[-21,38],[-22,-3],[-31,-27],[-28,-42],[-30,-33],[4,54],[-17,27]],[[25021,52296],[-1,320]],[[23205,55831],[0,61]],[[23205,55892],[9,-4],[18,43],[22,-29],[11,19],[21,-11],[11,-37],[10,11],[21,-50],[30,-37]],[[23358,55797],[1,-3]],[[18457,60592],[0,-581]],[[21556,53119],[140,-1]],[[21783,52197],[-12,-1],[-210,1]],[[21561,52197],[6,46],[10,22],[9,-8],[-9,73],[-11,22],[11,43],[6,74],[9,46],[-5,32],[4,37],[-17,40],[-16,-2]],[[21558,52622],[-2,33],[-9,21],[-2,61],[-5,7],[1,51],[-8,84],[-9,20],[5,25],[-22,50],[-11,40],[-6,-12],[-10,28],[-9,-19],[-16,9],[-17,42],[-25,6],[-9,30],[-19,30]],[[27155,51076],[65,64],[4,22]],[[27316,51195],[15,-139],[29,-229],[59,-372]],[[27419,50455],[-66,-1],[1,-207],[-6,0]],[[27166,51020],[-11,56]],[[28322,66503],[35,-1]],[[28357,66502],[62,0],[-2,-89],[12,7],[0,-26]],[[25375,66812],[67,-1]],[[25442,66811],[17,-67],[-4,-89],[-7,-47]],[[25309,66542],[0,269]],[[23888,56980],[128,-9],[0,65],[9,4],[0,67],[34,-3]],[[24093,57000],[-2,-308]],[[24091,56692],[-58,8]],[[24033,56700],[-40,5],[-1,88],[-16,11],[-30,3],[0,34],[-44,4],[0,68],[-15,0]],[[24410,61352],[-1,68],[47,-1]],[[23040,68894],[0,203]],[[26480,55701],[-13,18],[0,26],[-27,0],[-1,20],[-29,0]],[[25974,54510],[11,19],[6,-69],[118,3]],[[26109,54463],[2,-102],[5,0]],[[26116,54361],[-5,-9],[0,-144],[-24,-2],[0,-16],[-22,-7],[-3,-38],[-13,-58],[-2,-36]],[[26047,54051],[-37,0],[0,101],[-26,0],[-3,93],[-29,5]],[[16371,60748],[30,-204],[4,-67],[23,-127],[1,-35],[26,-50],[9,-41]],[[16140,59965],[-8,26],[0,49],[10,50],[-10,25],[5,52]],[[28486,60450],[3,64],[19,21],[15,-18],[8,37]],[[28535,60367],[0,-65],[18,1]],[[28573,60259],[3,-36],[-9,-18]],[[28567,60205],[-11,63],[-22,-9],[-8,-25],[-10,46],[-18,11],[-4,23]],[[24164,54767],[0,-102],[29,-101],[0,-51]],[[24193,54360],[-140,1]],[[28482,59479],[0,10]],[[28482,59489],[105,-2]],[[28587,59487],[14,-46]],[[28601,59441],[0,-49],[10,-106]],[[24440,68141],[29,0],[-5,62],[20,40],[13,-22],[6,40],[13,-9]],[[24516,68252],[0,-10],[50,-1]],[[24566,68241],[17,1],[0,-403]],[[24479,67981],[-28,125],[-11,35]],[[26506,54797],[-2,-17]],[[26385,54844],[10,0],[0,57],[8,25],[4,55],[7,0],[0,48],[15,31]],[[26429,55060],[8,-29],[6,19],[9,-57]],[[26452,54993],[27,-19],[14,-43],[-4,-44],[5,-37],[14,-43]],[[26399,54672],[-4,83],[-7,9],[-6,48],[3,32]],[[28601,59441],[15,-50],[31,-59],[9,-36],[15,-17],[7,-52],[9,-5],[-10,-27],[9,-8]],[[28686,59187],[10,-33],[9,-58],[10,-17],[6,-52],[-9,-23],[-24,-14],[-21,71],[-6,5]],[[28276,62272],[-10,-65],[-5,-74],[50,-311]],[[28311,61822],[-29,-104],[0,-66]],[[28100,61492],[10,-45],[21,24],[-2,15],[16,17],[9,34]],[[28263,61595],[-3,-30],[-67,-253]],[[28768,66673],[129,25],[0,-8],[37,7]],[[28900,66196],[0,-138]],[[28775,66315],[-2,148],[-5,210]],[[27878,60470],[-26,-61],[-10,-11],[-12,27]],[[27830,60425],[7,43],[-10,44],[16,44],[7,-3]],[[23022,57107],[1,203],[29,0],[0,102]],[[23052,57412],[88,0]],[[23140,57412],[0,-102]],[[23140,57310],[0,-203],[-15,0],[0,-101],[-73,-1]],[[23170,57859],[-8,-12],[-21,-107],[-1,-328]],[[23052,57412],[0,190],[-5,-32],[-18,8]],[[23029,57578],[0,239],[13,0],[0,203]],[[22844,52394],[53,117]],[[27778,60075],[52,350]],[[27951,60249],[-23,-213]],[[22949,57566],[6,0],[8,-50],[9,13],[-2,72],[9,-1],[6,-32],[25,14],[4,-39],[9,-6],[6,41]],[[16478,63180],[1,13],[1,393],[0,756],[-1,34],[0,505]],[[16479,64881],[0,943]],[[16671,64621],[-1,-515],[-7,-1],[0,-604],[32,1]],[[16695,63502],[-1,-116],[5,0],[0,-105],[11,-25],[0,-125],[-5,-35]],[[16705,63096],[-20,-2],[-7,-32]],[[16678,63062],[-24,-40],[-27,-3],[-1,-22],[-17,0],[-14,-21],[-11,-42],[-20,6],[-1,-81],[12,0],[-1,-50],[-8,-17],[8,-67],[-5,0],[0,-59],[-10,-35]],[[16559,62631],[-11,-8],[-5,-34],[-16,-8],[-15,-50],[-34,0]],[[16478,62531],[-1,176]],[[28975,65657],[102,193]],[[29077,65850],[91,-164],[-34,-152],[51,-118],[7,-61]],[[28288,63734],[2,-16],[59,138],[10,4],[-17,-60],[27,43],[1,-29],[22,19],[74,31],[17,21]],[[28483,63885],[-3,-45],[18,-74]],[[28498,63766],[-10,-2],[-9,-32],[6,-36],[-20,-2],[-14,-19],[-30,-91]],[[28421,63584],[-14,-47],[-61,-41],[-18,-58]],[[28328,63438],[4,33],[-21,88],[-9,82],[-13,39],[-1,54]],[[27539,62459],[-5,-105],[0,-67],[-8,-18],[-5,-62],[-6,-14],[-6,-124],[5,-48]],[[27496,62035],[3,45],[-11,26],[3,38],[-14,34],[-16,-4],[-7,53]],[[23965,52355],[18,1],[0,17],[81,-2],[0,59],[40,0]],[[23965,52331],[0,24]],[[21981,65125],[-129,0]],[[21852,65125],[1,403]],[[26109,54667],[29,1],[-1,68],[77,5],[-1,40],[16,3]],[[26229,54784],[2,-66],[9,-36],[-5,-52]],[[26252,54459],[-13,-14],[2,-24],[-14,-21],[-13,-52],[2,-85]],[[26216,54263],[-38,-1],[-20,100],[-42,-1]],[[26109,54463],[0,204]],[[24433,59426],[12,-1]],[[24445,59425],[14,-37],[2,-52],[11,0],[0,-36],[10,-18],[4,-50],[0,-85]],[[25958,59578],[-64,13]],[[25837,59604],[1,146]],[[24765,52052],[28,31]],[[24793,52083],[14,-29]],[[24807,52054],[-5,-224],[-4,-63],[9,-12],[11,15],[3,28],[14,-58]],[[24835,51740],[-6,-49],[-11,-28],[0,-105],[15,-75],[3,-59],[5,-7],[-1,-80],[3,-18],[0,-98],[5,-22],[8,-110],[8,-48]],[[24864,51041],[-52,-152]],[[24812,50889],[9,77],[16,79],[-8,39],[-2,43],[4,70],[-8,38],[-24,18],[-14,101],[8,7],[1,126],[-21,16]],[[29300,65178],[13,57],[113,45]],[[29426,65280],[-4,-187]],[[29300,65041],[0,4]],[[29236,64822],[-7,11]],[[29426,65280],[3,163]],[[29429,65443],[6,-33],[14,-135],[1,-36],[16,27],[3,-30],[18,-24]],[[29543,64863],[-6,-25],[-13,23],[-24,-58],[-7,13],[-23,-28],[5,-22],[-10,-32],[-29,-11],[-22,-54],[-9,15],[-15,-35]],[[24246,59427],[2,344]],[[24375,59881],[0,-118],[-4,0],[-2,-189],[2,-146]],[[90204,32599],[5,15],[34,16],[21,137],[6,65],[7,-11],[7,-43],[14,-11],[-10,-88],[-32,-109],[-9,-44],[-2,-111],[-12,-56],[-18,30],[-7,101],[8,50],[-12,59]],[[22992,52713],[3,31],[-10,25],[3,29],[-16,70],[3,49],[-13,-8],[-7,32],[-4,85],[-7,77],[-10,46]],[[16035,61539],[3,22],[17,33],[-3,80],[8,14],[-1,33],[-10,9],[-3,43],[8,6],[4,95],[-12,3],[-3,45],[-8,2],[-11,49],[8,58]],[[16032,62031],[33,-1]],[[16065,62030],[96,-27]],[[15960,61251],[18,-6],[15,31],[9,-2],[7,86],[20,42],[6,137]],[[23348,58023],[9,12],[20,-47],[18,45],[0,57],[15,26],[20,100]],[[23430,58216],[7,-6],[6,-46],[15,-6],[16,-28],[-7,-42],[25,15],[4,-44]],[[23496,58059],[0,-141],[-32,0],[0,-168]],[[23464,57750],[-117,0]],[[23347,57750],[0,119],[-30,0],[1,158]],[[23464,57750],[0,-135],[-19,0],[0,-101],[-18,0],[0,-203]],[[23301,57311],[2,202],[0,203],[44,0],[0,34]],[[27478,64058],[1,-90]],[[27448,63962],[9,80],[-9,84],[-11,55]],[[23800,55915],[67,-7]],[[23899,55872],[-15,-135],[-6,-82],[-11,2],[-2,-281]],[[23856,55376],[-79,1]],[[23777,55377],[-15,83],[1,52],[16,35],[3,-25],[11,43],[12,75],[-7,39],[13,13],[-4,30],[8,22],[-11,22],[9,36],[-7,4],[-13,49],[7,60]],[[29050,63047],[40,141]],[[29090,63188],[21,-71],[0,-44],[11,-5],[25,-66],[15,-21],[16,6]],[[29208,62920],[3,-24],[-10,-55],[-34,-101],[-23,-52]],[[29144,62688],[-13,12],[-8,-20],[-23,-5],[-45,41]],[[29020,62938],[30,109]],[[18072,65824],[-88,0],[-58,9],[-65,-7]],[[17861,65826],[0,899]],[[22533,53511],[1,-7],[-83,-210]],[[27163,64280],[1,287]],[[27320,64653],[0,-101]],[[27256,64261],[-42,5],[-50,-24]],[[25846,55809],[10,-44],[-7,-20],[3,-47],[-10,-23],[-11,8],[1,-38],[-11,-29],[2,-26],[-12,-27],[12,-63],[-8,-26]],[[25815,55474],[-6,-17],[-2,-79]],[[25706,55412],[-15,17],[-10,40],[0,69],[-15,9],[-1,94]],[[15441,69375],[0,37]],[[15475,68998],[-28,0],[-6,21],[0,356]],[[22319,62494],[153,-1]],[[22472,62493],[1,-1],[0,-304]],[[22473,61986],[-153,0]],[[23392,62390],[0,-93],[6,20],[25,-20],[5,21]],[[23428,62318],[0,-284]],[[22658,63505],[126,0]],[[15808,61356],[59,-1],[-5,29],[6,39],[-7,57],[8,11],[-5,51],[40,0],[-7,80],[-11,52],[7,98]],[[15893,61772],[13,5],[12,-34],[20,52],[23,6],[20,-18],[13,17],[13,-12],[0,-247],[28,-2]],[[15847,61244],[-9,53],[-27,43]],[[24132,59427],[106,0]],[[24225,59001],[0,-86],[-30,2],[-1,-101],[-30,2]],[[24165,58919],[1,84],[-20,69],[6,25],[-4,48],[-20,8],[6,41],[-14,9],[11,52],[-12,-10],[-4,19],[16,32],[1,131]],[[28645,59881],[4,-4],[-3,86],[17,6],[23,-39]],[[28686,59930],[-3,-120],[-8,14]],[[28675,59824],[-18,-21]],[[28657,59803],[-12,78]],[[20988,55314],[14,0],[0,500],[12,0],[0,203],[59,1]],[[21073,56018],[127,0]],[[21124,54191],[-110,-1]],[[24421,54427],[-12,0],[4,58],[-1,55],[15,19],[-4,58],[10,2],[-7,44]],[[21045,53785],[-6,25],[2,37],[-10,6],[-9,44],[-9,-10],[-20,36],[-9,137],[-16,-21],[-18,136],[-8,15]],[[20633,63454],[-6,-2]],[[20627,63452],[6,2]],[[20617,63402],[10,50]],[[20627,63452],[6,2]],[[20633,63454],[10,49]],[[20669,63503],[-8,-37],[-7,15],[0,-70],[-11,-8]],[[20635,63455],[0,0]],[[23461,57108],[133,1]],[[23592,56739],[-2,-290]],[[23517,56176],[-10,57],[-15,-16],[-12,5],[-21,78],[-7,58],[-22,2],[-20,78],[-9,7]],[[27427,63686],[6,33]],[[27478,63688],[0,-166]],[[26591,57972],[-19,-4],[-16,12],[-32,-42],[-16,16],[-7,68]],[[26501,58022],[-3,68],[9,25],[-4,44],[17,63]],[[26427,57923],[1,21],[22,48],[3,-26],[28,4],[20,52]],[[26507,57668],[-34,0]],[[23066,66153],[-103,1]],[[29773,66671],[99,-11]],[[29872,66660],[8,-1]],[[29880,66659],[12,-43],[-1,-47],[23,12],[31,-38],[-4,-95],[12,-7],[5,33],[22,-11],[3,-27],[-9,-53],[5,-9],[-4,-64],[-19,-71],[12,-46],[27,22],[-6,-77],[-14,5],[-12,-58],[13,-42],[14,11],[7,-41]],[[29823,65864],[-9,2]],[[29790,66116],[3,77],[-18,-11],[-4,59],[-7,-10]],[[26281,62946],[1,53]],[[26282,62999],[93,2],[0,26]],[[26375,63027],[32,-2]],[[26410,62679],[-77,23],[-3,-8],[-50,0]],[[23774,55377],[3,0]],[[23870,54466],[3,15],[-22,47],[-5,48],[-18,26],[-2,53],[-16,9],[2,31],[-5,70],[-16,50],[4,63],[-8,6],[5,29],[-9,106],[-10,28],[8,27],[-2,56],[3,58],[-10,52],[6,35],[-12,21],[7,30],[1,51]],[[24940,65348],[0,368]],[[15852,69961],[18,34],[23,7],[50,77]],[[15943,70079],[2,-120],[6,-38],[21,-61]],[[15714,69827],[0,97],[-17,54],[-11,17],[-23,76],[0,92]],[[28135,56934],[7,17],[16,-37],[14,-10]],[[28198,56436],[-7,-89],[-13,7],[-3,34],[-21,21],[-23,9],[-28,-2],[-30,-12],[-35,-42],[-8,-17]],[[27999,56453],[7,43],[-4,34],[17,33],[7,33],[-2,29],[6,66],[7,20],[26,-30],[13,76],[33,13],[26,164]],[[26013,59123],[40,-28],[28,34],[11,43],[0,26]],[[26202,59008],[-15,-46],[-26,2],[1,-54],[-6,-88]],[[28178,59082],[18,112],[9,98],[3,141]],[[28208,59433],[23,-4],[12,-22],[36,-2],[4,-34],[21,-38],[2,-51],[-9,-28],[3,-42],[8,-13],[28,25],[9,-71],[8,-16],[-2,-42],[27,-53]],[[28378,59042],[7,-10],[4,-53],[6,-10],[-23,-19],[-4,-21]],[[28368,58929],[-21,-77]],[[28264,59025],[-14,4],[-16,-22],[-22,7],[-9,44],[-14,15],[-2,-23],[-9,32]],[[18513,67720],[0,-97],[-33,-4],[0,-101],[-33,0],[-3,-192],[-17,0]],[[20643,63259],[39,-8],[8,17],[26,0],[0,50],[17,4],[0,63],[14,9],[22,-8],[-5,-30],[0,-60],[-40,1],[8,-63],[-26,5],[-16,-39]],[[24437,55361],[-21,-148],[-15,-27],[-11,-79],[2,-45],[-12,-54],[1,-41]],[[24304,54779],[3,11],[-11,84],[5,67],[-14,77],[-23,-15],[-2,29]],[[28627,60202],[13,7],[4,-31],[13,-31]],[[28624,59891],[6,30],[9,0],[6,-40]],[[28657,59803],[-1,-27],[-23,-15],[-8,33],[6,27],[-11,34]],[[28620,59855],[4,36]],[[20476,63806],[69,-3],[32,6],[66,-2]],[[20547,63401],[0,24],[-77,-1]],[[24807,52054],[19,-11],[38,50],[23,-21],[12,-24],[9,21],[9,-19],[8,16],[17,-27]],[[24942,52039],[-15,-51],[-2,-38],[-12,-15],[3,-40],[-28,17],[-11,-53]],[[24862,51708],[-7,29],[-20,3]],[[25374,54179],[113,1]],[[25487,54180],[0,-132],[13,-9],[0,-50],[33,2]],[[25533,53991],[-5,-17],[1,-136],[-14,0],[0,-168],[-15,-45],[16,-43],[-4,-53],[-13,-25],[-4,17],[-19,-28],[-5,-67],[-8,22],[-9,-39],[6,-37]],[[25409,53251],[1,59],[-12,18],[9,10],[-2,56],[15,8],[3,68],[-13,-7],[9,57],[1,78],[-8,36],[-23,35],[-15,49],[-5,75],[1,47]],[[25446,54801],[24,0],[0,-51],[57,1]],[[25541,54499],[-14,-12],[0,-142],[-28,-1],[0,-147],[-12,-17]],[[25473,55362],[82,-4]],[[25555,55358],[0,-150]],[[25325,56221],[11,365]],[[25336,56586],[62,-7],[0,-34],[10,-1],[0,-119]],[[25409,55964],[-91,12]],[[25318,55976],[7,245]],[[25309,55690],[9,286]],[[25439,55965],[0,-432]],[[25299,55344],[10,346]],[[23289,63810],[1,-2]],[[28221,60497],[13,10],[3,38],[39,122]],[[28383,60384],[-3,-9]],[[28366,60374],[-5,0],[-7,-79]],[[28334,60270],[-20,-7],[-11,10],[-15,53],[-10,-7]],[[23834,53231],[-87,-21]],[[25931,69065],[72,-5]],[[25886,68762],[3,89],[-10,80],[1,33],[27,43],[20,15],[4,43]],[[23553,62034],[0,127]],[[23705,61835],[-1,-140]],[[25815,55474],[88,2]],[[25949,55459],[0,-390]],[[20581,64665],[93,-1]],[[25786,59132],[6,-83],[12,-39],[4,-47]],[[25808,58963],[-3,-50],[-5,34],[-7,-60],[-12,-32],[-2,-46]],[[25658,58899],[4,57],[11,40],[4,113],[22,164],[-2,19]],[[28170,64846],[9,-11],[9,33],[0,36],[9,6],[12,51],[1,-87],[26,4],[16,-86],[34,-19],[16,-39],[-5,-13],[20,-97],[47,28],[55,66]],[[28269,64352],[-24,-12],[-16,28],[-33,-60],[-48,55]],[[28080,64355],[-5,26],[18,63],[7,48],[11,6],[8,67],[18,34],[22,20],[-3,40],[8,12],[-6,32],[-9,97],[12,10],[9,36]],[[23125,51944],[17,-76],[-11,-43],[-1,-81],[9,-26],[-7,-46],[5,-32],[15,-7],[4,-88]],[[23156,51545],[6,-9],[-4,-136],[-17,-2]],[[23141,51398],[-6,25],[-18,13]],[[23117,51436],[-7,26],[-17,15],[-3,55],[-8,24],[-12,108],[-20,-6],[-34,96],[-9,63]],[[29478,69336],[42,3]],[[29510,69000],[-2,-85],[-9,-68],[-26,-32]],[[29473,68815],[-8,84],[4,31],[2,92],[10,55],[-13,57],[4,63],[7,30],[-1,109]],[[28603,59928],[0,-38],[21,1]],[[28620,59855],[-10,-58],[-9,-310]],[[28601,59487],[-14,0]],[[28482,59489],[5,107]],[[20922,61783],[122,0],[31,-7]],[[21075,61776],[-1,-203],[1,-90]],[[20436,61483],[208,-8]],[[20644,61076],[-10,47],[-11,-5],[-6,63],[-13,2],[-13,-52],[-9,-64],[-12,36],[-27,-56],[-17,6]],[[24632,60326],[0,-122],[-12,-33],[0,-102]],[[21212,53458],[-101,-447],[-59,-257]],[[20908,53149],[22,1041]],[[20921,62186],[1,-403]],[[20674,61779],[0,152]],[[27109,62863],[6,51],[32,-16],[1,59],[-5,0],[2,61],[36,4]],[[27181,63022],[32,-4],[0,73],[16,-18],[5,-34],[31,-11],[1,16]],[[27266,63044],[10,-31],[58,-8],[0,-38]],[[27311,62871],[-14,-21],[-11,-54],[-17,-8],[-28,-51]],[[27142,62590],[1,62],[-27,4],[1,34],[-10,19],[2,154]],[[27602,60502],[-20,-46],[-15,-5],[-17,-43]],[[27491,60504],[49,98],[4,29],[-13,4],[1,32],[18,34],[12,40]],[[25631,56510],[11,-39],[8,-62],[-3,-19],[24,-1],[0,-27],[12,-9]],[[25683,56353],[3,-50]],[[25598,55951],[-14,2],[0,85],[-29,17]],[[25496,56420],[0,101]],[[28084,62881],[33,-87]],[[28117,62794],[54,-147]],[[28029,62404],[10,38]],[[19587,70034],[-25,-9],[-11,16],[-27,-39],[-16,5],[0,-75],[-18,0],[0,-68],[-46,-1],[-17,-17],[-6,-33],[-11,0],[-6,-34],[-24,-67],[-6,-34],[0,-51],[-22,0],[0,-109],[-31,0]],[[19321,69518],[0,5],[-74,0]],[[19247,69523],[0,206],[37,0],[0,202],[34,0],[0,51],[35,-1],[0,51],[34,0],[-1,203],[5,0],[0,102],[12,-1],[-1,103],[24,1],[1,99]],[[24765,53027],[118,1]],[[24913,53029],[0,-37],[-7,-22],[1,-45],[-7,-19],[-9,-125],[-7,-25],[4,-36],[-8,-35],[-1,-48]],[[24879,52637],[-42,1],[-71,53]],[[25947,58801],[-19,5],[-19,-13]],[[25909,58793],[-2,11],[-26,-3],[-20,28],[-53,134]],[[17466,71219],[35,-1],[0,357]],[[17962,71345],[15,-35],[-6,-39],[14,-47]],[[24732,50824],[7,27],[13,-65],[-8,-14],[-12,52]],[[24726,51002],[5,-6]],[[24731,50996],[-5,6]],[[24590,51752],[28,2],[0,17],[27,-20],[9,-18]],[[24654,51733],[8,7],[27,-12]],[[24812,50889],[-37,-92],[-7,10],[4,41],[-12,16],[-2,41],[6,3],[-12,100],[-11,27],[-9,-7]],[[24732,51028],[-2,96],[-10,28],[-13,72],[-11,30],[-19,95],[-13,45],[-10,11],[-14,67],[-17,36],[-12,93],[-8,-34],[-12,-1],[1,-34],[-35,-2]],[[26305,70240],[0,-580]],[[26203,69750],[18,-7],[32,38],[-1,33],[-33,17],[-14,47],[-8,114],[16,75],[13,14],[20,69],[-2,31],[-18,27],[60,-15],[7,49],[12,-2]],[[28167,59480],[41,0]],[[28208,59480],[0,-47]],[[90472,34420],[4,45],[13,54],[5,-54],[-4,-24],[7,-40],[-2,-61],[-9,-29],[-14,109]],[[31310,38457],[16,-14],[24,26],[10,-11]],[[31360,38458],[0,-111]],[[31309,38272],[1,185]],[[26735,65865],[-1,-27],[-16,-39],[-6,-39],[-13,-4],[-7,-65],[-11,-11],[-17,-72],[5,-79],[-8,-9]],[[18252,72350],[-87,0],[11,-100],[-12,-45],[13,-33],[9,-65],[-5,-43],[5,-77],[13,-16],[1,-108],[-31,0],[0,-51],[-71,0]],[[18299,72350],[0,-490],[46,0],[0,-404]],[[18345,71456],[-32,0],[0,-35],[-18,0],[0,-67],[-18,0],[-2,-33],[-32,0],[0,-68],[-45,3]],[[20547,63208],[-28,13],[-37,99],[-16,10]],[[26948,61005],[33,104]],[[26981,61109],[32,36]],[[27121,60779],[2,-33],[-17,-97]],[[28174,63060],[-20,-44],[-12,14],[-25,-236]],[[25402,53215],[-5,13],[-10,-34],[-85,-1],[0,-34],[-28,0]],[[25274,53159],[-5,374]],[[25108,63100],[60,-1]],[[25168,63099],[1,-85],[25,-1],[0,-68],[22,0],[15,-85],[32,-1]],[[25263,62859],[0,-84]],[[25525,63675],[11,-24],[24,0]],[[25524,63366],[1,309]],[[29093,63678],[4,36],[24,-45],[10,-5]],[[29131,63664],[10,-69]],[[29090,63188],[-24,68],[-23,3],[-8,111],[-12,61],[-11,10],[1,38],[-14,14]],[[28999,63493],[24,67]],[[24258,67981],[97,0]],[[22776,55344],[102,-2]],[[22878,55342],[-2,-513]],[[22863,54830],[-130,7]],[[22733,54837],[2,510]],[[25339,66010],[122,-2]],[[25461,66008],[22,-89],[3,-54],[13,-139],[4,-75],[14,-93],[8,-20],[2,-47]],[[25526,65214],[-73,0],[-1,103],[-33,-2],[0,101],[-32,-3],[-1,52]],[[25386,65465],[17,1],[15,35],[-2,169],[0,154],[-95,-9]],[[90597,35570],[10,43],[4,-16],[-8,-45],[-6,18]],[[90537,37432],[5,20],[1,-49],[-6,29]],[[90507,37973],[14,53],[0,59],[11,0],[0,-66],[-9,-13],[-10,-55],[-6,22]],[[90487,38800],[6,39],[11,-28],[-1,-51],[-8,-23],[-7,25],[-1,38]],[[90486,35993],[20,2],[3,-36],[-19,-8],[-4,42]],[[28675,59824],[6,-82],[17,-14],[17,-52],[3,-41],[-14,-14],[-1,-134]],[[28650,59487],[-49,0]],[[26528,67149],[2,-409]],[[26592,67695],[15,3],[28,120],[14,0],[6,28]],[[26655,67846],[2,-74],[97,9]],[[26659,67255],[-66,-2]],[[21216,70814],[0,-391]],[[20924,72035],[105,-1]],[[24580,68853],[-68,1]],[[24512,68854],[-101,-1]],[[24377,68955],[0,200]],[[16478,62470],[67,1],[3,-34],[56,1]],[[16604,62438],[67,-2],[0,-108],[-25,-9],[-6,-33],[0,-153],[5,-17],[-1,-88],[16,-5],[1,-94],[5,0],[0,-132]],[[16666,61797],[-72,208]],[[16478,62417],[0,53]],[[26106,64163],[68,0]],[[26169,63944],[-63,0]],[[26209,64571],[2,-407]],[[24117,56288],[70,-8]],[[24182,55702],[-22,-34],[-12,28],[-2,40],[-12,-13],[-3,46],[-9,13]],[[24122,55782],[-5,35],[-16,-2],[-3,44],[-15,-3],[-3,59],[-10,3],[-6,30],[18,94],[-6,29],[2,42],[20,11],[5,37],[14,51],[0,76]],[[25326,64901],[65,5],[-1,101],[136,7]],[[25526,64860],[0,-181]],[[25526,64679],[-169,-15]],[[25325,64660],[-1,140]],[[17375,69414],[2,32],[13,40],[12,149]],[[17510,68676],[-30,0],[-34,55],[0,144],[-21,0],[-6,55],[0,205],[-77,3]],[[29738,65368],[0,33],[-11,48],[-8,164],[-8,-4],[3,60],[-6,-5],[1,103],[6,3],[-5,101]],[[26052,61617],[48,-110]],[[26112,61346],[-1,-34]],[[26111,61312],[-39,-50],[-40,14],[-48,-54],[-15,-49]],[[25020,52616],[-56,1],[0,-153],[-29,-17],[0,-51],[-12,1]],[[24923,52397],[-19,53],[-4,39],[-10,34],[-2,77],[-9,37]],[[24569,51939],[13,55],[76,62]],[[24658,52056],[-3,-82],[-5,-3],[3,-50],[-8,-17],[6,-64],[3,-107]],[[19271,63277],[-150,1],[0,5],[-95,2]],[[19016,63386],[-1,213],[0,406],[-2,0],[1,287]],[[22643,51697],[-35,-123]],[[18137,63393],[223,-1],[252,-1],[1,47],[19,-6],[13,58],[13,26]],[[18703,62705],[-15,17],[-33,0],[-1,187],[-5,74],[-190,-1],[-257,0],[0,-10],[-65,-2]],[[18137,62970],[0,423]],[[28208,59480],[37,1]],[[28245,59481],[131,-1]],[[28376,59480],[37,2]],[[28401,59133],[-6,-34],[-19,-11],[2,-46]],[[25898,54151],[5,-42],[-3,-114],[-4,-49],[14,1],[0,-149],[-9,-54],[10,1]],[[25897,53538],[-19,2],[-4,16],[-1,85],[-16,-48],[-7,0],[-9,-42],[-1,89],[-28,-2]],[[18973,65833],[-128,-3]],[[18845,65830],[-2,81],[-24,35],[4,50],[-6,14],[-5,62],[3,45],[15,36],[-7,13],[-1,44],[10,30],[-13,46],[0,28]],[[18819,66314],[6,17],[-16,163],[10,24],[65,0],[24,-44],[11,59],[5,-36],[-3,-109],[18,-6],[30,32],[4,15]],[[26390,63409],[75,4],[0,-44],[29,-6]],[[26494,63363],[0,-34]],[[26375,63027],[-2,381]],[[26010,53745],[12,1]],[[26022,53746],[92,1]],[[26114,53747],[0,-354]],[[26114,53393],[0,-34],[-19,1],[0,-47],[-33,30],[-17,-4],[-13,-86]],[[26032,53253],[-22,2]],[[15829,60925],[1,-3]],[[15830,60922],[-1,3]],[[15813,60835],[-31,0]],[[15782,60835],[-4,84],[14,28],[16,8],[6,-24],[7,-88],[-8,-8]],[[19942,61346],[1,-56],[15,-45],[-10,-72],[-12,-8],[6,-31]],[[19942,61134],[-20,0],[1,-52],[-16,-33],[-12,15]],[[19895,61064],[2,29],[-18,68],[-15,5],[-14,39],[2,104],[-16,1],[-4,42]],[[25103,60394],[0,-41],[12,20],[20,-10]],[[25134,60276],[-14,1],[-13,-21],[-13,-42],[-9,-65],[-17,-59]],[[25068,60090],[-25,44],[-2,87],[8,105],[10,21],[-1,38],[-12,16]],[[24523,59426],[95,1]],[[24618,59427],[5,-16],[-3,-55],[8,-29],[0,-154],[-16,9],[0,-25]],[[24612,59157],[-1,-137]],[[24445,59425],[78,1]],[[24246,57760],[3,345]],[[26972,64743],[46,-2]],[[27030,64657],[1,-377]],[[23408,58426],[-1,-131],[14,-77],[9,-2]],[[24681,50807],[39,-33],[-19,-8],[-20,41]],[[24628,50763],[25,19],[2,-17],[-26,-20],[-1,18]],[[24732,51028],[-1,-32]],[[24726,51002],[1,44],[-10,56],[-13,-64],[-14,14],[-7,-22],[-7,31],[-6,-27],[10,-63],[-12,4],[-7,-27],[-4,-54],[-8,7],[-5,-57],[-8,12],[-19,-33],[-6,-76],[-16,16],[5,21],[-13,67],[-18,57],[-11,-13],[-26,21],[-10,33],[-25,12],[-16,25],[-16,60],[12,14],[7,58],[8,-12],[12,-52],[7,22],[-1,-68],[15,-17],[-4,104],[-23,64],[0,42],[-6,7]],[[15363,69375],[78,0]],[[15332,68480],[10,193],[-1,69],[7,184],[0,92],[-5,39],[8,91],[12,227]],[[26655,67846],[-6,48],[9,44],[9,87],[4,-50],[19,31],[5,29],[-21,31],[24,-3],[11,24],[5,41],[23,10],[34,28],[9,45],[31,30],[11,-30],[23,-25],[15,-39],[17,-123],[10,-37],[7,-97],[3,-91]],[[23546,64168],[45,-1]],[[23556,63953],[-3,0],[0,100],[-6,0],[-1,115]],[[24087,63049],[109,-6]],[[24196,63043],[-3,-300]],[[24160,62628],[-77,85]],[[5814,42059],[43,9],[13,49],[4,35],[13,48],[14,15],[6,-27],[6,-70],[20,-84],[4,-52],[-4,-15],[3,-47],[18,-55],[3,57],[12,-2],[-4,-64],[8,-24],[-1,-29],[17,-70],[-12,-37],[-11,18],[-21,-29],[-6,26],[-17,31],[-25,11],[-30,-20],[-7,4],[-7,84],[-11,34],[-1,31],[-14,67],[0,61],[-13,45]],[[18137,61963],[0,1007]],[[18704,62392],[-2,-58],[-13,-9],[1,-34],[-20,0],[-4,-61],[-6,-1],[-5,-48],[-10,0],[-1,-117],[3,-43],[-26,-59],[-38,6],[-10,-43],[0,-51],[-9,-33]],[[18137,63639],[1,134],[0,628],[1,266]],[[18635,64398],[15,-62],[3,-101],[6,-29],[1,-160]],[[18137,63393],[0,246]],[[27485,46274],[0,32],[21,11],[7,20],[5,61]],[[27518,46398],[11,-19],[13,34],[6,39]],[[27548,46452],[5,-12]],[[27553,46440],[-21,-138],[-9,-82],[-25,-93],[-34,-139],[-24,-66],[-3,12],[34,122],[14,40],[7,53],[3,81],[5,32],[-6,23],[-9,-11]],[[27414,45876],[14,60],[5,-33],[-14,-44],[-5,17]],[[27386,45813],[9,39],[11,4],[-5,-33],[-15,-10]],[[27310,45701],[52,90],[6,-30],[-45,-80],[-13,20]],[[27214,46977],[166,2]],[[27380,46979],[0,-514],[3,1],[1,-219]],[[27384,46247],[-12,-17],[0,-26],[-27,-18],[-23,-6],[-17,52],[-8,68],[2,79],[6,60],[6,-3],[-2,49],[-12,97],[-11,47],[2,34],[-8,62],[-11,32],[-5,85],[-6,18],[-11,-15],[-9,101],[-24,31]],[[27118,45540],[19,106],[20,46],[25,43],[3,23],[36,66],[38,-67],[4,-52],[14,-43],[-4,-11],[-40,-48],[-3,27],[-27,-5],[-3,-24],[-46,-73],[-36,-15],[0,27]],[[27062,45510],[39,24],[-10,-43],[-17,-14],[-13,8],[1,25]],[[27020,45533],[6,35],[12,-10],[-5,-41],[-13,16]],[[26806,45614],[15,13],[4,-23],[-20,-10],[1,20]],[[26978,55163],[12,119],[-5,145],[7,106],[9,90],[-10,42]],[[26991,55665],[26,35],[21,-76],[11,13],[23,-18],[12,30],[14,10],[9,-17]],[[27134,55585],[-5,-21],[8,-45],[27,-55],[9,0]],[[27193,55407],[-62,-158]],[[27131,55249],[-5,22],[-20,29],[-28,-35],[-35,-8],[-12,-38],[-6,-83]],[[26194,55065],[7,-124],[6,-43]],[[26207,54898],[17,-76],[5,-38]],[[26109,54667],[-1,102],[-14,0],[-48,82],[-10,33]],[[26036,54884],[0,118],[5,18],[19,1],[5,17]],[[22659,49740],[69,-55],[8,41]],[[22849,49420],[-14,-83],[-12,-2],[-6,55],[-21,-10],[-4,18],[-32,-11],[-11,12],[-3,-46]],[[22746,49353],[-23,13],[-12,44],[-2,-33],[-10,20],[-5,41],[-9,-2],[-16,37],[-7,-15],[-3,40],[5,31]],[[22664,49529],[-1,50],[-10,-5],[-12,26]],[[22641,49600],[-5,13],[-1,54],[24,73]],[[23468,64172],[78,-4]],[[23554,63649],[-122,5]],[[23432,63654],[-6,24],[-2,128],[-30,1]],[[13347,81071],[9,23],[10,-28],[-5,-52],[-16,34],[2,23]],[[13279,80906],[61,56],[7,-80],[13,-14],[-20,-68],[-24,-1],[-33,63],[-4,44]],[[13241,80901],[26,65],[8,-25],[-26,-58],[-8,18]],[[13172,81388],[4,66],[6,1],[52,-135],[-12,-28],[-1,-68],[-15,-111],[-23,74],[-9,113],[-2,88]],[[13390,82602],[85,-47],[44,-115],[44,-33],[11,-116],[23,-15],[27,-35]],[[13651,81856],[1,-60],[10,-38],[-5,-118],[12,-104],[11,-46],[6,-133],[12,-63],[-32,-100],[-24,-122],[-1,-33],[-20,-90],[-23,-77],[-37,-97],[-27,-55],[-19,-14],[3,-46],[-19,-23],[-12,40],[-1,56],[-13,24],[-1,-44],[-12,-22],[-18,18],[-13,52],[-4,108],[3,57],[-17,33],[8,103],[-9,6],[-16,56],[-6,64],[30,63],[17,63],[15,-8],[-3,75],[-11,82],[14,122],[-9,190],[-10,67],[-43,164],[-22,55],[-12,48],[-7,-34],[23,-62],[25,-85],[7,-72],[22,-90],[10,-131],[-16,-43],[-2,-79],[7,-92],[11,-62],[-9,-28],[-11,96],[-8,12],[3,-70],[-4,-74],[-36,-102],[-14,-5],[-24,49],[19,73],[11,73],[-3,38],[-25,-10],[10,-72],[-8,-42],[-33,-56],[-7,1],[-23,108],[-11,-45],[-25,54],[-17,18],[-12,50],[-28,68],[0,76],[31,31],[22,51],[-20,47],[7,75],[-9,39],[23,44],[3,24],[-18,1],[-3,74],[7,43],[-41,-17],[6,-45],[11,-16],[-1,-37],[-13,-85],[-1,-60],[-19,-73],[-18,13],[7,-93],[-10,-43],[-24,52],[-25,22],[-14,83]],[[10628,87240],[0,-100],[130,-95],[17,100],[135,-145],[81,180],[170,20],[1,-39],[-33,-272],[47,-112],[66,-76],[26,-22],[11,-116],[29,-80],[266,-580],[30,-299],[-8,-90]],[[11480,85398],[3,69],[-15,48],[-55,121],[-30,47],[-96,89],[-36,71],[-43,66],[-98,104],[-42,49],[-91,144],[-30,39],[5,29],[31,89],[24,-14],[-9,-27],[24,3],[0,43],[21,70],[-22,7],[2,77],[-14,116],[7,35],[22,41],[-5,34],[16,30],[-13,56],[-19,-51],[-2,-59],[-25,-21],[-21,-72],[-1,-49],[-107,-100],[-12,-28],[-28,-28],[-95,22],[-67,36],[-26,32],[-123,125],[-17,56],[18,-10],[34,24],[11,71],[-33,131],[3,42],[-20,-17],[-31,44],[6,-50],[45,-120],[-10,-21],[-54,-51],[-39,0],[-49,55],[-61,24],[-32,23],[-81,40],[-45,11],[-59,-4],[-63,-33],[-77,-12],[-80,-28],[-54,-48]],[[26285,64350],[0,-181]],[[21170,62382],[124,2],[187,9]],[[21481,61891],[-283,-1],[-31,-3]],[[21167,61887],[2,91],[1,404]],[[26535,59335],[12,17],[8,-17],[8,19],[11,-43],[9,-63],[10,24],[8,-25]],[[26583,59038],[-53,6],[-5,19]],[[25412,64068],[114,6]],[[25526,64058],[-1,-383]],[[25412,63363],[-2,402],[4,0],[-1,203]],[[15663,72891],[-6,0],[0,-231],[-155,0],[0,17],[-308,-1]],[[15194,72676],[-16,119],[-8,101],[1,53],[-11,56],[12,58],[9,138],[-19,46],[3,22],[17,1],[40,-55],[32,-64],[10,-1],[25,-39],[6,12],[41,-55],[-1,-20],[35,-41],[56,-11],[21,13],[31,-37],[9,19],[10,-18],[24,7],[12,-32],[41,2],[32,71],[-3,-24],[22,-42],[7,-45],[17,17],[17,-5],[-3,-31]],[[15266,72272],[85,0],[0,-17],[151,-1]],[[15502,72254],[0,-302],[4,0],[1,-205],[80,3]],[[15587,71750],[-1,-102],[13,-2],[-1,-235]],[[15337,71411],[-11,130],[8,8],[6,-52],[11,31],[52,63],[-10,27],[-34,23],[-2,45],[-27,14],[-8,-24],[8,-90],[-16,-21],[3,38],[-4,206],[-14,176],[-24,80],[-9,207]],[[27155,52003],[16,15],[23,-16],[0,-19],[30,2],[-1,171],[16,0]],[[27239,52156],[19,-330],[13,-129],[0,-51],[14,-167]],[[27199,51422],[-1,160],[-11,51],[-4,43]],[[15663,72891],[14,-21],[1,-59],[10,6],[3,53],[-14,34],[0,40],[12,28],[21,10],[3,-31],[-15,-34],[10,-50],[7,6],[2,48],[10,14],[8,-100],[-15,-10],[11,-42],[8,-78],[13,-21],[-8,-25],[-16,2],[2,-42],[-17,-36],[-9,-113],[-14,-9],[11,113],[-6,17],[-19,-101],[-4,-53],[-23,-80]],[[15649,72357],[-108,1],[-39,-3],[0,-101]],[[15266,72272],[-5,77],[-15,162],[-14,36],[-4,55],[-14,23],[-5,31],[-15,20]],[[15785,61302],[2,-44],[-5,-46],[15,-51],[-12,-25],[-4,-44],[19,-56],[-7,-14],[-11,29],[7,-71],[-15,-16],[-9,38],[-26,61],[-13,-12],[-23,67],[-10,53],[-17,33],[-16,8],[-20,-33],[14,127],[3,48],[-12,92],[7,20],[-10,53]],[[28348,60209],[0,-207]],[[28286,59868],[-10,20]],[[28276,59888],[-16,22],[-14,71],[-21,25],[-14,-9]],[[28211,59997],[-3,181],[29,57]],[[24955,63475],[-34,-1],[-1,-68],[-19,-1],[0,-16],[-62,-1]],[[19845,64669],[167,1]],[[18742,66315],[77,-1]],[[16085,62334],[0,-81],[-16,-1],[0,-202],[-4,-20]],[[16032,62031],[3,32],[-26,0],[-10,47],[0,55],[-8,24],[-9,-17],[-9,23],[3,45],[-9,11]],[[21203,57388],[0,-506]],[[21203,56871],[-194,0],[0,351]],[[29355,66371],[120,53]],[[29435,65889],[-7,0],[-2,-84],[-51,32],[-55,86],[-6,-1]],[[29314,65922],[6,57]],[[24711,56299],[75,-3],[-1,-51],[-30,-17],[-2,-61],[9,-1],[8,46],[6,-17],[23,-1]],[[26526,57668],[-2,-20],[8,-51],[18,-32],[9,17],[2,-48],[9,-63],[0,-30]],[[26549,57359],[-23,22],[-13,-29],[-3,-44],[-12,-42],[-24,26],[-9,-19]],[[26591,61919],[0,46],[9,397]],[[26680,62403],[20,-4],[12,-42]],[[26712,62357],[1,-463]],[[26607,61916],[-16,3]],[[29144,62688],[-27,-92],[-21,-118],[-22,-149],[-20,-60],[-19,-14],[-11,14],[6,88],[15,97],[3,69],[-8,22]],[[17636,58805],[0,240],[-14,2],[0,780]],[[23453,62826],[12,-40],[13,-10],[-9,-25],[6,-79],[18,-52],[-3,-28],[17,-20]],[[23507,62572],[-35,3],[-3,-246]],[[23469,62329],[-11,-9],[-20,19],[-10,-21]],[[16799,72766],[11,-44],[23,-23],[11,49],[10,-18],[23,6],[10,-20],[-3,-36],[22,-2],[6,-43],[15,-17],[10,13],[4,61]],[[16941,72692],[26,57],[10,3],[19,-71],[7,-61],[20,-47],[16,49],[15,-13],[15,29],[17,-26]],[[17086,72612],[-1,-658]],[[17085,71954],[-38,0]],[[15649,72357],[-36,-173],[-13,-119],[12,8],[23,-13],[12,27],[21,17],[3,38],[-44,-62],[-17,27],[28,150]],[[15638,72257],[60,0],[0,-136]],[[15698,72062],[-17,-96],[7,-72],[-6,-48]],[[15682,71846],[-12,-12],[-9,38],[-19,-45],[-3,-32],[-17,-20],[0,-25],[-35,0]],[[15649,73739],[11,-4],[34,-53],[-8,-8],[-22,20],[-15,45]],[[15623,73630],[17,26],[2,-33],[-19,7]],[[15586,73509],[7,30],[20,1],[2,-29],[15,-33],[17,-9],[-18,69],[37,108],[12,-2],[37,-58],[-19,-50],[11,-66],[-2,-62],[-11,-25],[4,-69],[-20,-12],[-15,50],[-9,-12],[-22,11],[-31,62],[-6,76],[-9,20]],[[15577,73617],[18,-10],[18,-54],[-30,41],[-6,23]],[[24742,61626],[13,45],[9,110]],[[24865,61431],[-38,3],[0,-102],[-48,-55]],[[24779,61277],[-12,46]],[[24767,61323],[-11,50],[-18,50],[-5,70],[1,78],[8,55]],[[20069,62765],[191,-5]],[[20260,62760],[-1,-53],[-15,-5],[1,-46],[-7,-123],[-15,-13],[1,-41],[-8,-38],[2,-35]],[[20218,62406],[-6,-70]],[[19991,62637],[4,15],[-24,53],[10,60]],[[16108,64881],[127,0],[244,0]],[[16438,63162],[11,101],[0,169],[-16,34],[-10,52],[-3,85],[-10,25],[-26,9],[-19,37],[-13,68],[-8,0],[-7,50],[-19,18],[0,25],[-13,0],[-8,26],[-31,9],[-9,-44],[-21,-42],[0,-49],[-16,-9],[-5,34],[-16,0],[-16,41],[0,221],[-74,-1]],[[21287,61485],[194,2]],[[21285,60760],[0,209],[2,1],[0,515]],[[17304,71118],[0,681]],[[27383,49938],[0,-297],[-2,-9],[0,-305]],[[27381,49327],[-4,0],[3,-210]],[[27305,49119],[-1,78],[-18,129],[-6,24],[-20,23],[-2,70],[-18,66],[-3,29],[-8,-6],[-13,62],[19,-28],[3,-18],[4,58],[6,26],[-31,1],[0,68],[-19,-1],[0,68],[-9,68],[-28,0],[0,102]],[[23650,69653],[1,27],[19,13],[7,-19],[23,76],[9,65]],[[23709,69815],[25,-52],[11,7],[14,-52],[11,-5],[20,-47],[50,-3],[16,-53]],[[23856,69610],[-14,-33],[-19,-10],[0,-51],[-17,-34],[-10,-63],[-7,-1],[-2,-121]],[[23719,69298],[-68,1]],[[26474,55275],[0,-96]],[[26474,55179],[0,-57],[-7,1],[-15,-130]],[[26429,55060],[-29,46],[-9,60],[-10,-10],[-14,61]],[[21324,64925],[154,0]],[[21478,64925],[1,-254]],[[21479,64669],[-158,1]],[[21321,64670],[3,53],[0,202]],[[21204,58407],[244,6]],[[26514,56269],[51,168]],[[26607,56409],[5,-22],[13,-4],[2,-41],[19,-36]],[[26881,55501],[18,-110],[14,-14],[3,-84],[8,-35],[-5,-98],[2,-13]],[[26921,55147],[-11,-2],[-30,-43],[-4,16],[-24,-33],[-10,48],[-40,-59]],[[26802,55074],[-6,87],[-16,26],[-13,105]],[[29219,64547],[39,-90]],[[29254,64418],[-6,-45],[13,-7],[2,-45],[-6,-33]],[[29257,64288],[-21,19],[-3,19],[-18,17],[-11,-6],[-13,27]],[[29191,64364],[1,62],[9,24],[3,110],[15,-13]],[[27052,53989],[10,-6],[12,-38]],[[27074,53945],[17,-46],[16,-96],[11,-3],[6,-36],[26,-65],[0,-28],[10,-18]],[[27160,53653],[1,-33],[13,-48],[-3,-19]],[[27141,53410],[-20,39],[-34,-20],[-33,32]],[[27054,53461],[-4,41],[1,53],[-10,30],[-12,-10]],[[24633,61919],[19,56],[35,-1],[2,52],[11,24],[14,88],[22,0],[9,68],[9,2],[12,-42],[20,-39],[12,13],[6,-28]],[[24742,61626],[1,77],[-21,3],[2,52],[-52,0],[-6,-35],[-13,9],[-5,-38],[-5,29],[-11,-5]],[[24702,52184],[-7,-54],[-12,-40],[-22,30]],[[24661,52120],[-5,12],[-12,-66],[-7,17],[-9,60],[-5,-2],[-16,62],[-1,30],[-17,31]],[[26216,54263],[-3,-84]],[[26213,54179],[-5,-59],[-14,-72],[-3,-45],[4,-69]],[[26195,53934],[0,-20]],[[26195,53914],[-6,12],[-16,-36],[-3,-46],[-56,5],[0,-102]],[[26022,53746],[9,49],[-1,44],[6,58],[9,41],[-4,85],[6,28]],[[25302,52136],[56,31],[1,25],[14,-40],[-9,-28],[-10,16],[-18,-2],[-20,-17],[-14,15]],[[25392,52659],[-15,-46],[2,-38],[-9,-57],[1,-41],[-6,-32],[-1,-144],[-8,-66],[-15,-4],[1,36],[-20,40],[-15,-16],[-5,23],[-18,-22]],[[25284,52292],[-5,426]],[[25279,52718],[-3,306]],[[25276,53024],[-2,135]],[[16981,73980],[214,0]],[[17193,72870],[-27,1],[0,-295],[-19,10],[-16,47],[-2,43],[-35,-80],[-8,16]],[[16941,72692],[-3,94],[-14,63],[13,24],[20,-10],[14,27],[-5,79],[14,10],[3,87],[14,63],[-9,56],[-8,102],[-1,79],[7,49],[8,6],[13,153],[-8,122],[-22,155],[-3,56],[7,73]],[[15720,73667],[6,14],[26,-115],[-18,42],[-14,59]],[[15785,73566],[-8,79],[8,44],[-13,30],[-17,-6],[-11,-41],[9,-44],[-19,40],[8,57],[-10,25],[-9,-14],[-1,65],[-21,54],[11,21],[-5,36],[-13,16],[16,54],[184,0],[97,-6],[145,5],[106,-1]],[[15618,73982],[15,0],[4,-29],[-17,-2],[-2,31]],[[26693,53580],[54,-4]],[[26774,53240],[3,-43],[-36,0],[0,-98],[-9,-1],[0,-42]],[[26732,53056],[-27,2]],[[26705,53058],[4,42],[-12,64],[5,57],[-8,28],[0,62],[-14,16],[-15,67],[1,40]],[[18973,64960],[1,382]],[[28245,59481],[31,196],[0,211]],[[28339,59670],[-20,-43],[11,-21],[13,2],[11,-25],[6,-92],[16,-11]],[[21558,52622],[-103,4],[0,-68],[-57,1],[0,-366],[-62,-1],[0,-269]],[[24749,65515],[20,63]],[[24769,65578],[3,-124],[20,-38],[-1,-54],[-6,-15]],[[26282,62999],[0,185]],[[26397,64655],[16,1],[0,203]],[[26445,64860],[97,2]],[[26542,64574],[-32,-1],[0,-17],[-32,0],[0,-51],[-64,-2]],[[19861,60913],[18,55],[4,53],[12,43]],[[19942,61134],[10,-25],[4,-49],[-5,-32],[6,-56],[13,-19],[3,-32],[-7,-16],[0,-150]],[[19966,60755],[-136,0]],[[22162,51755],[0,-327]],[[22047,51424],[-1,62],[-13,40],[11,14],[-3,65],[6,18],[-5,62],[8,57],[4,150],[4,-1],[2,67],[58,-10]],[[18419,70798],[-1,545],[-21,-26],[-17,21],[1,27],[-16,34],[-10,50],[-10,7]],[[26807,54348],[16,55],[-4,15]],[[26819,54418],[8,-2],[38,134]],[[26865,54550],[18,-13]],[[26883,54537],[2,-62],[7,-45],[-1,-85],[5,-51],[3,-88],[14,-37],[1,-27]],[[26886,54096],[-14,44],[-9,58],[-16,18],[-4,26],[-24,41],[-12,65]],[[17570,55850],[-264,1],[-58,6],[-1,20],[-36,48],[2,17],[-40,0]],[[23550,59624],[-106,3]],[[23444,59627],[0,317],[-10,60],[8,6]],[[31618,38134],[-8,-32],[-8,13],[-6,-20]],[[31572,38127],[1,84]],[[26698,69158],[7,-76],[-1,-55],[7,-37],[-4,-71],[-8,-67],[0,-98]],[[26699,68754],[-159,-3]],[[19669,68355],[231,-1],[160,-2]],[[19952,67578],[-17,0]],[[19935,67578],[0,169],[-34,0],[0,101],[-67,1],[0,99],[-61,0],[-3,34],[-34,-2],[0,66],[-34,0],[1,104],[-17,-1],[0,103],[-17,-1]],[[22878,55342],[52,-2]],[[31286,37841],[14,158],[1,50]],[[31309,38050],[1,-111],[8,4],[1,-29],[-7,-23]],[[31312,37891],[-22,-56],[-4,6]],[[25060,57676],[-43,-1]],[[22472,62594],[0,-101]],[[31209,38263],[21,-13]],[[31234,38230],[0,-20],[-12,-20]],[[31222,38190],[-15,-10],[-2,28],[-12,-4]],[[31193,38204],[-11,35]],[[31222,38190],[7,-11],[10,-58]],[[31195,38089],[7,31],[-9,84]],[[30985,38023],[20,12],[5,-43],[-15,-38],[-12,32],[2,37]],[[2341,307],[20,69],[4,-20],[27,2],[4,-44],[-7,13],[-29,-30],[-8,-39]],[[29497,66929],[5,432]],[[29500,66699],[-8,65],[4,37],[1,128]],[[22875,49344],[-14,-59],[-13,-81],[-23,-163]],[[22825,49041],[-13,-1]],[[22812,49040],[9,68],[14,70],[10,87],[8,35],[-2,47],[14,88]],[[22746,49353],[9,-24],[15,-1],[11,17],[-4,-64],[7,-48],[15,-34],[17,-18],[-12,-97],[1,-23],[-9,-38]],[[22796,49023],[-143,-3],[-10,34],[-4,38],[-15,18]],[[22624,49110],[3,164],[-1,126],[38,129]],[[29697,69333],[69,-6],[114,6]],[[29880,69333],[-8,-118],[15,-36],[-28,-105],[10,-20]],[[29869,69054],[-21,-82],[-28,59],[7,-76],[-16,23],[-32,-188],[-31,49]],[[27907,62615],[-15,-102],[2,-9],[-17,-121],[12,-128],[-25,-134]],[[26947,56112],[4,18],[29,40],[9,-19],[16,2]],[[27034,56049],[24,-60]],[[27058,55989],[-74,-222]],[[28267,61184],[13,-20]],[[28424,60740],[-4,-40],[-9,5],[-19,-68]],[[23497,55777],[-18,36],[-10,-12],[-30,8],[-9,-9],[-12,17],[-9,-9]],[[23358,55797],[-1,576],[1,6]],[[26683,62778],[30,162]],[[26857,62767],[-4,-186]],[[26853,62581],[-6,-46]],[[26847,62535],[-158,34]],[[26749,54683],[41,-321],[29,56]],[[26807,54348],[-77,-274]],[[26730,54074],[-6,42],[-10,18],[-12,115],[3,33],[-12,31]],[[26481,56577],[-5,18],[5,66],[10,53]],[[26491,56714],[54,-81],[14,34]],[[26456,57220],[-1,-70],[24,-89],[35,-56]],[[26514,57005],[0,-70],[7,-28]],[[26521,56907],[-84,1]],[[17042,70488],[105,-2]],[[17181,70485],[157,-3]],[[17240,69417],[1,100],[-59,0],[0,50],[-12,0],[-1,68],[-17,49],[0,33],[-17,-2],[-5,34],[0,73],[-6,0],[0,101],[-12,-1],[0,119],[-5,51],[-12,34],[0,97],[11,0],[0,102],[-62,0]],[[17044,70325],[-2,0],[0,163]],[[26921,55147],[17,-63],[7,-7]],[[26885,54787],[-7,13],[2,103],[-36,56],[3,30],[-22,34],[-26,-8]],[[26799,55015],[3,59]],[[26946,55674],[13,43]],[[26967,55718],[24,-53]],[[26494,63363],[5,186]],[[26499,63549],[144,-35]],[[26643,63514],[2,0],[-22,-281],[-16,5]],[[24732,58841],[16,110],[23,58],[5,52],[8,19]],[[24784,59080],[18,33],[3,43],[9,7],[5,133],[-22,44],[3,15],[-5,71],[-19,0]],[[24776,59426],[8,54],[1,50],[11,50]],[[24796,59580],[52,-1]],[[24848,59579],[2,-97],[-2,-183]],[[24757,58842],[-25,-1]],[[29287,69318],[98,8],[93,10]],[[29473,68815],[6,-20]],[[27767,61275],[83,-200],[8,-27]],[[27858,61048],[3,-41],[-7,-62]],[[27780,60729],[-6,-13],[7,-39],[-18,-46]],[[28473,64234],[-4,-48],[-8,-23],[2,-59],[10,-37],[-1,-26],[-21,-83],[6,-38],[19,-1],[7,-34]],[[28288,63734],[3,34],[-10,-12],[-9,84]],[[24618,59427],[58,0]],[[24676,59427],[100,-1]],[[24784,59080],[-36,0],[0,68],[-42,1],[-68,9],[-26,-1]],[[28171,62647],[18,119],[11,16],[23,76],[6,56]],[[18131,73978],[105,-2],[190,2],[228,0]],[[18654,73978],[1,-99],[0,-404],[1,-104]],[[18656,73371],[-12,7],[-97,0],[0,-202],[-215,0]],[[29628,68685],[-10,-57],[10,-15],[-6,-36],[-8,7],[-16,-97],[4,-7],[-15,-133]],[[29587,68347],[-6,153],[-63,-31],[-32,-3]],[[23011,67297],[127,-3],[66,1]],[[23561,54650],[7,15],[10,-23],[8,7]],[[23461,54010],[-13,1],[0,340]],[[26712,62357],[15,-28],[1,-37],[59,-4],[54,-10]],[[26841,62278],[15,-3],[-2,-105],[31,-7]],[[26885,62163],[-4,-118],[-9,3],[-3,-85],[-16,3],[-1,-41],[8,-55],[-21,-31]],[[26839,61839],[-9,28],[-9,111],[3,44],[-7,33],[-21,-32],[-15,0],[-6,-27]],[[12379,84716],[4,-72],[19,1],[21,38],[11,-23],[20,-2],[21,-29],[54,11]],[[12292,85061],[35,-45],[27,-125],[-10,-5],[-22,115],[-23,19],[-7,41]],[[12487,85577],[0,-51],[22,-71],[114,-152],[32,-119],[46,-120],[50,-110],[-23,-49],[33,-134],[47,-140]],[[12690,84293],[-10,-29]],[[12663,84216],[-4,-1],[-39,166],[-55,147],[-11,140],[9,65],[-2,52],[27,41],[-13,100],[-8,-2],[-9,-85],[-20,-30],[0,-42],[12,-22],[-13,-57],[-10,10],[-22,-20],[-25,11],[-36,34],[-7,-15],[-35,36],[-40,174],[-4,110],[-42,140],[-13,79],[19,1],[-11,174],[-12,-17]],[[24531,57528],[0,52],[41,-6],[151,-3]],[[24723,57571],[0,-83]],[[24697,57850],[28,5],[-2,-284]],[[25424,67218],[-2,-63],[8,-85],[-7,-57],[14,-62],[0,-85],[5,-55]],[[24750,68448],[0,-108]],[[24750,68340],[-34,6],[-128,-3],[-23,-33],[1,-69]],[[24516,68252],[0,195],[-4,0],[0,407]],[[29160,63798],[-17,-43],[-5,-31],[-15,-9],[8,-51]],[[27156,59531],[90,-16]],[[22947,71220],[140,1]],[[23091,70512],[-86,0]],[[22328,70417],[-199,1]],[[22129,70418],[-45,1]],[[22084,70419],[1,397]],[[29731,68748],[59,-95],[1,-16],[-14,-82],[-14,-49],[1,-30],[-15,-80]],[[29749,68396],[-14,20],[-7,-107],[-32,39],[-8,-3],[-27,-171],[-16,19]],[[29645,68193],[-46,50],[-7,106],[-5,-2]],[[23066,66081],[2,-56],[22,-56],[-1,-83]],[[23089,65886],[-10,-1],[0,-37],[-68,1]],[[17231,64115],[-67,-611]],[[17164,63504],[-196,1],[-273,-3]],[[29631,68114],[14,79]],[[29749,68396],[18,-24],[36,11],[38,-40]],[[29841,68343],[-4,-56],[6,-22],[-12,-69],[-12,-44],[0,-85],[-19,-67],[1,-64],[-6,-44]],[[25685,69733],[6,80],[31,-17],[-23,-128],[-14,65]],[[25568,69555],[12,14],[2,-63],[-14,23],[0,26]],[[25468,68947],[4,55],[31,133],[26,36],[11,-7],[11,34],[15,-32],[-6,46],[12,97],[27,109],[7,100],[12,-5],[21,32],[1,59],[17,60],[22,-3],[-2,-87],[-16,-5],[-2,-142],[-12,-40],[-8,4],[-5,-53],[-14,-52],[5,-43],[-13,-39],[4,-26],[-18,-33],[-13,-62],[-16,-138]],[[26756,64659],[-86,-2]],[[27304,54454],[-14,13],[-55,-165]],[[27223,54471],[-1,39],[-14,90],[-5,7],[-10,69],[5,38],[-6,46]],[[27192,54760],[2,23],[42,100]],[[21273,66995],[198,-1]],[[21492,65943],[-1,-102],[-16,0]],[[21475,65841],[-170,-4]],[[21305,65837],[-6,-1]],[[22718,67577],[-1,406]],[[25205,69764],[70,-2]],[[25460,69283],[-21,-40],[3,-47],[-11,-59],[-9,-15],[-11,-83],[-12,-42],[-2,-49]],[[25397,68948],[-67,-6],[-3,8]],[[25327,68950],[-3,101],[1,101],[-67,3]],[[8956,90834],[-32,-2],[-253,0],[0,-168],[-304,0],[-114,0],[-205,-194],[-282,-265],[-173,-164],[0,-84],[-291,0],[-17,2]],[[29282,64306],[-7,-34]],[[29275,64272],[-25,-19]],[[29250,64253],[7,35]],[[19456,67942],[22,-58],[18,-75],[0,-93],[66,0],[0,-17],[33,0],[0,-34],[34,0],[-1,-51],[34,1],[0,-34],[33,0],[0,-34],[33,0],[0,-17],[51,0],[0,13],[156,2],[0,33]],[[19955,66336],[0,-201]],[[26836,63264],[6,33],[6,135]],[[26937,63422],[-3,-109],[21,-5],[-2,-103],[11,-2],[-2,-102]],[[23969,55881],[-1,-84],[39,-4]],[[24007,55793],[-3,-419]],[[24718,66777],[164,1]],[[24882,66778],[0,-359]],[[29305,64360],[10,-12],[9,-51],[7,14],[4,-60],[6,-17],[-4,-46],[-24,-23]],[[29313,64165],[-22,6],[3,25],[-11,39],[6,60]],[[23236,69803],[137,0]],[[24848,59579],[72,-2],[1,131],[-2,139],[4,0]],[[24999,59427],[-8,-40],[-13,7],[2,31]],[[24965,59426],[6,-22],[-7,-64],[10,-59],[-10,-43]],[[24882,66778],[0,51]],[[17310,64667],[120,0]],[[17426,62527],[-204,2],[-123,-82]],[[17099,62447],[-9,61],[24,79],[-1,43],[-11,119],[5,39],[14,0],[6,44],[8,3],[-3,48],[19,41],[-1,17],[29,33],[1,61],[6,40],[-7,14],[6,36],[-8,85],[2,91],[7,70],[-2,41],[-20,92]],[[16678,63062],[-54,-331],[-47,-82],[-18,-18]],[[26782,52851],[-1,62],[-6,52],[-38,3],[0,88],[-5,0]],[[20636,67575],[-1,5],[0,540],[1,244]],[[27885,66457],[20,-19],[9,-57],[20,-40],[62,63],[27,19],[28,32]],[[28094,65830],[-170,-1]],[[27924,65829],[-39,1]],[[27885,65830],[0,627]],[[31513,38417],[2,-26],[11,-28],[-2,-27]],[[31524,38336],[-10,-12],[-2,-67]],[[31488,38443],[25,-26]],[[31524,38336],[16,-101]],[[31540,38235],[-8,19],[-14,-6]],[[23655,65253],[0,113],[-10,1],[-1,304]],[[21561,52197],[-1,-588]],[[21560,51609],[-25,22],[-22,-14],[-12,24],[-17,-7],[-4,-22],[-26,21],[-11,50],[-13,-3],[-26,41]],[[26676,57055],[7,11],[55,8],[20,69]],[[26688,56779],[5,43],[-15,74],[3,122],[-5,37]],[[25197,60708],[-93,-3]],[[25073,60709],[1,305]],[[27344,65251],[134,-2]],[[27478,64822],[-134,1]],[[25135,64583],[0,-203]],[[25135,64380],[-16,-2],[1,-101],[-17,-2],[0,-42],[-16,-3],[-9,-33],[-37,-3]],[[24961,64373],[-2,53],[25,149]],[[19966,60755],[0,-253]],[[27171,63760],[2,171],[-27,3],[1,86]],[[23962,70173],[-1,292],[25,0],[0,206]],[[23972,56259],[12,11],[8,-20],[26,36],[6,25],[7,-14]],[[24031,56297],[86,-9]],[[24122,55782],[-8,7],[-18,-21],[-28,38],[-12,-18],[-49,5]],[[26969,65165],[26,7],[17,35],[51,60],[12,-11]],[[27075,65256],[-1,-180],[26,-1],[0,-88]],[[26970,64997],[-1,168]],[[26820,58472],[9,27],[12,-18],[27,55],[13,6],[42,75],[29,18]],[[26989,58502],[-5,-23],[8,-83],[-7,-25],[11,-37],[23,-37]],[[26992,58227],[-19,38],[-10,-41],[-13,11],[-11,-29],[-46,-17],[-15,28],[-20,-42]],[[24600,58809],[129,-4],[3,36]],[[20952,56614],[29,0],[0,-306],[34,0],[0,-190],[58,1],[0,-101]],[[21103,65835],[-181,-2]],[[24091,56692],[51,-6],[25,-33],[9,-47],[10,-18]],[[24031,56297],[3,53],[-8,50],[5,5],[-12,41],[-4,56],[16,-3],[2,201]],[[27082,58800],[12,46],[8,-27],[18,-17]],[[27243,58576],[-19,-105],[-21,-81],[-8,-46]],[[27115,58352],[-13,168],[-32,102],[17,42],[5,47],[-10,89]],[[27071,58743],[11,57]],[[26738,54013],[-8,61]],[[26887,48823],[109,-4],[-1,-204],[55,-3]],[[26961,48307],[-19,133],[-9,94],[-19,140],[-27,149]],[[26909,56467],[-11,28],[-12,5]],[[26886,56500],[-3,8],[-34,-23]],[[26849,56485],[-24,14],[-22,37],[-9,33]],[[26655,53063],[50,-5]],[[26749,52588],[-38,10]],[[26688,52604],[-2,25],[-21,35],[-13,74],[8,15],[2,61],[7,-3],[20,31],[-5,49],[-19,24],[3,51],[-13,97]],[[26385,54844],[-13,0],[-4,-23],[-17,-2],[-5,-20],[-15,14]],[[26315,54794],[8,53],[-8,23]],[[26315,54870],[1,286],[-3,17]],[[28109,56983],[15,-53],[11,4]],[[26514,57005],[38,102]],[[26602,57104],[14,-83]],[[26616,57021],[-11,-37],[-4,-40],[5,-52],[8,-30]],[[26614,56862],[-55,-195]],[[26491,56714],[9,32],[12,0],[11,51],[4,53],[-6,57]],[[24418,63736],[165,-9]],[[24437,63439],[-16,106],[-6,165],[3,26]],[[26551,54736],[14,-26],[0,58],[14,10],[0,34],[8,-3],[0,120],[5,66]],[[26592,54995],[0,1]],[[26621,54963],[11,-13],[6,-77],[-3,-17],[8,-85],[8,-16],[-2,-38]],[[23566,53095],[29,-30]],[[23571,52475],[-32,565],[27,55]],[[23856,69095],[23,10],[16,-32],[14,7]],[[23909,69080],[4,-86],[-1,-101],[12,0],[-1,-101]],[[24989,55687],[38,0],[0,-206]],[[26847,62535],[-6,-257]],[[27689,66145],[33,53],[53,111],[29,91],[30,50],[26,25],[4,19]],[[27864,66494],[8,0],[13,-37]],[[27885,65830],[-154,0]],[[28287,61603],[24,-69]],[[28311,61534],[5,-34],[18,6]],[[28334,61506],[8,-31],[14,-13]],[[24526,59805],[-3,-379]],[[29232,64030],[25,4],[24,-44],[14,-9],[4,44],[4,-90],[-3,-107],[-14,-182],[0,-26]],[[26885,62163],[21,-5]],[[26924,61653],[-12,-9],[-12,22]],[[26880,61763],[-16,61],[-25,15]],[[25382,71549],[40,-3],[15,-30],[8,8],[17,-35],[8,-39],[15,11],[22,-63],[3,-61],[17,-49],[6,-47],[14,-49],[19,-15],[-2,-79],[11,-28],[26,-15],[39,8]],[[25640,70672],[-34,0],[-1,-202],[-35,0]],[[26950,53512],[20,15],[12,44],[0,29],[9,0],[12,44]],[[27054,53461],[6,-54],[8,-22],[-4,-36],[-30,-8],[-9,-21],[0,-30],[-13,-22],[-25,19]],[[5394,42585],[1,40],[11,38],[4,49],[33,72],[8,26],[23,-18],[3,25],[16,-11],[8,14],[15,-20],[10,-37],[5,-45],[0,-46],[-11,-63],[1,-106],[-4,-28],[-28,-78],[-8,15],[-36,12],[-18,71],[-24,29],[-9,61]],[[5266,42374],[4,43],[12,44],[19,45],[2,38],[11,9],[2,-31],[-5,-57],[2,-36],[-20,-28],[-16,-97],[-12,30],[1,40]],[[28154,64919],[16,-73]],[[26648,53718],[3,118],[10,15],[0,57]],[[23627,70810],[4,14],[-1,398],[-4,0],[1,203],[158,-3]],[[23775,70669],[-157,1],[3,27],[-9,37],[15,76]],[[20301,69532],[-136,0],[0,202],[11,-2],[0,374],[-51,13],[0,121],[10,0],[0,51],[-17,0],[0,45]],[[27378,47594],[0,-86]],[[27378,47508],[-108,-8],[-1,308],[-82,-5]],[[26932,56099],[-26,170],[-6,50],[5,53],[-8,-17],[-11,145]],[[27207,53840],[-20,-143],[-27,-44]],[[27074,53945],[16,113],[9,37],[1,58],[15,54]],[[22904,50772],[30,-49],[11,-120],[14,-29],[8,-49],[-2,-40],[21,-122]],[[26507,62635],[4,0]],[[26511,62635],[-17,-563]],[[26444,62138],[0,55]],[[26420,62364],[5,178],[7,34],[-13,23],[17,55]],[[23008,70412],[-4,-128],[-14,-46],[-12,-63],[-22,-39],[-25,-62],[-5,-46],[7,-23]],[[22824,69669],[-1,304]],[[27378,61765],[26,59],[10,-37],[9,12],[19,-12]],[[31257,38463],[-3,-46],[13,-66]],[[31237,38351],[-8,79]],[[31229,38430],[0,22],[-13,40]],[[31216,38492],[23,-4],[18,-25]],[[31271,38188],[2,-76]],[[31257,38463],[15,-6]],[[31272,38457],[1,-138]],[[31275,38321],[19,-28]],[[31294,38293],[-1,-23]],[[31293,38093],[-3,-1]],[[31593,38341],[23,-25]],[[31616,38316],[-5,-39],[-13,-48],[-6,10]],[[31329,37867],[-17,24]],[[30181,67138],[-12,2],[-4,-52],[-16,12],[-39,-10],[13,65],[-61,160]],[[30062,67315],[3,12]],[[24721,61224],[24,60],[10,-7],[12,46]],[[24779,61277],[22,-30],[11,-54],[8,0],[17,-60],[16,7],[3,-27],[-12,-24],[10,-60]],[[24806,60792],[-12,33],[-13,-35],[-72,244],[38,119],[-26,71]],[[28311,61822],[12,41],[19,-32],[13,-50],[20,-19]],[[28375,61762],[-7,-65],[4,-67],[7,-49]],[[28334,61506],[-5,39],[-10,9],[-8,-20]],[[21206,71628],[141,1],[0,34],[106,0]],[[25976,58019],[11,-77]],[[25987,57942],[3,-3],[-1,-270]],[[25989,57669],[-124,3]],[[25865,57672],[-2,0]],[[25863,57672],[0,158]],[[25863,57830],[4,126],[13,71],[-1,44]],[[21429,73451],[0,203],[22,0],[0,101],[37,0]],[[25987,57942],[14,22],[23,-31],[13,28],[-5,58],[15,19],[27,16]],[[26122,57854],[-1,-31],[8,-39],[-7,-55],[-24,-66]],[[26061,57664],[-72,5]],[[23909,69080],[22,23],[11,33],[9,57]],[[26169,63860],[1,-268]],[[23785,71686],[0,213],[-10,25],[11,82],[-32,16],[-7,-24],[-36,87],[4,42],[-15,69],[-10,15],[-59,-76],[-24,34]],[[26699,68754],[-4,-199],[-12,-15],[-14,-64],[-24,2],[-11,-55],[-4,-74]],[[22629,61783],[1,-406]],[[22630,61377],[-61,0],[0,-17],[-21,-1],[0,17],[-72,0]],[[22474,61478],[0,304]],[[23507,62572],[3,-24],[14,-11],[9,16],[5,-31],[17,2]],[[23553,62390],[-54,-1],[-19,18],[-11,-78]],[[21992,49763],[27,1]],[[22203,48678],[-12,8],[1,37],[-12,11],[9,30],[5,86],[-3,31],[4,60],[-13,10],[5,76],[-12,58],[-7,-14],[-7,46],[-9,-18],[-9,39],[-10,-6],[-18,90],[-9,11],[-3,38],[-8,-9],[-10,38],[0,50],[-7,26],[3,41],[-13,48],[2,47],[-17,16],[-7,81],[-10,23],[-8,70],[-22,28],[-14,33]],[[23141,51398],[8,-15],[5,-56],[-4,-33],[9,-12],[-10,-33],[24,-72],[7,-45],[0,-46],[15,-21],[5,-57],[8,-4]],[[23079,50655],[-92,331]],[[22987,50986],[81,185],[12,126],[37,139]],[[26558,55564],[2,-56]],[[26539,55178],[-65,1]],[[26710,56341],[-8,-42],[7,-58]],[[26508,54807],[66,189],[18,-1]],[[26213,54179],[5,-17],[25,-1],[0,-29],[13,-30]],[[26256,54102],[-1,-172],[-13,2]],[[26242,53932],[-33,-8],[-14,10]],[[27145,63680],[-131,17]],[[26256,54102],[70,-5]],[[26342,54097],[-1,-172],[9,-13],[9,-98],[-3,-65]],[[26281,53748],[-35,-2],[-5,110],[1,76]],[[31558,38031],[-14,2]],[[27129,61967],[7,3],[14,-66]],[[27089,61554],[-22,-69],[-15,27],[1,98]],[[27051,61727],[-3,155],[30,57],[51,28]],[[27201,60931],[16,-8],[38,-217],[3,-52],[25,-49]],[[29192,64904],[-37,-137]],[[29155,64767],[-39,-142],[-3,-50],[-16,-26],[-6,26],[-11,-12]],[[25555,55358],[29,3],[2,103],[8,45],[23,-3],[0,77],[13,42],[14,-13],[11,30]],[[25243,57060],[60,-2]],[[25346,56892],[-9,-273]],[[25337,56619],[-94,3]],[[24420,63792],[-2,-56]],[[24293,63444],[1,358]],[[29760,67693],[34,-17],[39,-48],[37,-18]],[[29870,67610],[-21,-107],[-12,5],[1,-73],[-11,-65],[7,-78],[15,-78]],[[29849,67214],[-8,-69]],[[29841,67145],[-39,3],[6,59],[-61,-29],[1,-29],[-16,4],[-6,30]],[[22192,73247],[-98,0],[-1,-407],[10,0],[0,-203]],[[22103,72637],[-71,0]],[[22032,72637],[-36,1]],[[29319,64429],[35,7]],[[29354,64436],[5,-2]],[[29364,64189],[-23,-14],[-30,-40],[2,30]],[[27830,59130],[-76,7]],[[24868,71378],[27,62],[33,17],[15,-17],[29,27],[22,-3],[52,75],[30,94],[43,15],[15,41]],[[24661,52120],[-3,-64]],[[24529,51935],[0,53],[9,61],[15,187]],[[27188,49123],[117,-4]],[[26643,63514],[4,118]],[[26730,63628],[-2,-69],[-12,0],[2,-91],[6,-44],[-7,-18],[2,-122]],[[26717,63148],[-112,25]],[[27381,49327],[100,0],[5,38],[13,7]],[[27499,49372],[17,-141],[18,-212]],[[23602,58132],[-1,49]],[[23598,57605],[4,527]],[[25526,64679],[0,-319]],[[26325,54461],[3,0]],[[27075,65256],[25,-27],[19,15],[20,-9],[29,61],[29,86],[11,20]],[[27208,65402],[1,-72],[27,0]],[[26639,55860],[-2,-47],[-2,-259]],[[17307,67787],[17,-15],[3,-37],[12,-38],[27,-29],[10,-60],[0,-56],[29,-91],[15,-35],[12,-75],[19,-18]],[[17451,67333],[24,4],[13,-73],[-2,-44],[14,-37],[10,-49],[9,-8]],[[17861,65826],[-77,0],[-293,0],[-181,4]],[[17307,65831],[0,1956]],[[15891,60553],[18,-8]],[[15909,60545],[27,10],[6,-16],[16,34],[111,-1]],[[16038,59893],[0,23],[-18,16],[-31,136],[-29,64],[-8,1],[-28,45],[-11,54],[-16,38],[-18,73]],[[15879,60343],[-11,38],[5,9],[-8,40],[4,83],[7,25],[15,15]],[[24006,53430],[10,0],[21,84],[16,26],[26,89]],[[24256,53416],[-11,-34],[-11,-3],[-8,36],[-11,-15],[0,-239],[7,-179],[-20,3]],[[24113,52905],[-63,-7]],[[25337,56619],[-1,-33]],[[25325,56221],[-21,1],[-2,-31],[-21,-53],[-21,-9],[-9,-18]],[[25251,56111],[5,35],[-62,0],[0,153]],[[28939,63476],[20,40],[-17,50],[12,45],[13,-10],[18,-44],[27,106]],[[28999,63493],[-19,-38],[-3,-82]],[[28977,63373],[-20,-27]],[[30021,67006],[1,37],[40,272]],[[30213,67064],[-30,-174],[-2,-44]],[[30062,66695],[-4,15],[-25,20],[-10,59],[-11,2],[-7,123],[19,9],[-3,83]],[[29385,66743],[5,41],[-6,109],[12,33]],[[29396,66926],[52,4],[5,16],[14,-17],[30,0]],[[27357,58148],[-9,-24],[18,-23],[-17,-23],[-9,-82],[2,-133],[-9,-7]],[[24765,59920],[10,16],[10,67],[10,16],[1,40],[10,-1]],[[24874,60157],[28,0]],[[24796,59580],[2,77],[-18,88],[2,37],[-5,45],[-12,43],[0,50]],[[21475,65841],[0,-310],[23,0]],[[21498,65126],[-20,1],[0,-202]],[[21324,64925],[0,202],[-8,0],[0,51]],[[21316,65178],[0,354],[-8,0],[-3,68],[0,237]],[[27924,65829],[1,-183],[-9,-13],[-2,-240]],[[23424,60010],[-94,0]],[[23298,60010],[2,294],[-1,153]],[[23442,59440],[2,187]],[[23441,59035],[1,102],[0,303]],[[25805,65551],[83,0]],[[25805,65171],[0,101],[6,-1],[5,60],[0,92],[-11,1],[0,127]],[[28636,58782],[13,3],[13,30],[26,24],[32,-1],[14,-41],[0,-43],[-14,-78],[3,-55],[2,-164]],[[22825,49041],[-21,-174],[-14,-174]],[[22782,48693],[4,87],[16,180],[10,80]],[[22796,49023],[-13,-158],[1,-15],[-12,-106],[-20,-27],[-7,-27],[-11,18],[14,21],[3,59],[-8,3],[-6,-31],[-20,-58],[-8,-4]],[[22592,48674],[0,436],[32,0]],[[27494,59671],[-1,-41],[-16,-34],[-20,20],[-7,-50],[3,-70]],[[27390,59497],[-22,106]],[[27363,59628],[-30,157]],[[27333,59785],[53,50],[31,35]],[[17253,68510],[14,-50],[19,25],[16,-59],[20,12],[2,-53],[18,-17],[1,-31]],[[17320,68019],[-11,-24],[-2,-59],[0,-149]],[[28546,62046],[18,22],[0,-48],[26,-15]],[[28590,62005],[-1,-41],[6,-73],[-2,-89],[7,-65],[22,-80],[8,-62],[-9,-45],[-15,2]],[[28550,61756],[-1,42]],[[28549,61798],[1,95],[-8,109],[4,44]],[[23463,51482],[-10,31],[-11,-48],[-2,-35],[9,-32],[-10,-54]],[[23439,51344],[-13,4],[-7,-31]],[[23419,51317],[0,0]],[[23419,51317],[-4,-25],[-17,-15],[-14,68]],[[23326,51373],[-49,94],[-63,149]],[[23214,51616],[-38,436],[14,-41],[10,-7],[13,-47],[7,10]],[[28629,59998],[-11,-23],[-10,68],[-29,61],[-14,45],[2,56]],[[8549,88444],[-200,0],[0,34],[-17,0],[0,33],[-33,0],[-20,-18]],[[8279,88493],[-51,29],[-43,-64],[-11,-49],[-19,-14],[-12,-70],[0,-70],[-18,-31],[-25,19],[-36,7],[-74,-17],[-26,43],[-28,16],[-14,-52],[-73,-69]],[[7849,88171],[0,71],[-100,0],[0,202],[-223,0],[-241,0]],[[23800,55915],[-9,40],[-5,-21],[-8,78],[-7,14],[0,38]],[[24915,57163],[-133,1]],[[29238,64193],[0,44],[12,16]],[[29275,64272],[5,-67],[-9,-39],[-38,-78],[-11,-1]],[[22032,72637],[0,-202],[10,0],[0,-403]],[[22042,72032],[-23,0]],[[22019,72032],[-156,0]],[[29077,65850],[92,178]],[[29314,65922],[-2,-84],[-7,-112],[6,-43],[-3,-119],[3,-18],[-3,-193]],[[27495,58547],[-3,30],[-11,7],[-34,83],[-21,8]],[[22052,57171],[19,19],[23,-82]],[[21759,68355],[-33,0],[0,203],[3,0],[0,404],[5,0],[0,67]],[[23789,63810],[110,3]],[[23900,63541],[0,-76]],[[16478,62531],[0,-61]],[[29571,65876],[-6,-84],[40,7],[-8,-88],[-7,-2],[-4,-48],[2,-56],[-19,-9],[9,-185]],[[29429,65443],[9,446]],[[26032,53253],[63,6],[-1,-236]],[[26094,53023],[-3,-1]],[[26091,53022],[-149,-4]],[[25899,53019],[-1,231]],[[26114,53393],[66,-9],[25,1]],[[26229,53027],[-135,-4]],[[27176,59589],[20,45],[-3,29],[29,18],[15,27],[34,27]],[[27271,59735],[22,-6],[27,11],[1,24],[12,21]],[[21170,62382],[2,106],[0,509]],[[23127,65675],[-7,46],[6,11],[3,66],[-16,6],[1,30],[-15,11],[5,16],[-15,25]],[[23846,52873],[1,-51],[-9,-33],[-9,-63],[-3,-73],[-12,-25],[-2,-68],[-14,-30],[-3,-40],[7,-24],[5,-91],[-12,-45]],[[26788,56162],[13,46]],[[26801,56208],[20,-131],[3,25],[15,16],[20,-52],[14,10],[3,-24]],[[26876,56052],[-7,-14],[-4,-55],[-8,-34],[-18,12],[-15,-64],[5,-27]],[[22051,57387],[0,331]],[[23059,54573],[19,-30],[8,-55],[14,-7],[10,-50],[12,9],[-6,-39],[3,-26],[15,2],[2,-99],[11,12],[3,-85]],[[23150,54205],[-123,-252]],[[26931,54154],[12,290],[1,87],[8,71]],[[27001,54561],[5,-104],[9,-73],[-3,-38],[-9,-257]],[[24659,61264],[8,-8],[-1,-63],[8,-14],[47,45]],[[20815,59101],[119,-1]],[[19247,69523],[-46,0],[0,206],[3,0],[0,373],[-1,135],[-20,0],[0,406],[3,59]],[[26085,60656],[20,153],[13,52]],[[26118,60861],[8,-33],[0,-34],[9,-25],[23,-24],[64,0]],[[25909,58793],[3,-46],[-8,-35],[-5,-141],[-5,-69]],[[25883,58418],[-27,38],[-20,-48],[-3,34],[-19,6],[-6,36],[-34,15],[-1,-18]],[[25773,58481],[-13,28]],[[15809,73109],[7,53]],[[15811,72557],[1,34],[15,46],[9,119],[22,25],[-1,69],[-14,23],[-23,86],[1,74],[-10,48]],[[15811,73081],[-2,28]],[[26368,62449],[-13,5],[-20,-29]],[[26335,62425],[-15,28],[-15,54],[-7,2],[-18,-48]],[[26280,62461],[0,233]],[[22730,56399],[22,21]],[[25266,64221],[-32,-1],[-3,165],[-96,-5]],[[23921,57418],[-30,-1],[0,-33]],[[26269,55206],[0,-5],[-91,2]],[[26911,49121],[140,1]],[[26887,48823],[-14,56],[-4,58],[-10,61],[10,-19],[1,-30],[15,30],[10,72],[12,28],[4,42]],[[28830,61117],[6,-4],[6,55]],[[28842,61168],[107,38]],[[28949,61206],[-16,-79],[-15,-98],[-8,-27],[-5,21],[-15,-7],[-19,-78],[-12,-70],[-11,-126],[1,-64],[-20,-105],[-1,-23]],[[28755,60650],[3,59],[16,79],[18,110],[-4,34],[21,17],[15,65],[1,28],[-20,21],[25,54]],[[28738,60998],[7,-15],[-7,-27],[0,42]],[[28739,61120],[-11,-44],[-3,44]],[[28725,61120],[14,0]],[[26674,55236],[50,-366]],[[28682,62165],[-1,90],[-8,17],[-17,-47],[-12,4],[1,-48],[-12,-17],[4,104],[16,101],[7,-51],[21,-11],[11,31],[-6,54],[7,56]],[[24585,64247],[-33,-5],[-45,3]],[[24507,64245],[18,41],[2,27]],[[23353,59440],[89,0]],[[23321,58934],[0,202],[2,1],[0,303],[30,0]],[[29360,64523],[0,-37],[-13,2],[7,-52]],[[26644,64455],[5,0],[0,-136],[16,1],[5,-18]],[[26542,64253],[0,204]],[[22784,65128],[23,5],[9,-19]],[[19529,62765],[0,-537],[-2,-216],[0,-255]],[[18656,73371],[31,-39],[23,-6],[0,-52],[55,-1],[0,-51],[36,0],[0,-151],[71,0]],[[16559,62631],[8,-49],[10,-16],[24,-1],[-3,-58],[6,-69]],[[26938,52021],[88,8]],[[27026,52029],[-1,-39],[-22,-88],[-10,-7],[-13,-84],[-31,-39]],[[8470,87637],[-81,0],[1,129]],[[8390,87766],[7,13],[-22,63],[-29,36],[-38,-14],[-51,63],[-24,-1],[-40,42],[-25,68],[-39,66],[-29,28],[18,55],[24,9],[31,124],[23,18],[8,60],[46,27],[30,45],[-1,25]],[[8053,88108],[6,38],[18,-11],[-20,-43],[-4,16]],[[25134,70573],[0,-107],[-32,0],[0,-101]],[[25102,70365],[-36,5],[1,-50],[-35,5],[0,47],[-35,-3],[-172,-2]],[[25009,55890],[12,11],[6,31],[16,26],[22,16],[26,1]],[[22784,63911],[0,-406]],[[26303,56611],[0,-154],[4,0],[0,-164]],[[26257,56263],[-38,36]],[[17639,63651],[93,1],[271,-11],[134,-2]],[[17872,61963],[-253,564]],[[23527,55113],[55,-115],[31,0],[28,39],[4,26],[12,-7],[3,-42],[15,-6],[10,44],[12,-11],[-5,-21],[9,-29],[10,6]],[[23711,54997],[0,-350]],[[26401,55764],[-2,-50],[-11,-61],[-18,1]],[[26064,63254],[-10,0],[0,-102]],[[24311,54157],[12,-21],[18,-95],[14,12],[17,50],[6,53],[14,-1],[0,-101],[6,-1]],[[24326,53336],[-21,36],[-10,-29],[3,-39],[-16,-15],[-5,66],[1,50]],[[26360,62096],[32,17]],[[26376,61806],[-16,290]],[[27271,59735],[-2,33],[-16,126],[-14,61]],[[19649,69323],[104,-1]],[[19753,69322],[94,2]],[[21734,69029],[-24,-62],[-36,-7],[-4,-27],[-22,-31],[-15,-66],[-35,-10],[-10,15],[-23,-21],[-17,-46],[-38,6],[-16,-26]],[[30177,65078],[18,0],[19,90],[27,60],[11,-15],[7,-70],[15,-27],[10,40],[-1,-84],[-41,1],[-31,-9],[-18,-47],[-16,61]],[[30216,65279],[7,-15]],[[30223,65264],[-18,-31],[-16,-47],[-21,-28],[-23,-15],[6,26],[35,34],[30,76]],[[26614,56862],[17,-50],[22,11],[22,-75]],[[25596,64921],[0,-357],[2,0],[0,-204]],[[23208,56333],[13,24],[8,-21],[3,34]],[[23205,55892],[1,426],[2,15]],[[23627,70810],[-23,64],[-10,-1],[-20,-34],[-25,28],[-8,26]],[[26146,63255],[1,-305]],[[16298,57653],[5,101],[-1,72],[-18,56],[-14,7],[-3,-21],[-27,55],[-11,48],[10,131],[-2,50],[-11,53],[-27,14],[-27,102],[-18,101],[-24,25],[-17,66],[-1,45],[-8,50]],[[22630,61377],[61,0]],[[21825,62494],[-2,-505]],[[26601,62979],[26,-7],[-4,-193]],[[26546,62626],[-35,9]],[[25327,68950],[-1,-110]],[[23602,58132],[-11,-12],[-6,-54],[4,-23],[-21,0],[-11,21],[-6,-28],[-15,-10],[-6,40],[-18,32],[-16,-39]],[[26256,59028],[10,-22],[11,-62],[7,8],[4,-36],[20,-76],[11,-100]],[[26319,58740],[-13,-58],[-15,-39]],[[26291,58643],[-5,0],[-33,-74]],[[26159,58574],[0,1]],[[26154,58599],[1,7]],[[25993,55935],[15,67]],[[26136,56114],[9,-198]],[[26869,66626],[-25,-34],[-7,-32],[9,-27],[2,-45],[-15,4],[-11,-52],[1,-84]],[[26764,66351],[-5,514]],[[26661,66856],[0,-5],[-66,-6],[1,-102]],[[25178,66404],[19,1]],[[21315,72610],[0,-174],[-128,0],[1,-377],[-1,-25]],[[25068,60090],[-3,-48],[14,-52]],[[24979,60303],[-8,40],[9,57]],[[25162,53024],[114,0]],[[25279,52718],[-131,0]],[[29166,64287],[25,77]],[[24925,65750],[-130,-2]],[[24795,65748],[-4,32],[7,61],[-4,28]],[[24794,65869],[-4,50],[2,48],[-13,41],[-31,48]],[[26617,54020],[36,-8]],[[26606,53687],[-19,63],[-22,1],[-1,210]],[[15813,60835],[10,-108],[-2,-27],[27,-23],[27,-80],[8,5],[8,-49]],[[15879,60343],[0,-82],[-25,0],[0,-29],[-21,-4],[7,-93]],[[15840,60135],[-12,12],[-2,31],[-17,60],[-4,62],[5,129],[-12,89],[-2,52],[-12,14],[-6,33],[-1,64],[7,79],[-2,75]],[[27066,54897],[44,49]],[[27110,54946],[11,-9],[8,-41],[23,-70],[40,-66]],[[27074,54503],[4,20],[11,151],[-17,72],[2,42],[-17,29]],[[24794,65869],[-207,1]],[[22445,47502],[-19,-22],[-13,35],[-15,69],[-10,8],[-2,33],[-8,12],[-18,-15],[-21,47],[-12,-3],[-8,20],[-12,-19],[-9,44],[6,50],[-10,56],[-11,13],[-1,41]],[[29155,64767],[0,-51],[15,14],[16,-49],[25,-15],[6,-30],[2,-89]],[[21834,64318],[155,0]],[[22343,55304],[105,-3]],[[26541,65234],[-128,-2]],[[24125,66887],[0,356]],[[31521,37981],[6,-19]],[[31548,37871],[-18,-15],[-12,12]],[[29880,69333],[111,6]],[[29917,68632],[-8,-8],[-5,-52],[-7,-8]],[[29897,68564],[-26,108],[21,64],[-15,60],[19,74],[-19,42],[20,81],[-28,61]],[[25733,57673],[130,-1]],[[25865,57672],[14,-53],[-10,-1],[-15,-83],[6,-49],[-4,-17],[1,-63],[-5,-32],[-1,-119],[9,-39]],[[16666,61797],[48,-140]],[[17564,54910],[-284,-98],[-3,98],[-9,62],[-8,20],[-14,-23],[-3,66],[1,71],[-8,41],[9,61],[-9,161],[-13,127],[-9,54],[-40,193],[-25,62]],[[21114,65834],[0,-302],[-2,-51]],[[21112,65481],[-190,-2]],[[25327,58175],[12,-51],[20,5],[17,39],[11,-29]],[[25387,58139],[6,-48],[-4,-60],[10,-5],[-1,-337]],[[25293,57677],[-5,0]],[[23711,55216],[0,-219]],[[26634,57674],[1,-54],[-15,-9],[0,-30],[-16,-40],[2,-65]],[[26606,57476],[-9,-26]],[[26335,62425],[7,-227],[-5,-90]],[[26337,62108],[-12,-29]],[[26264,62374],[-3,42],[19,45]],[[25875,66319],[142,1]],[[25889,65914],[0,200],[-39,0]],[[25850,66114],[19,134],[6,71]],[[21856,52198],[0,-774]],[[21829,50979],[-23,47],[-2,30],[-17,46],[-18,25],[-13,84],[0,21],[-26,21],[-6,44],[-23,7],[3,57],[-2,65],[-5,5],[-6,-67],[-6,27],[2,53],[-17,27],[-13,108],[-8,-4],[-9,32],[-13,-25],[-7,44],[-8,-27],[-37,-13],[-15,23]],[[26799,55015],[-75,-145]],[[26526,54013],[-11,-52],[-9,-2],[6,-42],[-12,-57],[4,-77]],[[26426,53750],[0,89],[3,108],[7,0],[0,43],[-9,43],[-13,10]],[[27001,54561],[58,-46]],[[30373,68726],[24,-2],[2,26],[-10,25],[9,69],[24,-16],[7,42]],[[30547,68558],[-5,-73],[-7,-22],[-28,21],[-5,-60],[3,-119],[-28,16]],[[23863,67576],[0,-284]],[[24018,54362],[10,-77],[6,-117],[-7,-152],[-11,8],[2,-32],[-8,-56],[-1,-85]],[[31360,38458],[15,-4]],[[31375,38454],[3,-58],[-6,-31]],[[21654,65938],[0,-406]],[[24440,68141],[-4,20],[-33,27]],[[15747,61952],[45,43],[19,115],[7,16],[-6,55]],[[15812,62181],[12,-34],[17,5],[18,-163],[16,-52],[11,-83],[7,-82]],[[23859,69806],[-1,-197]],[[23858,69609],[-2,1]],[[23709,69815],[-26,82],[-2,77]],[[20380,53476],[-23,14],[-35,78],[-11,88],[-10,24],[-6,68],[-13,89],[-9,41],[-19,38],[-11,-19],[-11,41]],[[25658,60081],[31,10]],[[25781,59874],[-12,-8],[-10,-37],[-17,-136],[-3,-91]],[[26853,62581],[32,-7],[-1,-15],[32,-10],[-1,-42],[33,-8],[-3,-120]],[[27221,53045],[-14,-45],[13,-24],[11,24],[1,-81],[-16,-161],[5,-70]],[[27084,53082],[5,55],[21,3],[6,45],[15,38]],[[99917,77451],[12,-2],[12,35],[26,14],[31,-61],[-9,-68],[-24,-42],[-12,-5],[-25,29],[-11,29],[0,71]],[[99678,77049],[5,24],[26,-29],[19,3],[27,-24],[4,-31],[24,-42],[27,-78],[25,-26],[11,-57],[44,-11],[21,-33],[-18,-19],[-9,14],[-29,-16],[-15,41],[-41,72],[-30,101],[-30,43],[-17,-8],[-22,25],[-22,51]],[[99628,77446],[9,11],[20,-16],[11,-33],[-14,-49],[-10,-4],[-16,91]],[[99570,77271],[19,-7],[21,-67],[-22,15],[-18,59]],[[99530,77510],[7,22],[17,-22],[3,-34],[-17,-20],[-10,54]],[[99282,77351],[24,27],[15,50],[39,26],[6,63],[16,96],[11,18],[20,-52],[-12,-32],[-8,-57],[-20,-53],[21,-18],[0,-35],[-13,-10],[-42,17],[-17,-31],[-4,-70],[-11,2],[-25,40],[0,19]],[[98911,77903],[26,-13],[-18,-27],[-8,40]],[[98408,78327],[22,-8],[3,-26],[-24,15],[-1,19]],[[98376,78346],[14,-8],[0,-29],[-14,37]],[[98352,78374],[20,-27],[-12,-2],[-8,29]],[[98210,77943],[6,31],[19,27],[23,-6],[26,67],[41,5],[-17,-40],[-5,-37],[10,-104],[-21,0],[-17,52],[-35,-19],[-30,24]],[[97960,78551],[47,86],[33,11],[100,-20],[29,-63],[24,-15],[35,-94],[2,-18],[-35,-8],[-21,38],[-17,-71],[-9,-13],[-38,15],[-26,-41],[-27,32],[-12,40],[-3,63],[-32,56],[-35,-24],[-15,26]],[[3147,79003],[17,23],[22,53],[25,5],[37,40],[9,27],[28,-21],[14,19],[8,44],[22,-19],[3,72],[24,-11],[-17,106],[20,32],[8,-16],[15,18],[-18,35],[4,39],[17,23],[29,-1],[9,-68],[15,7],[-7,50],[13,31],[-53,47],[-14,-21],[-32,81],[0,46],[31,92],[42,50],[36,32],[6,-15],[23,13],[16,-63],[-16,-42],[7,-35],[17,-18],[14,53],[6,-33],[15,29],[-1,41],[18,63],[15,-58],[11,26],[20,-62],[-8,-56],[-23,-13],[-24,-70],[-40,-70],[2,-39],[34,54],[58,64],[4,22],[22,22],[7,-19],[-5,-72],[-16,-51],[-26,-34],[-6,-23],[-45,-51],[-30,-20],[12,-46],[-16,-1],[-4,-61],[-16,17],[-7,-70],[-20,25],[-4,-76],[-36,-13],[-22,30],[-10,-31],[-12,23],[-21,-37],[-6,11],[-44,-73],[-3,-31],[-23,4],[-16,-23],[-13,-60],[-28,23],[-9,-45],[-49,40],[-15,36]],[[2812,78476],[27,27],[-1,59],[18,0],[10,36],[0,57],[21,33],[5,57],[-10,16],[11,87],[46,106],[16,-26],[27,16],[28,-3],[-9,65],[-12,5],[9,77],[-6,26],[18,76],[40,67],[54,37],[29,-53],[31,1],[2,-23],[-21,-74],[5,-60],[-55,-95],[-65,-72],[-19,-66],[-1,-36],[-28,-81],[-15,-58],[-25,-10],[-28,-71],[-15,-17],[-4,-51],[-15,21],[-27,-49],[-54,-69],[13,45]],[[2752,78371],[29,49],[-1,-45],[-26,-25],[-2,21]],[[2615,78610],[4,50],[19,16],[4,-44],[-9,-45],[-12,-8],[-6,31]],[[2607,82847],[50,-13],[29,5],[10,-14],[-27,-68],[-23,4],[-9,46],[-20,10],[-10,30]],[[2611,78728],[8,-39],[-15,13],[7,26]],[[2547,78457],[17,17],[23,-3],[-2,19],[27,23],[19,-10],[10,-25],[-17,-105],[-30,50],[-25,-29],[-19,14],[-3,49]],[[2517,78521],[8,26],[23,-16],[1,-31],[-14,-31],[-13,16],[-5,36]],[[2497,78313],[4,72],[33,-18],[-7,-57],[-30,3]],[[2431,83489],[9,43],[22,15],[12,-10],[29,22],[-2,-56],[-32,-62],[-5,31],[-33,17]],[[2316,78170],[5,42],[40,72],[31,-27],[1,-27],[-13,-58],[-19,2],[-17,-26],[-15,-48],[-15,21],[2,49]],[[2228,78152],[9,-32],[-16,2],[7,30]],[[2183,78046],[17,42],[16,-37],[-12,-55],[-19,-1],[-2,51]],[[1818,77819],[15,59],[33,49],[12,-2],[27,-39],[-1,-41],[-28,-51],[-32,-27],[-22,-1],[-4,53]],[[1421,77626],[35,0],[33,-31],[9,30],[14,-2],[33,27],[25,-1],[-6,-28],[10,-29],[8,15],[31,-24],[23,16],[10,-11],[32,11],[5,-12],[41,-7],[-25,-23],[-16,6],[-14,-22],[-44,-1],[-22,-35],[-8,16],[-16,-19],[-19,4],[-18,25],[-52,3],[-9,-15],[-29,19],[-10,49],[-11,-1],[-10,40]],[[1064,77503],[55,37],[11,-28],[25,50],[3,-22],[19,38],[5,29],[18,-29],[27,8],[8,34],[6,-24],[35,37],[1,42],[44,10],[-13,41],[43,-5],[13,34],[-1,36],[-32,7],[-23,29],[5,26],[21,-16],[12,36],[-2,39],[38,46],[33,-32],[22,-76],[1,-31],[-21,-85],[-34,8],[-4,-43],[33,-79],[-3,-24],[-15,21],[-17,-10],[-4,-27],[-16,-4],[-20,23],[-19,-95],[-25,31],[-64,-55],[-13,29],[-29,12],[-23,-6],[-13,-35],[-22,-8],[-33,6],[-32,25]],[[1013,77451],[17,17],[7,-29],[-22,-4],[-2,16]],[[1005,77685],[16,-19],[-11,-12],[-5,31]],[[949,77433],[5,9],[40,-3],[1,-26],[-19,3],[-22,-24],[-5,41]],[[890,77452],[11,14],[28,-1],[15,-90],[-16,5],[-17,49],[-21,23]],[[821,77563],[14,45],[26,-9],[23,-80],[-20,-38],[15,-56],[-13,-34],[-18,-2],[-18,22],[3,57],[-7,2],[-8,77],[3,16]],[[811,77269],[5,56],[12,10],[10,-27],[19,10],[-12,22],[34,30],[10,-23],[-2,-55],[-23,0],[13,-52],[-29,29],[2,-40],[-12,12],[-5,-39],[-7,45],[-15,22]],[[601,77040],[11,67],[15,16],[7,36],[-13,66],[4,27],[32,7],[7,59],[-13,69],[10,45],[15,4],[18,-20],[19,59],[9,-14],[3,-74],[-20,-29],[-2,-50],[13,-20],[19,4],[31,26],[30,5],[7,-64],[-7,-88],[-15,-12],[-36,18],[-13,-52],[-18,-12],[-13,-41],[-23,31],[-6,-25],[6,-48],[-11,17],[-13,-26],[-4,55],[-14,29],[-19,-108],[-14,11],[-2,32]],[[469,77371],[13,9],[2,-26],[-14,-17],[-1,34]],[[402,77131],[18,33],[24,-17],[26,34],[50,39],[21,43],[2,128],[12,16],[16,-10],[15,-44],[-26,-98],[5,-86],[-7,-38],[-33,-31],[-36,61],[-27,-33],[-40,-10],[-1,-43],[-10,5],[-9,51]],[[257,77332],[8,29],[29,17],[39,-5],[11,-42],[-2,-30],[19,-32],[15,17],[18,-17],[33,34],[-10,-40],[-41,-32],[-12,-71],[4,-31],[-12,-31],[-8,16],[-9,-44],[8,-57],[-8,-5],[-9,56],[-14,-24],[-16,48],[-13,8],[4,28],[41,25],[-3,64],[-20,1],[-13,34],[-39,66],[0,18]],[[130,77016],[32,-12],[-3,-18],[-27,7],[-2,23]],[[81,76979],[27,-17],[7,-23],[-25,5],[-9,35]],[[77,77233],[14,52],[20,-35],[0,-61],[-19,-10],[-15,54]],[[43,76751],[8,25],[10,-22],[5,-50],[-12,-2],[-10,-32],[-1,81]],[[3,76640],[12,18],[6,-59],[-18,-25],[0,66]],[[7905,86007],[29,90],[15,-17],[-1,-46],[-28,-74],[-15,19],[0,28]],[[7695,85792],[26,-14],[-3,-36],[-23,50]],[[7642,85774],[22,-17],[-7,-33],[-14,14],[-1,36]],[[7602,85813],[20,-2],[-5,-34],[-15,36]],[[8515,86711],[-14,-25],[-34,50],[-29,-40],[-15,52],[-27,-21],[-22,5],[-9,28],[24,74],[-9,14],[-27,-38],[-29,-175],[-30,-42],[-9,18],[14,55],[13,84],[-15,172],[-16,5],[-5,-28],[1,-81],[13,-53],[-10,-4],[-10,-72],[-17,11],[-8,-20],[-5,-68],[-11,-17],[4,-47],[25,-31],[-6,-74],[-27,32],[-12,127],[8,37],[-11,78],[-17,6],[6,-52],[-8,-49],[5,-196],[-5,-64],[-27,74],[-1,43],[-16,28],[-34,31],[3,-40],[24,-36],[-1,-63],[-69,-158],[-32,-91],[0,-36],[-16,-10],[-9,-86],[-12,2],[-3,70],[34,211],[0,29],[-26,-65],[-19,-111],[-12,11],[-9,142],[-13,-52],[-11,2],[16,-62],[-5,-80],[-39,0],[-8,-61],[-18,-24],[-22,-55],[7,-43],[-15,-41],[-16,-10],[0,54],[-16,36],[-13,-45],[-1,-53],[-22,-17],[-24,31],[-9,-23],[-21,38],[-7,43],[-12,-36],[-21,-27],[6,-35],[-20,0],[-5,-39],[-41,-7],[-6,76],[-22,-14],[-21,22],[3,22],[-21,8],[-3,70],[8,36],[16,18],[5,71],[32,31],[9,-11],[29,51],[33,3],[0,45],[33,21],[34,62],[31,-9],[-11,69],[22,26],[3,32],[37,102],[-13,15],[-24,-22],[-60,-109],[-30,-20],[-18,-39],[-39,16],[-43,67],[-15,40],[-5,46],[18,117],[13,45],[15,133],[27,79],[17,33],[35,99],[11,98],[0,71],[23,32],[5,156],[4,27],[-18,44],[-22,163],[39,35],[5,27],[63,27],[89,164],[92,118],[51,-161],[41,-16],[13,-27],[34,112],[30,8],[36,-45],[19,10],[63,-48],[65,-20],[22,-41]],[[7540,87187],[29,79],[8,112],[31,-29],[-28,-64],[-9,-49],[5,-24],[-36,-25]],[[7385,86976],[17,6],[5,-88],[-22,82]],[[7129,86075],[41,28],[18,-43],[-5,-48],[-13,-16],[-29,-3],[-16,59],[4,23]],[[7849,88171],[-14,-15],[-39,-154],[-36,-12],[-19,-31],[-33,2],[-39,-63],[-48,-109],[-1,-29],[26,-124],[-2,-23],[-38,25],[-19,-18],[-30,-52],[-21,-92],[-27,-29],[-32,-74],[-6,-73],[8,-34],[19,-24],[-40,-56],[-9,-67],[-13,-4],[-28,-70],[-19,-7],[-9,28],[-25,-11],[4,-68],[16,-13],[-3,-30],[25,-42],[8,-35],[-12,-73],[-19,-47],[-7,-62],[-25,-21],[-4,-22],[-39,-2],[-15,12],[-40,-31],[-18,3],[-19,-60],[23,16],[15,-20],[15,30],[19,1],[7,-50],[-16,-116],[-19,-16],[-26,-51],[-28,37],[5,-34],[-13,-18],[-18,18],[7,35],[2,75],[-22,71],[3,-119],[-9,-55],[-18,-15],[-13,25],[-6,-35],[16,-28],[-9,-53],[-49,-10],[17,-93],[-8,-32],[-27,-21],[-10,8],[-24,-45],[-12,13],[-36,-37],[5,-26],[20,-18],[-23,-32],[-7,-43],[2,-61],[-12,-44],[-24,-35],[24,-26],[-6,-59],[10,-60],[27,63],[59,-23],[16,22],[12,-22],[15,25],[22,-78],[19,-27],[19,13],[23,-34],[18,-53],[8,-53],[13,-23]],[[27221,52456],[9,-33],[4,-95],[1,-113],[4,-59]],[[27052,52080],[0,100]],[[29960,64853],[11,80],[5,-14],[1,-76],[-17,10]],[[30017,65428],[1,-75],[-12,-11],[8,-53],[0,-72],[-10,-45],[-8,-73],[-12,6],[-27,-18],[-27,-34],[-38,-30],[-1,16]],[[20547,62997],[-53,3],[-67,-4]],[[24065,59426],[2,359]],[[24132,59427],[-67,-1]],[[21075,61776],[0,8],[92,2],[0,101]],[[21287,61485],[-183,-2]],[[22824,47685],[8,-123],[11,-260],[-7,47],[-5,147],[-12,189]],[[22789,47685],[15,-135],[5,-29],[-9,-47],[4,-34],[-1,-62],[8,-72],[20,-11],[1,-35],[12,18],[2,-127],[-23,7],[-13,-8],[0,-19],[-21,-12],[-6,-99],[-20,11],[-7,40],[-15,3],[-6,55],[-11,4],[-18,98],[-31,12],[-11,33],[-19,-4]],[[24065,59426],[-23,0]],[[22581,58122],[-58,-1],[0,162],[-2,41]],[[23857,58571],[-1,-34],[41,-5],[58,-1]],[[26310,52211],[128,4],[3,-34],[47,0]],[[26487,51973],[-22,-26],[-31,29],[-1,-35],[-26,-69],[7,-56]],[[26357,51875],[-13,21],[-10,39],[-12,76],[0,63],[-8,73],[-11,24],[7,40]],[[26452,70053],[21,-76],[3,-57],[17,-27],[33,4],[8,-9],[29,-77],[23,-7],[34,-71],[29,6],[21,-78],[11,-25],[-9,-27],[7,-45]],[[26440,69554],[-1,97],[-1,401],[14,1]],[[25321,65510],[65,5],[0,-50]],[[31642,38028],[49,54],[35,-32],[-18,-26],[-21,-7],[-11,-24],[-8,12],[-17,-17],[-9,40]],[[17074,62424],[25,23]],[[25147,68037],[135,-3],[0,53]],[[25349,68033],[0,-406]],[[25349,67627],[-66,1]],[[24507,64245],[-18,1],[-31,-43],[-13,-69],[11,-35],[-4,-90],[2,-50],[-12,-16]],[[29250,67427],[77,31],[7,-79],[9,-29],[-2,-65],[9,1],[9,-32],[9,52],[26,43],[14,2]],[[29408,67351],[-2,-44],[6,-69],[-3,-87],[4,-18],[-1,-73],[-16,-134]],[[29268,66975],[-12,315]],[[24221,52850],[110,-1]],[[24348,52441],[21,-120],[-37,0],[-16,27],[-19,-26],[-11,14],[-3,-45]],[[23140,57310],[58,0],[0,-101],[59,1]],[[23168,56701],[-116,0]],[[27022,62986],[31,-6]],[[27053,62980],[-3,-106],[59,-11]],[[26991,62576],[2,104],[-10,2],[2,104]],[[25699,53993],[-86,-3],[-8,4],[-72,-3]],[[27624,63483],[1,30],[11,-16],[21,43],[0,36],[11,33],[-11,41]],[[27657,63650],[37,2],[17,-17],[13,-36],[12,-1],[4,27],[27,45],[36,-81],[3,-35],[14,-4]],[[27689,63178],[-43,0]],[[25683,56353],[12,18],[-1,42],[11,9],[18,47],[8,-6],[25,101],[-1,49],[10,4]],[[25765,56617],[0,0]],[[25765,56617],[4,26],[15,14],[23,155],[18,8]],[[24792,52135],[1,-52]],[[26319,58740],[21,42],[14,7],[3,21],[27,20],[29,73]],[[26433,58742],[2,-16]],[[26346,58432],[-10,1]],[[26307,58559],[-9,1],[5,29],[-14,41],[2,13]],[[31540,38235],[6,-27]],[[21912,70421],[172,-2]],[[22129,70418],[1,-404]],[[31286,37841],[-2,-1]],[[24519,52238],[-47,-1],[-3,25],[-21,76],[-10,52],[-15,51]],[[25690,62890],[-21,0],[0,153]],[[18822,67018],[-132,3]],[[24707,71654],[8,83],[12,4],[-5,-75],[-15,-12]],[[24691,71507],[21,33],[-14,-47],[-7,14]],[[24655,71564],[5,21],[30,29],[5,-13],[-11,-48],[-24,-11],[-5,22]],[[24625,71464],[3,27],[20,41],[1,-19],[-24,-49]],[[24631,71609],[14,-54],[-13,-3],[-8,37],[7,20]],[[24621,71679],[35,36],[11,-55],[14,34],[2,-44],[-16,-9],[-17,-49],[-11,42],[-16,20],[-2,25]],[[24616,71401],[17,18],[32,86],[14,-32],[-30,-33],[5,-35],[-17,-4],[-20,-37],[-1,37]],[[24579,71168],[37,46],[11,25],[5,54],[11,-33],[41,-93]],[[27886,62061],[17,103],[35,-101]],[[27972,61415],[-41,116],[-5,-3],[-87,203]],[[20348,73978],[294,0]],[[20642,73978],[0,-103],[5,0],[0,-303],[18,0],[0,-101]],[[31229,38430],[-12,-28],[-9,-55]],[[31200,38377],[-2,73],[7,32],[11,10]],[[31513,38417],[13,9]],[[31290,38461],[20,-4]],[[31294,38293],[4,50],[-4,30],[-4,88]],[[23139,52124],[2,4],[79,20]],[[23214,51616],[-41,-70],[-17,-1]],[[31580,37974],[-9,-19],[-6,-48]],[[26305,70240],[4,-25],[45,-75],[26,-58],[13,20],[11,-16],[13,10],[35,-43]],[[19321,69518],[0,-193]],[[23965,52355],[0,203],[42,1],[0,325]],[[25140,54451],[-114,-1]],[[24456,51930],[-6,51],[-21,0],[-3,148],[-24,15],[-17,79],[-5,154],[-17,64]],[[24765,59920],[-26,5],[-91,0]],[[28536,67395],[7,1],[23,87]],[[28661,66729],[3,-172]],[[26689,57352],[-22,36],[-13,-27],[-20,30],[-10,82],[-18,3]],[[26063,52829],[1,33],[19,134],[8,26]],[[31467,38261],[2,85]],[[25642,56884],[0,-17]],[[26202,61218],[-8,-48],[-11,2],[0,-30]],[[26183,61142],[-64,-37],[-25,59]],[[26094,61164],[-8,24],[13,99],[12,25]],[[15682,71846],[13,14],[11,-66],[22,-22]],[[22851,68791],[68,1]],[[22919,68792],[120,0]],[[22659,49740],[2,7],[-78,559],[24,31]],[[28423,61914],[-1,45],[13,37]],[[28435,61996],[11,-104],[7,35],[15,17],[29,-3],[32,-47],[2,-69],[18,-27]],[[28501,61588],[-6,-27],[10,-68],[-2,-22],[-22,43],[-2,34],[-13,31],[-12,114],[-20,-44],[-33,-56],[-12,27],[-7,115],[11,82],[15,57],[20,30],[-5,10]],[[28511,65354],[165,-57]],[[23494,55334],[-20,50],[-12,56],[-22,3],[-22,-45],[-9,-4]],[[25805,58095],[10,8],[4,-27],[15,-23],[3,33],[11,1],[32,75]],[[25863,57830],[-14,2],[0,50],[-7,74],[-19,67],[-18,22],[0,50]],[[23001,56396],[-2,57],[6,24],[-14,52],[12,-3],[10,67],[-11,58]],[[23208,56333],[-25,54],[-1,-30],[-30,-29],[-15,13],[1,-20],[-14,8],[-8,-90],[-14,-14],[-19,19],[-7,-81],[-12,-3],[-4,39]],[[23060,56199],[-14,62],[-21,-6],[-8,57],[-11,-4],[-16,30],[11,58]],[[26310,52211],[-1,39],[20,64]],[[25251,56111],[3,-43],[8,-11],[-6,-28],[4,-66],[-12,33],[-5,-29],[-16,-22],[-20,-2]],[[25110,56009],[0,85],[-4,-2],[0,123]],[[23432,63654],[3,-25],[-8,-45],[14,-27],[6,-121],[-1,-52]],[[28051,67098],[0,-257]],[[27864,66494],[7,51],[13,36],[4,52],[36,56],[19,54],[-4,80],[-13,40],[2,43],[-7,37],[-23,35],[2,72],[-4,22]],[[26992,61441],[-6,-98],[7,-43],[19,-72],[-31,-119]],[[20545,71862],[22,0],[0,-237],[36,0],[0,-68],[36,0],[11,-33],[0,-34],[118,-1]],[[25506,53023],[121,2]],[[25695,52293],[-65,-49],[-32,-15],[-7,10],[-63,-51]],[[26885,54787],[1,-51],[-11,-10],[-3,-50],[-15,-103],[8,-23]],[[23994,66887],[131,0]],[[16006,69623],[60,0],[0,305],[11,0],[0,207]],[[16224,70069],[5,-65],[-3,-31],[8,-37],[15,-15],[-9,-62],[-3,-56],[-9,-58],[-10,-18],[-6,-44],[-6,15],[-12,-36],[0,-81],[10,-27],[32,0],[28,-42],[13,-36],[0,-56],[61,0]],[[16341,69402],[5,-102],[-3,-34],[14,-66],[-5,-33],[23,-52]],[[22752,66341],[0,480]],[[29849,67214],[27,22],[16,-107],[52,43],[8,-114],[34,17],[22,-59],[13,-10]],[[30059,66688],[-10,-46],[-169,17]],[[29872,66660],[-5,89],[-8,1],[-9,179],[-15,2],[1,86],[5,128]],[[27110,54946],[-8,28],[29,275]],[[28845,61499],[2,-35],[17,-81],[-9,-41],[10,-63],[-11,-25],[-10,5],[-11,-50],[9,-41]],[[28830,61117],[-13,30],[-19,-4],[-22,-64],[-9,-1],[-1,67],[7,70],[17,28],[-17,2],[2,45],[11,40],[-21,9],[-12,-33],[-4,28],[5,58],[26,27],[-5,33]],[[28725,61120],[-1,72],[8,28],[11,-40],[-4,-60]],[[28729,61346],[7,-82],[-15,21],[3,30]],[[28921,61701],[81,-1]],[[29002,61700],[-1,-43],[-9,-105],[-5,-15],[-20,-211],[-18,-120]],[[21232,73979],[256,-1]],[[25611,65393],[28,25],[53,76]],[[25692,65494],[0,-552]],[[25692,64942],[-10,-20],[-26,58],[-20,20],[-17,-24],[-7,-28]],[[28766,66751],[2,-78]],[[17451,67333],[-1,196],[11,0],[0,204],[-11,0],[0,201]],[[24938,64636],[-97,1]],[[22042,72032],[154,0]],[[22074,71224],[-46,0]],[[22028,71224],[2,405],[-11,1],[0,402]],[[27111,59928],[16,34]],[[26876,56052],[9,11]],[[26511,61866],[6,-8],[3,-63],[8,-47]],[[4587,90956],[19,44],[21,16],[24,-17],[22,6],[9,-37],[-1,-50],[-75,-13],[-18,19],[-1,32]],[[4612,90593],[44,123],[23,89],[23,39],[-9,58],[14,5],[28,-28],[22,-5],[13,-77],[52,0],[45,20],[26,-20],[77,28],[48,38],[9,51],[56,128],[38,135],[0,71],[-12,81],[-23,95],[-17,121],[-1,118],[-5,52],[-71,157],[-9,32],[-41,28],[-27,1],[10,97],[27,33],[14,-25],[35,-20],[51,7],[-10,45],[31,10],[41,81],[2,114],[-42,122],[-47,68],[-25,48],[-1,-32],[-27,-48],[-20,-86],[-42,-30],[-42,42],[-59,-93],[-81,-34],[-18,-71],[-85,-103],[-21,-70],[-5,-99],[-44,-70],[-4,93],[-15,110],[-23,50],[-28,-3],[4,34],[-32,46],[-9,36],[-38,-60],[16,-45],[21,-7],[16,-39],[24,11],[2,-48],[-22,-81],[-19,-11],[-22,82],[-55,76],[-41,33],[-64,13],[-41,-27],[-27,12],[-52,3],[-45,-22],[-108,-112],[-58,-17],[-111,74],[-94,45],[-47,14],[-88,40],[-49,79],[-20,96],[1,74],[20,36],[-6,64],[-28,63],[-45,56],[-1,59],[-46,64],[-10,56],[39,-33],[33,3],[9,27],[24,15],[16,32],[-3,55],[35,61],[-38,63],[-19,9],[-29,-16],[-39,15],[-64,52],[-104,21],[-49,52],[-38,63],[-55,60],[-46,30],[-17,75],[9,52],[34,50],[123,108],[63,74],[48,74],[45,56],[42,64],[84,105],[55,56],[146,167],[172,154],[133,90],[88,45]],[[2036,90914],[2,37],[25,87],[-3,75],[8,18],[-5,57],[21,3],[8,-42],[-4,-48],[12,-34],[64,-57],[77,-48],[55,-20],[58,87],[58,58],[58,-14],[29,-69],[23,-15],[15,-104],[-2,-38],[53,-56],[56,-14],[22,-32],[9,-35],[36,-20],[88,-20],[14,6],[102,-55],[-27,-131],[-22,-43],[-51,35],[-43,-1],[-50,-29],[-44,-89],[-10,-61],[1,-53],[-20,-46],[-30,22],[3,24],[-26,119],[-32,62],[-50,60],[-39,-5],[-11,69],[-17,55],[-54,80],[-86,69],[-65,11],[-47,-44],[-18,-58],[-36,-34],[-28,33],[-49,36],[-24,83],[-7,56],[3,73]],[[21724,54804],[0,508]],[[22543,49601],[98,-1]],[[25847,64156],[0,153],[-42,0],[0,50],[-16,0]],[[21697,65126],[155,-1]],[[21703,64671],[0,51],[-6,0],[0,404]],[[24920,61430],[30,0]],[[24950,61430],[1,-93],[-1,-215]],[[24950,61122],[-17,-112],[-5,-65]],[[25349,67627],[34,-1]],[[28458,62298],[26,-84],[-36,-118]],[[28448,62096],[-1,56]],[[28528,60859],[19,48]],[[28547,60907],[18,-30],[10,-96],[11,-53],[30,-4],[7,-36],[31,-24],[-15,-40]],[[22406,63911],[0,-406]],[[15909,60545],[-6,37],[-12,19],[-10,87],[-7,109],[-21,54],[-2,46],[-21,25]],[[15829,60925],[9,72],[-4,58]],[[28448,62096],[0,-7]],[[28448,62089],[-15,20],[-12,-5],[-2,32],[9,20]],[[24434,56612],[7,-77]],[[24441,56535],[-12,-11],[0,-34],[-23,1],[-3,-225]],[[28149,57358],[28,13],[6,-19],[86,5]],[[28315,57031],[-18,-47],[-36,-120]],[[25450,66403],[-2,-124],[-8,-97],[10,-109],[11,-65]],[[21869,60563],[0,-101]],[[21869,60462],[-116,0]],[[23981,61061],[-31,2],[-1,-118]],[[23949,60945],[-108,12],[0,17]],[[28179,60037],[10,-41],[22,1]],[[28366,62171],[11,18],[7,-36],[-14,-7],[-4,25]],[[21316,65178],[-204,-2]],[[21112,65176],[0,305]],[[25178,66812],[65,0]],[[25186,63261],[-3,-61],[-15,1],[0,-102]],[[25055,63285],[0,121]],[[24919,61658],[25,66],[21,10],[16,-14],[15,35],[24,14],[56,-9]],[[25075,61422],[-125,8]],[[30589,69408],[139,81],[-7,96],[29,18],[-22,334],[-30,-18],[3,81],[-2,94],[37,26],[2,828]],[[24897,67741],[-10,60],[-12,106],[-27,94],[-6,60],[8,10],[-6,83],[-9,15],[-5,94],[13,39],[2,51],[13,-17],[6,46],[-6,25],[6,42]],[[25252,52115],[30,-13],[-14,-20],[-12,9],[-4,24]],[[25179,52148],[16,13],[30,-29],[6,-15],[-24,5],[-28,26]],[[25284,52292],[-4,-32],[-7,15],[-10,-40],[-18,27],[-13,-15],[-5,30],[-18,7],[-18,-23],[-23,49],[-1,-11]],[[26509,53416],[96,-5]],[[26644,53407],[1,-141],[-8,-32],[-10,-117]],[[26627,53117],[0,-52],[-45,5]],[[27659,63732],[6,-26],[-15,-26],[7,-30]],[[28929,62276],[2,-39],[32,-123],[16,-29],[10,24],[4,-36],[5,-129],[4,-244]],[[23026,62389],[30,0],[1,151]],[[25363,59716],[-104,4]],[[26714,61309],[-2,-54],[13,-29],[8,-39],[16,-8],[32,4]],[[25601,60095],[-7,41],[-14,28],[0,29]],[[16976,71173],[14,-40],[20,23],[39,20],[20,0],[8,38]],[[17042,70488],[-5,0]],[[25131,53986],[-104,-26]],[[25027,53960],[-1,101],[0,389]],[[26220,63171],[0,-220]],[[22247,72637],[209,1],[6,-2]],[[22469,72335],[-214,0]],[[22255,72335],[1,99],[-9,0],[0,203]],[[26502,63717],[-3,-168]],[[22733,54837],[-18,0]],[[22342,55817],[149,-2]],[[23488,53197],[29,-50],[33,-21],[16,-31]],[[18869,65087],[-16,27],[-9,45]],[[16514,71218],[0,-481],[2,0],[0,-202]],[[16055,70538],[0,401]],[[26831,65420],[6,90],[11,-35],[-3,-35],[-14,-42],[0,22]],[[26741,65392],[28,-32],[18,-66],[19,-29],[18,23],[2,50],[7,13],[14,-55],[19,2],[6,-56]],[[26872,65242],[-12,-19],[-22,8],[-37,-31]],[[24711,62301],[-6,-10],[-9,-66],[-11,-32],[-11,-7],[-12,26],[-10,50]],[[23443,53522],[38,117]],[[27522,55654],[5,24],[9,-16],[16,41],[9,168]],[[22919,69095],[0,-303]],[[27062,55974],[-4,15]],[[23405,70206],[0,-202],[2,0],[0,-201]],[[27045,63236],[105,-18]],[[27150,63218],[16,-2],[-1,-103],[16,-2],[0,-89]],[[27053,62980],[6,202],[-15,4],[1,50]],[[15943,70079],[16,51],[15,16],[21,-15],[29,12],[30,24]],[[23949,60945],[-1,-85],[5,0],[-3,-364]],[[23828,60508],[2,169]],[[21436,55306],[37,1]],[[21580,55310],[0,-508]],[[20566,61986],[-178,-4]],[[20388,61982],[8,81],[9,51],[-10,53],[5,23],[-14,12],[3,27],[-18,43],[-23,-3],[1,55],[-17,4],[-6,76]],[[20326,62404],[6,35],[-11,21],[10,38],[-3,84],[0,117],[9,13],[5,68]],[[27292,56114],[28,50],[13,13]],[[27333,56177],[21,-95],[6,21],[1,-40],[15,11],[22,-17],[32,-95],[9,-60],[14,0],[-4,33],[10,46],[-6,14],[16,17],[12,-31],[4,23]],[[27282,55866],[-22,48],[-19,11]],[[20260,62760],[8,22],[13,-32],[19,-5],[22,35]],[[20326,62404],[-108,2]],[[26838,61610],[-26,29],[-17,-6],[-22,83],[-32,45]],[[26693,57318],[-7,-14],[-27,-226]],[[26659,57078],[-21,13],[-22,-70]],[[19753,69322],[2,67],[15,51],[16,135],[7,5],[-163,-4],[-3,10],[0,121],[7,126],[8,30]],[[24514,53430],[2,306]],[[28331,62074],[1,-43],[-20,-3],[14,56]],[[28325,62049],[0,0]],[[26362,58409],[23,-188],[2,-47],[8,-28],[2,-79],[-15,-13],[-11,-39]],[[21659,65532],[157,-3]],[[21697,65126],[-38,1]],[[23316,54348],[9,-60]],[[23151,54197],[-1,8]],[[29472,67872],[4,21],[-8,43]],[[21110,65126],[2,50]],[[21321,64670],[-9,-1]],[[21312,64669],[-203,0]],[[25494,59589],[85,4]],[[25639,59377],[-8,-45],[-8,8],[-28,-81],[-2,-38]],[[22646,54292],[65,140],[4,-5]],[[22715,54427],[13,-31],[1,-31],[14,-19],[1,33],[10,13]],[[25387,58139],[13,3],[-8,33]],[[27256,56797],[-6,-49]],[[27250,56748],[-18,-23],[-9,-55],[13,-58],[-22,8],[-1,-13]],[[25194,57399],[98,-1]],[[23336,66890],[0,-405]],[[22026,60013],[-151,-3]],[[21875,60010],[-1,452],[-5,0]],[[27001,63402],[20,-5],[-3,-103],[28,-5],[-1,-53]],[[22715,54561],[0,-134]],[[27548,46452],[19,155],[7,41],[0,-41],[-8,-83],[-13,-84]],[[27380,46979],[0,203]],[[27380,47182],[54,-1],[0,-25],[103,0],[4,15],[49,6]],[[27590,47177],[0,-156],[-3,-80],[-7,-81],[0,-44],[-6,23],[3,51],[-5,20],[-16,-25],[-10,-102],[-6,-17],[-1,-64],[-8,-40],[-2,-78],[5,-33],[-2,-46],[6,-16],[-8,-53],[-12,-38]],[[27485,46274],[-7,26],[-6,-18],[-34,-22],[-14,-41],[-9,-6],[-18,45],[-13,-11]],[[22342,59034],[89,4]],[[22225,58628],[-2,101],[0,132]],[[22895,56601],[0,-68],[10,0],[0,-68]],[[22905,56465],[-3,-6]],[[27208,65402],[13,48],[44,102],[10,1],[38,65],[31,44]],[[27344,65662],[-1,-163]],[[22987,50986],[-5,19]],[[15812,62181],[-8,46],[5,25],[18,-2]],[[27026,52029],[26,0]],[[27052,51535],[-2,-1]],[[27470,57925],[-61,-200],[-20,-41]],[[25266,63967],[0,-136]],[[15513,69827],[7,103],[22,33],[0,34],[12,0],[6,33],[-12,0],[-11,33],[-12,0],[-17,85],[34,0],[0,82]],[[28543,62588],[22,27]],[[28589,62579],[2,-33],[27,-54],[2,-67],[-5,-25],[13,-48],[-23,-45],[7,-37],[-3,-40],[-9,4],[-7,-55],[6,-53],[-17,-58],[8,-63]],[[28546,62046],[-4,46],[3,83],[6,55],[-6,21],[-2,69],[-15,59],[-24,43],[-1,37]],[[24200,63447],[-16,1],[0,98]],[[24041,63153],[3,393]],[[25208,55688],[101,2]],[[25297,55272],[-129,-4]],[[24826,53417],[-12,-8],[-7,25],[-38,0]],[[22663,60009],[-86,-1]],[[23827,60339],[-119,9]],[[24750,67741],[147,0]],[[24882,67235],[-18,-21],[-26,8],[-24,-40],[-31,4]],[[23831,59921],[-126,10]],[[28228,58692],[-4,-35],[-9,14],[-16,-22],[-72,-116]],[[16575,68516],[-68,0],[0,96],[-34,1],[0,57],[-102,-3],[0,148]],[[26808,61378],[-14,-3],[-10,39],[-11,-31],[-9,50],[-21,49],[-17,-32],[-7,-52]],[[26898,58893],[-3,-80],[15,-20],[15,27]],[[28310,62161],[7,-7],[4,-50],[17,-22]],[[28338,62082],[20,-67],[24,-32],[15,-66]],[[28397,61917],[-7,-3],[0,-52],[-15,-100]],[[29050,63047],[-18,105],[-12,9],[-29,126],[2,30],[-16,56]],[[22255,72032],[0,303]],[[25759,70041],[20,-64],[-8,-22],[-4,36],[-14,43],[6,7]],[[25823,70205],[-16,-12],[-6,-46],[-13,-3],[0,-45],[-12,-9],[4,-61],[-20,32],[-9,40],[12,27],[1,34],[11,31],[1,40],[13,-4],[15,87],[-3,43],[-12,10],[-18,-75],[-38,24],[3,-51],[-13,-47],[-5,-56],[-30,-31],[-5,-27],[-6,39],[3,55],[-4,67],[-8,32],[-10,-19],[-5,-120],[3,-12],[-31,-55],[-26,-129]],[[26360,62096],[-23,12]],[[30583,68114],[-15,-5],[1,-52],[-16,-37],[-5,-50],[-12,51],[-2,-47],[-15,-32],[-12,26],[-3,-66],[-11,53]],[[26486,61309],[32,-215]],[[26508,60985],[-15,-2],[-7,20]],[[26415,61049],[-4,7],[8,78],[0,42],[11,21],[-1,56]],[[27541,58268],[31,1]],[[27572,58269],[6,-34],[15,-18],[4,-67],[12,-35],[-9,-58],[-4,-78],[12,-96],[-6,-34]],[[27546,57910],[-22,-36],[-31,2],[-11,22]],[[25805,58095],[-21,12]],[[25784,58107],[-5,2],[-11,80],[-2,66],[7,226]],[[27950,60654],[7,104],[17,-12],[6,35],[22,28],[-1,55]],[[31439,38340],[14,12]],[[16761,70487],[-11,-36],[-28,-42],[-19,-6],[-17,14],[-49,-25]],[[27290,53687],[-18,-23],[0,-22],[17,10],[6,-24],[-23,-131],[-6,-91],[3,-37]],[[29870,67610],[24,96],[9,-78],[16,28],[9,-5]],[[23619,51345],[-62,-102],[-28,-61],[-10,-54],[-15,7],[22,71],[9,47],[13,-1],[9,19],[8,46],[9,-16],[11,8],[-5,21]],[[23415,50841],[28,72],[3,19],[32,99],[15,23],[0,45],[26,-15],[-20,-61],[-62,-153],[-26,-81]],[[23439,51344],[10,-51],[20,-17],[-6,-54],[11,-20],[2,-78],[-2,-67],[-8,-31],[-9,10],[-29,-102]],[[20922,65124],[0,200]],[[28860,63072],[14,65]],[[28901,63263],[10,-79],[14,-42],[35,-27],[39,-114]],[[28903,62783],[-7,11],[-10,56],[-19,25],[6,140],[-12,29]],[[15363,69375],[8,117],[4,157],[-3,66],[3,109],[-4,69],[5,24],[5,176],[-1,76],[-11,41],[4,25]],[[29408,67351],[-10,210],[6,77],[23,97],[9,22],[9,100],[-3,36],[9,37]],[[23355,73978],[46,0],[0,449],[27,-37],[28,20],[29,-53],[8,-35],[14,-202],[7,-25],[18,-251],[-6,-69],[4,-54],[14,-43],[29,-45],[30,-2]],[[15675,63014],[42,1],[1,-152],[-2,-78]],[[26801,56208],[-10,55],[12,79],[6,10],[13,75],[23,33],[4,25]],[[24019,62414],[8,36],[-11,13],[27,139]],[[28869,64023],[-47,-239]],[[25999,59326],[4,102]],[[31375,38454],[18,-15],[8,20]],[[26535,62069],[16,-25],[3,-34],[15,-26],[5,-50],[17,-15]],[[25722,65552],[30,68],[27,87],[37,261],[34,146]],[[25805,65551],[-83,1]],[[27947,61230],[-10,-22],[-9,-96],[-10,-7],[-18,-68],[-11,10],[-5,31],[-26,-30]],[[24526,56657],[-9,-37],[-13,-18],[0,-44],[17,-84],[-5,-28],[-5,24],[-11,-4],[-5,27],[-35,-25],[9,50],[-20,-20],[-8,37]],[[28814,58772],[18,-19],[12,-74],[1,-47],[-15,9],[2,45],[-18,86]],[[28806,57915],[20,38],[12,2],[16,35],[13,10],[5,74],[11,252],[0,54],[-8,95],[-6,105],[3,-2],[11,-106],[5,-95],[-3,-136],[-15,-286],[-24,-8],[-39,-49]],[[28801,59116],[9,-90],[23,-156],[35,-271],[-9,14],[-18,146],[-14,80],[-13,11],[-9,174],[-10,87]],[[28734,58461],[7,116],[3,150],[14,40],[-6,33],[14,20],[25,-21],[16,-94],[7,-65],[-4,-52],[7,-98],[-8,-25],[4,-54],[-13,-54],[-17,-10],[-9,14]],[[26672,51474],[-12,11],[-10,38],[-13,17],[-13,61],[0,42],[-9,35],[-5,51],[-14,44],[-28,62],[-40,72],[-17,53]],[[26156,57665],[80,3]],[[24799,56705],[50,-1],[7,6]],[[22247,72637],[-144,0]],[[27250,56748],[11,-37],[-3,-28],[10,-51],[28,-9],[10,-25],[10,-53],[13,-25],[11,-81],[1,-60]],[[27341,56379],[-7,-11],[-6,-144],[6,-2],[7,42],[13,-5],[11,-24],[-32,-58]],[[28579,63178],[92,1]],[[28716,62971],[-11,-55],[12,-24],[4,-32],[-12,-14],[-34,-97],[-7,31],[7,54],[-8,28],[0,-44],[-9,-51],[8,-34],[-7,-46],[-9,105],[-12,0]],[[28638,62792],[-8,82],[-14,49],[-27,49],[-9,82],[-1,124]],[[25875,66319],[7,71],[7,133],[-1,58],[6,87],[-1,56]],[[23165,59340],[53,-1]],[[23218,59339],[-1,-303],[15,0]],[[22571,51212],[3,42],[-12,0],[-1,21],[-14,33],[-5,37],[-17,6],[-3,39]],[[29897,68564],[-40,-12],[-14,-20],[-10,-61],[6,-34],[-6,-57],[8,-37]],[[28421,63584],[19,-48],[14,-17],[14,-92],[-5,-48],[8,-43],[-12,-30],[0,-129]],[[28398,63177],[-67,0]],[[28331,63177],[-3,261]],[[15811,73081],[-15,5],[3,-24],[-11,-28],[10,-67],[18,-50],[1,-35],[-26,85],[-12,4],[-7,58],[2,77],[18,24],[17,-21]],[[15707,73080],[13,89],[14,59],[2,55],[16,11],[7,-19],[0,-49],[19,-38],[3,-26],[-15,-19],[-17,15],[-1,-29],[-13,-34],[-14,-7],[3,-24],[23,10],[11,-42],[8,-84],[-4,-14],[10,-100],[8,27],[-5,67],[10,-3],[16,-57],[16,-13],[7,-94],[-8,-58],[-14,13],[-12,86],[-21,-25],[2,30],[-19,44],[3,93],[-5,56],[-18,-4],[-3,30],[-22,54]],[[22522,66858],[14,-9],[24,-44],[6,2]],[[16705,63096],[7,5],[24,79],[0,-100],[-3,0],[-1,-138],[-7,0],[-1,-151],[6,-1],[20,-84],[17,-35],[10,-50],[11,-17],[17,-84],[10,-17],[0,-34],[11,0],[0,-44]],[[26301,60841],[11,21],[3,37],[-6,61]],[[26143,61748],[-18,30],[-16,7]],[[27602,47579],[-4,-103],[-8,-299]],[[27380,47182],[-2,326]],[[21875,60010],[-87,-2]],[[22434,58223],[0,-303],[1,-124]],[[25983,54764],[25,1],[0,102],[23,0],[5,17]],[[28448,62089],[-1,-78],[-12,-15]],[[28423,61914],[-20,-21],[-6,24]],[[25102,70365],[1,-501]],[[16892,69318],[0,99],[-9,0],[1,135],[-31,0],[0,71],[-11,0],[0,102],[23,-6],[0,17],[52,0],[0,86],[64,-2],[0,51],[23,0],[-1,254],[15,-1],[0,99],[5,51],[21,0],[0,51]],[[18821,64174],[11,38]],[[25984,69839],[13,-17],[1,-59],[-14,76]],[[25933,69486],[6,23],[19,-25],[-6,-96],[-17,52],[-2,46]],[[25931,69065],[0,124],[10,36],[13,-18],[16,80],[18,-35],[17,13],[8,32],[9,86],[10,16],[15,94],[11,47],[9,-7],[12,35],[3,-39],[-19,-32],[-3,-42],[12,-81],[-23,-81],[13,19],[0,-74],[-6,-7],[-8,-84],[4,-86]],[[25908,69335],[11,44],[6,-47],[-17,3]],[[28460,61498],[9,-25],[0,-49],[35,-59],[25,-2],[7,-28],[6,21],[24,-9],[4,-44],[16,-39],[7,-49]],[[28476,61264],[-18,37],[-8,-20],[-8,82]],[[26655,53063],[-21,26],[-7,28]],[[25251,71984],[15,63],[20,52],[58,85],[56,25],[50,-7],[23,-39],[1,-45],[-11,5],[-17,-24],[-19,13],[-21,-10],[5,-47],[-32,-57],[-30,-95],[-18,-19]],[[25045,72671],[21,69],[95,141],[7,-2],[43,98],[31,42],[6,-11],[28,29],[-1,-28],[-12,-16],[-30,-80],[0,-30],[-25,-55],[-51,-53],[-42,-66],[2,-20],[23,0],[-59,-73],[-18,3],[-18,52]],[[26883,54537],[2,15],[67,50]],[[21312,64669],[0,-294]],[[27151,63319],[-1,-101]],[[27376,54230],[12,-12],[-5,-64],[-14,-29],[-10,15],[-6,-48],[10,-8],[-16,-60],[-21,23],[-3,-56],[11,-11],[-9,-59],[-17,-54],[-7,4]],[[26217,53628],[-3,120],[-19,87],[0,79]],[[27051,49122],[0,304],[-1,23],[0,285],[-14,0]],[[23058,55817],[2,382]],[[26207,54898],[49,-1],[0,-28],[59,1]],[[24769,65578],[18,31],[-1,41],[9,98]],[[27419,50455],[6,-40],[38,-200],[4,-63],[10,-83],[-18,-57],[-4,-54],[-1,-87],[5,-130],[6,-96],[16,-145],[18,-128]],[[25721,57989],[22,-12],[14,49],[27,37],[0,44]],[[27266,63044],[0,118],[-10,0],[1,189],[21,-2]],[[24750,68340],[0,-494]],[[26325,61179],[9,131]],[[26118,60861],[14,31],[-1,31],[13,11],[3,44],[26,17],[1,61],[13,-1]],[[26187,61055],[8,23],[5,-27],[22,-3]],[[26222,61048],[8,-43],[-7,-204]],[[28368,58929],[3,-20],[28,-47],[7,-45],[-3,-37],[29,-18],[14,19],[6,-61],[-5,-36],[11,-1],[17,46],[13,-45],[-2,-44],[9,-8],[11,44],[-1,34],[21,-21]],[[28501,58520],[-38,-71],[-50,94],[-3,-8]],[[25760,53020],[-4,7],[0,223]],[[16868,55911],[16,-5],[28,-53],[21,-22],[1,-25],[16,-61],[-5,-43],[-13,25],[-26,7],[-6,35],[0,74],[-20,16],[-12,52]],[[16867,55390],[9,4],[22,-117],[40,-130],[-10,4],[-11,-22],[-17,44],[-13,72],[-14,119],[-6,26]],[[17004,56219],[-17,24],[-2,-47],[-21,-23],[-18,14],[-10,25],[-15,6],[-4,38],[9,34],[1,43],[-14,116],[-11,64],[-17,50],[-35,1],[-22,-8],[-16,-36],[-14,38],[-25,13]],[[27214,46977],[-1,16],[-21,38],[-21,55],[-11,-13],[-8,-39],[-16,126],[-15,148],[-5,173],[-7,109]],[[23225,60010],[-50,-1]],[[23218,59542],[0,-203]],[[19407,73980],[138,-2],[211,1]],[[28648,60803],[-5,-29],[13,-23],[-19,-30],[-31,64],[-11,-27],[-7,25],[0,41],[-13,81],[-16,28]],[[28485,61173],[0,-30],[28,-89],[20,-114],[14,-33]],[[18654,73978],[120,-2],[137,0]],[[30177,69643],[6,32],[2,86],[-6,28],[12,36],[8,-3],[12,-44],[21,-9],[1,39],[-24,83],[-1,32],[22,107],[14,27],[11,43]],[[26308,66321],[-98,0]],[[30216,65279],[10,20],[5,40],[-1,164]],[[30259,65611],[12,-43],[23,-35],[34,-12],[9,-23],[19,44],[19,8],[27,33],[6,25],[-1,79],[-6,61],[-13,-31],[0,97],[-5,55],[-15,34],[-9,-7],[-5,-39],[-11,59],[13,11],[21,-18],[23,-58],[18,-123],[9,-119],[2,-137],[-15,-129],[-2,-44],[-7,9],[12,112],[-7,23],[-26,-5],[-43,-40],[-30,8],[-7,-28],[-17,-7],[-15,-62],[-33,-10],[-16,-35]],[[20642,73978],[114,0],[167,1]],[[28498,63766],[29,-57],[9,-67]],[[28579,63178],[-61,0]],[[26676,57055],[-17,23]],[[23647,70225],[-104,-1]],[[25554,53329],[-17,0],[-20,-38],[-16,20]],[[28638,62792],[6,-98],[-8,8],[-6,-42],[12,-22],[-21,-44],[-7,-28],[-13,8],[-11,45]],[[26192,58216],[10,-35],[9,10],[14,-32]],[[28328,63177],[3,0]],[[20388,61982],[12,-16],[3,-58],[10,-33],[-7,-63],[-1,-49],[-8,-2],[-21,-67]],[[25263,63097],[0,-238]],[[28263,63809],[-6,-15],[-20,-97],[-19,-123]],[[28537,59130],[-7,-36],[-2,-76],[8,-94],[11,-77],[-2,-65]],[[23001,56396],[-24,16],[-8,-86],[-18,-9],[-4,42],[-13,14],[-6,-33],[-9,25],[-6,95],[-8,5]],[[26311,61014],[-16,-17],[-4,70],[-13,10],[9,24],[0,39]],[[26287,61140],[-15,90],[6,42],[-10,39]],[[22050,59537],[0,475]],[[22613,69603],[1,405]],[[22383,51502],[8,34]],[[27666,60273],[-3,48],[3,50]],[[17303,71953],[-218,1]],[[31272,38457],[18,4]],[[26599,59546],[57,-4]],[[25021,52296],[-7,-24],[9,-17],[1,-40],[-25,-57],[-8,-80],[-9,10],[-13,-16]],[[24969,52072],[-12,0],[-13,50],[-4,66],[0,69],[-15,77],[-2,63]],[[27344,65662],[28,16],[24,34],[65,69],[17,24]],[[23353,59440],[-1,102],[-28,0]],[[22844,60564],[175,1]],[[21867,71226],[161,-2]],[[24652,59791],[10,-1],[0,-153],[10,0],[0,-101],[5,-1],[-1,-108]],[[15974,59837],[-14,94],[-12,43],[-10,11],[-9,-28],[-37,2],[-28,68],[-24,108]],[[15358,63504],[-16,33],[0,43],[-8,43],[-22,32],[-49,151],[4,63],[-4,70],[-13,74],[9,98],[14,109],[42,265],[11,95],[7,119],[-12,37],[-1,97],[4,2],[11,99],[9,169],[2,105]],[[22406,70416],[0,-405]],[[17304,70983],[-13,-10],[-19,15],[-15,-8],[-6,45]],[[16803,73980],[178,0]],[[26861,65369],[16,17],[-2,-36],[-14,19]],[[26872,65242],[22,-77],[16,-33],[22,-21],[37,54]],[[26222,61048],[12,17],[3,34],[10,21],[15,-15],[25,35]],[[23858,69609],[25,-40],[31,-79],[10,-47],[-2,-79],[16,0]],[[25692,65494],[30,58]],[[23552,61218],[-2,-424]],[[28686,59930],[25,-26],[17,27],[11,-11],[8,-128],[12,-140],[9,-71],[7,-94]],[[25397,68948],[-2,-80],[-13,-50],[20,-42],[12,7],[7,53],[26,64],[13,9]],[[25004,53954],[23,6]],[[28749,59144],[1,-67],[14,-39],[-31,25],[-32,118],[-15,6]],[[22902,55839],[31,-13]],[[31452,37982],[-11,-22],[-10,-48]],[[31436,38446],[12,6],[20,-16]],[[12100,86471],[67,80],[62,-115],[28,-88],[11,-2],[24,-70],[0,-104],[-12,-24],[1,-37],[16,-47],[-5,-42]],[[30068,65494],[-3,-45],[-14,-41],[-6,42],[4,35],[-19,62]],[[23711,55377],[63,0]],[[26094,61164],[-13,-30],[-4,-43],[-10,-20],[2,-30],[-29,-82],[-16,-4]],[[26187,61055],[-4,87]],[[27450,56219],[-11,35],[-7,-20],[-21,21],[-19,5],[-14,44],[-10,-3],[-20,41],[-7,37]],[[27155,51076],[7,15],[-4,40],[-20,-1],[0,68],[-9,0],[-1,67],[-18,-1],[0,40],[-25,-5],[-20,-17],[-15,-36]],[[24950,61122],[116,-5]],[[28607,58329],[-4,-20],[-21,-11],[-12,11],[-9,-33],[9,-57],[6,-86],[-7,0],[-29,47],[-14,-10],[-20,34],[-31,30],[-23,48],[-1,-29],[17,-61],[21,-5],[63,-102],[16,-10]],[[28357,66502],[0,106],[15,109],[95,3]],[[21992,49763],[-3,45],[-7,-2],[-13,59],[2,38],[-17,100],[3,47],[-9,39],[9,29],[-12,11],[-9,47],[4,39],[-14,28],[1,33],[-15,28],[-4,51],[2,41],[-8,26],[-4,73],[-6,1],[-9,88],[-8,1],[-10,211]],[[31637,38350],[7,-14],[0,-44],[-7,58]],[[31616,38316],[12,28],[-2,-46],[3,-69]],[[24941,51321],[17,10],[-9,-42],[-8,32]],[[24967,51478],[13,-58],[-13,33],[-14,5],[-8,-17],[-15,6],[18,-39],[0,-32],[-23,49],[0,-25],[12,-32],[-12,-14],[1,-34],[11,-36],[20,-11],[-1,-22],[12,-24],[-1,-34],[7,-46],[9,30],[5,-21],[22,-2],[16,-34],[3,30],[20,-91],[11,44],[24,-111],[0,-59],[6,-13],[18,28],[7,-41],[-24,-15],[-2,-33],[16,-3],[-8,-52],[-11,24],[-12,-96],[2,-44],[-21,36],[-2,55],[-8,16],[-31,-138],[-15,-41],[7,67],[9,29],[5,48],[9,21],[0,54],[9,23],[-1,51],[-10,24],[-4,-62],[-16,-29],[-12,29],[-14,77],[-34,43],[-10,45],[-56,33],[-17,-28]],[[25469,68033],[1,-95],[8,-50],[-2,-102],[-21,-118],[-3,-41]],[[24969,52072],[-17,-35],[-10,2]],[[27129,61967],[-11,40],[6,21],[-33,169]],[[90343,33382],[11,51],[21,35],[15,-9],[-2,-35],[-12,-13],[-8,-39],[-11,-6],[-5,23],[-9,-7]],[[31463,37795],[-7,-2],[-6,36],[-21,37]],[[15638,72257],[14,76],[31,74],[29,28],[3,73],[16,73],[31,68],[-9,97],[22,-40],[14,-187],[-22,0],[3,-40],[11,-14],[-4,-56],[7,-19],[0,-53],[-14,-38],[-1,-38],[15,-16],[-10,-48],[-5,-76]],[[26911,49121],[9,56],[13,34],[-2,23],[14,26],[11,84],[-5,75],[-22,21],[5,-113],[-22,30],[6,34],[-1,65],[-5,39],[-22,37],[-5,26]]]} diff --git a/r/inst/htmlwidgets/lib/maplibre/rtemis-map-deps.js b/r/inst/htmlwidgets/lib/maplibre/rtemis-map-deps.js new file mode 100644 index 0000000..817912a --- /dev/null +++ b/r/inst/htmlwidgets/lib/maplibre/rtemis-map-deps.js @@ -0,0 +1,800 @@ +var RtemisMap=(()=>{var yx=Object.create;var Qu=Object.defineProperty;var xx=Object.getOwnPropertyDescriptor;var vx=Object.getOwnPropertyNames;var bx=Object.getPrototypeOf,wx=Object.prototype.hasOwnProperty;var Tx=(V,ee)=>()=>(ee||V((ee={exports:{}}).exports,ee),ee.exports),Qm=(V,ee)=>{for(var de in ee)Qu(V,de,{get:ee[de],enumerable:!0})},eg=(V,ee,de,Se)=>{if(ee&&typeof ee=="object"||typeof ee=="function")for(let k of vx(ee))!wx.call(V,k)&&k!==de&&Qu(V,k,{get:()=>ee[k],enumerable:!(Se=xx(ee,k))||Se.enumerable});return V};var Sx=(V,ee,de)=>(de=V!=null?yx(bx(V)):{},eg(ee||!V||!V.__esModule?Qu(de,"default",{value:V,enumerable:!0}):de,V)),Px=V=>eg(Qu({},"__esModule",{value:!0}),V);var ig=Tx((Zd,qd)=>{(function(V,ee){typeof Zd=="object"&&typeof qd<"u"?qd.exports=ee():typeof define=="function"&&define.amd?define(ee):(V=typeof globalThis<"u"?globalThis:V||self,V.maplibregl=ee())})(Zd,(function(){"use strict";var V={},ee={};function de(k,h,fe){if(ee[k]=fe,k==="index"){var Ze="var sharedModule = {}; ("+ee.shared+")(sharedModule); ("+ee.worker+")(sharedModule);",nt={};return ee.shared(nt),ee.index(V,nt),typeof window<"u"&&V.setWorkerUrl(window.URL.createObjectURL(new Blob([Ze],{type:"text/javascript"}))),V}}de("shared",["exports"],(function(k){"use strict";function h(r,e,i,o){return new(i||(i=Promise))((function(a,l){function u(m){try{g(o.next(m))}catch(x){l(x)}}function p(m){try{g(o.throw(m))}catch(x){l(x)}}function g(m){var x;m.done?a(m.value):(x=m.value,x instanceof i?x:new i((function(_){_(x)}))).then(u,p)}g((o=o.apply(r,e||[])).next())}))}function fe(r,e){this.x=r,this.y=e}function Ze(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var nt,Gt;typeof SuppressedError=="function"&&SuppressedError,fe.prototype={clone(){return new fe(this.x,this.y)},add(r){return this.clone()._add(r)},sub(r){return this.clone()._sub(r)},multByPoint(r){return this.clone()._multByPoint(r)},divByPoint(r){return this.clone()._divByPoint(r)},mult(r){return this.clone()._mult(r)},div(r){return this.clone()._div(r)},rotate(r){return this.clone()._rotate(r)},rotateAround(r,e){return this.clone()._rotateAround(r,e)},matMult(r){return this.clone()._matMult(r)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(r){return this.x===r.x&&this.y===r.y},dist(r){return Math.sqrt(this.distSqr(r))},distSqr(r){let e=r.x-this.x,i=r.y-this.y;return e*e+i*i},angle(){return Math.atan2(this.y,this.x)},angleTo(r){return Math.atan2(this.y-r.y,this.x-r.x)},angleWith(r){return this.angleWithSep(r.x,r.y)},angleWithSep(r,e){return Math.atan2(this.x*e-this.y*r,this.x*r+this.y*e)},_matMult(r){let e=r[2]*this.x+r[3]*this.y;return this.x=r[0]*this.x+r[1]*this.y,this.y=e,this},_add(r){return this.x+=r.x,this.y+=r.y,this},_sub(r){return this.x-=r.x,this.y-=r.y,this},_mult(r){return this.x*=r,this.y*=r,this},_div(r){return this.x/=r,this.y/=r,this},_multByPoint(r){return this.x*=r.x,this.y*=r.y,this},_divByPoint(r){return this.x/=r.x,this.y/=r.y,this},_unit(){return this._div(this.mag()),this},_perp(){let r=this.y;return this.y=this.x,this.x=-r,this},_rotate(r){let e=Math.cos(r),i=Math.sin(r),o=i*this.x+e*this.y;return this.x=e*this.x-i*this.y,this.y=o,this},_rotateAround(r,e){let i=Math.cos(r),o=Math.sin(r),a=e.y+o*(this.x-e.x)+i*(this.y-e.y);return this.x=e.x+i*(this.x-e.x)-o*(this.y-e.y),this.y=a,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:fe},fe.convert=function(r){if(r instanceof fe)return r;if(Array.isArray(r))return new fe(+r[0],+r[1]);if(r.x!==void 0&&r.y!==void 0)return new fe(+r.x,+r.y);throw new Error("Expected [x, y] or {x, y} point format")};var We=(function(){if(Gt)return nt;function r(e,i,o,a){this.cx=3*e,this.bx=3*(o-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(a-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=i,this.p2x=o,this.p2y=a}return Gt=1,nt=r,r.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,i){if(i===void 0&&(i=1e-6),e<0)return 0;if(e>1)return 1;for(var o=e,a=0;a<8;a++){var l=this.sampleCurveX(o)-e;if(Math.abs(l)l?p=o:g=o,o=.5*(g-p)+p;return o},solve:function(e,i){return this.sampleCurveY(this.solveCurveX(e,i))}},nt})(),He=Ze(We);let It,Xe;function hr(){return It!=null||(It=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),It}function Ri(){if(Xe==null&&(Xe=!1,hr())){let e=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(e){for(let o=0;o<25;o++){let a=4*o;e.fillStyle=`rgb(${a},${a+1},${a+2})`,e.fillRect(o%5,Math.floor(o/5),1,1)}let i=e.getImageData(0,0,5,5).data;for(let o=0;o<100;o++)if(o%4!=3&&i[o]!==o){Xe=!0;break}}}return Xe||!1}var _e=1e-6,$t=typeof Float32Array<"u"?Float32Array:Array;function rn(){var r=new $t(9);return $t!=Float32Array&&(r[1]=0,r[2]=0,r[3]=0,r[5]=0,r[6]=0,r[7]=0),r[0]=1,r[4]=1,r[8]=1,r}function On(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}function Po(){var r=new $t(3);return $t!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Mo(r){var e=r[0],i=r[1],o=r[2];return Math.sqrt(e*e+i*i+o*o)}function it(r,e,i){var o=new $t(3);return o[0]=r,o[1]=e,o[2]=i,o}function H(r,e,i){return r[0]=e[0]+i[0],r[1]=e[1]+i[1],r[2]=e[2]+i[2],r}function J(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r[2]=e[2]*i,r}function ie(r,e,i){var o=e[0],a=e[1],l=e[2],u=i[0],p=i[1],g=i[2];return r[0]=a*g-l*p,r[1]=l*u-o*g,r[2]=o*p-a*u,r}var ve,ze=Mo;function et(r,e,i){var o=e[0],a=e[1],l=e[2],u=e[3];return r[0]=i[0]*o+i[4]*a+i[8]*l+i[12]*u,r[1]=i[1]*o+i[5]*a+i[9]*l+i[13]*u,r[2]=i[2]*o+i[6]*a+i[10]*l+i[14]*u,r[3]=i[3]*o+i[7]*a+i[11]*l+i[15]*u,r}function Be(){var r=new $t(4);return $t!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r[3]=1,r}function Qe(r,e,i,o){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"zyx",l=Math.PI/360;e*=l,o*=l,i*=l;var u=Math.sin(e),p=Math.cos(e),g=Math.sin(i),m=Math.cos(i),x=Math.sin(o),_=Math.cos(o);switch(a){case"xyz":r[0]=u*m*_+p*g*x,r[1]=p*g*_-u*m*x,r[2]=p*m*x+u*g*_,r[3]=p*m*_-u*g*x;break;case"xzy":r[0]=u*m*_-p*g*x,r[1]=p*g*_-u*m*x,r[2]=p*m*x+u*g*_,r[3]=p*m*_+u*g*x;break;case"yxz":r[0]=u*m*_+p*g*x,r[1]=p*g*_-u*m*x,r[2]=p*m*x-u*g*_,r[3]=p*m*_+u*g*x;break;case"yzx":r[0]=u*m*_+p*g*x,r[1]=p*g*_+u*m*x,r[2]=p*m*x-u*g*_,r[3]=p*m*_-u*g*x;break;case"zxy":r[0]=u*m*_-p*g*x,r[1]=p*g*_+u*m*x,r[2]=p*m*x+u*g*_,r[3]=p*m*_-u*g*x;break;case"zyx":r[0]=u*m*_-p*g*x,r[1]=p*g*_+u*m*x,r[2]=p*m*x-u*g*_,r[3]=p*m*_+u*g*x;break;default:throw new Error("Unknown angle order "+a)}return r}function Ue(){var r=new $t(2);return $t!=Float32Array&&(r[0]=0,r[1]=0),r}function at(r,e){var i=new $t(2);return i[0]=r,i[1]=e,i}Po(),ve=new $t(4),$t!=Float32Array&&(ve[0]=0,ve[1]=0,ve[2]=0,ve[3]=0),Po(),it(1,0,0),it(0,1,0),Be(),Be(),rn(),Ue();let Fe=8192;function Et(r,e,i){return e*(Fe/(r.tileSize*Math.pow(2,i-r.tileID.overscaledZ)))}function Ct(r){return r instanceof Error?r:new Error(typeof r=="string"?r:String(r))}function ir(r,e){return(r%e+e)%e}function qi(r,e,i){return r*(1-i)+e*i}function Lr(r){if(r<=0)return 0;if(r>=1)return 1;let e=r*r,i=e*r;return 4*(r<.5?i:3*(r-e)+i-.75)}function nn(r,e,i,o){let a=new He(r,e,i,o);return l=>a.solve(l)}let Io=nn(.25,.1,.25,1);function gi(r,e,i){return Math.min(i,Math.max(e,r))}function Vn(r,e,i){let o=i-e,a=((r-e)%o+o)%o+e;return a===e?i:a}function Wi(r,...e){for(let i of e)for(let o in i)r[o]=i[o];return r}let Eo=1;function Fr(r,e,i){let o={};for(let a in r)o[a]=e.call(this,r[a],a,r);return o}function on(r,e,i){let o={};for(let a in r)e.call(this,r[a],a,r)&&(o[a]=r[a]);return o}function Oe(r){return Array.isArray(r)?r.map(Oe):typeof r=="object"&&r?Fr(r,Oe):r}let Wt={};function ti(r){Wt[r]||(typeof console<"u"&&console.warn(r),Wt[r]=!0)}function Li(r,e,i){return(i.y-r.y)*(e.x-r.x)>(e.y-r.y)*(i.x-r.x)}function ii(r){return typeof WorkerGlobalScope<"u"&&r!==void 0&&r instanceof WorkerGlobalScope}let Ii=null;function an(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap}let Hs="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Xs(r,e,i,o,a){return h(this,void 0,void 0,(function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");let l=new VideoFrame(r,{timestamp:0});try{let u=l?.format;if(!u||!u.startsWith("BGR")&&!u.startsWith("RGB"))throw new Error(`Unrecognized format ${u}`);let p=u.startsWith("BGR"),g=new Uint8ClampedArray(o*a*4);if(yield l.copyTo(g,(function(m,x,_,T,b){let M=4*Math.max(-x,0),I=(Math.max(0,_)-_)*T*4+M,A=4*T,D=Math.max(0,x),L=Math.max(0,_);return{rect:{x:D,y:L,width:Math.min(m.width,x+T)-D,height:Math.min(m.height,_+b)-L},layout:[{offset:I,stride:A}]}})(r,e,i,o,a)),p)for(let m=0;m{r.removeEventListener(e,i,o)}}}function Or(r){return r*Math.PI/180}function sn(r){return r/Math.PI*180}let Ys={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},Ks={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},Ma="AbortError";class Co extends Error{constructor(e=Ma){super(e instanceof Error?e.message:e),this.name=Ma,e instanceof Error&&e.stack&&(this.stack=e.stack)}}function Tc(r){return r instanceof Error&&r.name===Ma}function Ia(r){if(r.aborted)throw new Co(r.reason)}let Vr={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function xr(r){return Vr.REGISTERED_PROTOCOLS[r.substring(0,r.indexOf("://"))]}let Hi="global-dispatcher";class Nn extends Error{constructor(e,i,o,a){super(`AJAXError: ${i} (${e}): ${o}`),this.status=e,this.statusText=i,this.url=o,this.body=a}}let Js=()=>{var r;return ii(self)?(r=self.worker)===null||r===void 0?void 0:r.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href},ln=function(r,e){return h(this,void 0,void 0,(function*(){var i,o;if(r.url.includes("://")&&!/^https?:|^file:/.test(r.url)){let a=xr(r.url);if(a){let l=yield a(r,e);return l.data||r.type!=="arrayBuffer"?l:Wi(l,{data:new ArrayBuffer(0)})}if(ii(self)&&(!((i=self.worker)===null||i===void 0)&&i.actor))return self.worker.actor.sendAsync({type:"GR",data:r,targetMapId:Hi},e)}if(!(a=>{var l;return a.startsWith("file:")||((l=Js())===null||l===void 0?void 0:l.startsWith("file:"))&&!/^\w+:/.test(a)})(r.url)){if(fetch&&Request&&AbortController&&Object.hasOwn(Request.prototype,"signal"))return(function(a,l){return h(this,void 0,void 0,(function*(){let u=new Request(a.url,{method:a.method||"GET",body:a.body,credentials:a.credentials,headers:a.headers,cache:a.cache,referrer:Js(),referrerPolicy:a.referrerPolicy,signal:l.signal}),p,g;a.type!=="json"||u.headers.has("Accept")||u.headers.set("Accept","application/json");try{p=yield fetch(u)}catch(x){throw Tc(x)?x:new Nn(0,Ct(x).message,a.url,new Blob)}if(!p.ok){let x=yield p.blob();throw new Nn(p.status,p.statusText,a.url,x)}g=a.type==="arrayBuffer"||a.type==="image"?p.arrayBuffer():a.type==="json"?p.json():p.text();let m=yield g;return Ia(l.signal),{data:m,cacheControl:p.headers.get("Cache-Control"),expires:p.headers.get("Expires"),etag:p.headers.get("ETag")}}))})(r,e);if(ii(self)&&(!((o=self.worker)===null||o===void 0)&&o.actor))return self.worker.actor.sendAsync({type:"GR",data:r,mustQueue:!0,targetMapId:Hi},e)}return(function(a,l){return new Promise(((u,p)=>{var g;let m=new XMLHttpRequest;m.open(a.method||"GET",a.url,!0),a.type!=="arrayBuffer"&&a.type!=="image"||(m.responseType="arraybuffer");for(let x in a.headers)m.setRequestHeader(x,a.headers[x]);a.type==="json"&&(m.responseType="text",!((g=a.headers)===null||g===void 0)&&g.Accept||m.setRequestHeader("Accept","application/json")),m.withCredentials=a.credentials==="include",m.onerror=()=>{p(new Error(m.statusText))},m.onload=()=>{if(!l.signal.aborted)if((m.status>=200&&m.status<300||m.status===0)&&m.response!==null){let x=m.response;if(a.type==="json")try{x=JSON.parse(m.response)}catch(_){return void p(_)}u({data:x,cacheControl:m.getResponseHeader("Cache-Control"),expires:m.getResponseHeader("Expires"),etag:m.getResponseHeader("ETag")})}else{let x=new Blob([m.response],{type:m.getResponseHeader("Content-Type")});p(new Nn(m.status,m.statusText,a.url,x))}},l.signal.addEventListener("abort",(()=>{m.abort(),p(new Co(l.signal.reason))})),m.send(a.body)}))})(r,e)}))};function rr(r){if(!r||r.indexOf("://")<=0||r.startsWith("data:image/")||r.startsWith("blob:"))return!0;let e=new URL(r),i=window.location;return e.protocol===i.protocol&&e.host===i.host}function Un(r,e,i){var o;!((o=i[r])===null||o===void 0)&&o.includes(e)||(i[r]||(i[r]=[]),i[r].push(e))}function cn(r,e,i){if(i?.[r]){let o=i[r].indexOf(e);o!==-1&&i[r].splice(o,1)}}class Ao{constructor(e,i={}){Wi(this,i),this.type=e}}class Gn extends Ao{constructor(e,i={}){super("error",Wi({error:e},i))}}class Ea{on(e,i){return this._listeners||(this._listeners={}),Un(e,i,this._listeners),{unsubscribe:()=>{this.off(e,i)}}}off(e,i){return cn(e,i,this._listeners),cn(e,i,this._oneTimeListeners),this}once(e,i){return i?(this._oneTimeListeners||(this._oneTimeListeners={}),Un(e,i,this._oneTimeListeners),this):new Promise((o=>this.once(e,o)))}fire(e,i){var o,a;typeof e=="string"&&(e=new Ao(e,i||{}));let l=e.type;if(this.listens(l)){e.target=this;let u=!((o=this._listeners)===null||o===void 0)&&o[l]?this._listeners[l].slice():[];for(let m of u)m.call(this,e);let p=!((a=this._oneTimeListeners)===null||a===void 0)&&a[l]?this._oneTimeListeners[l].slice():[];for(let m of p)cn(l,m,this._oneTimeListeners),m.call(this,e);let g=this._eventedParent;g&&(Wi(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),g.fire(e))}else e instanceof Gn&&console.error(e.error);return this}listens(e){var i,o,a,l,u;return((o=(i=this._listeners)===null||i===void 0?void 0:i[e])===null||o===void 0?void 0:o.length)>0||((l=(a=this._oneTimeListeners)===null||a===void 0?void 0:a[e])===null||l===void 0?void 0:l.length)>0||((u=this._eventedParent)===null||u===void 0?void 0:u.listens(e))}setEventedParent(e,i){return this._eventedParent=e,this._eventedParentData=i,this}}var he={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"filter"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},"color-relief":{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"expression_name",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"},resampling:{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};let Qs=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function el(r,e){let i={};for(let o in r)o!=="ref"&&(i[o]=r[o]);return Qs.forEach((o=>{o in e&&(i[o]=e[o])})),i}function ut(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(let i=0;i`:r.itemType.kind==="value"?"array":`array<${e}>`}return r.kind}let za=[jr,Me,Ne,Ye,Fi,Aa,zo,vr,ni(Ge),Da,ko,$n,Zn,Ro];function qn(r,e){if(e.kind==="error")return null;if(r.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!qn(r.itemType,e.itemType))&&(typeof r.N!="number"||r.N===e.N))return null}else{if(r.kind===e.kind)return null;if(r.kind==="value"){for(let i of za)if(!qn(i,e))return null}}return`Expected ${ht(r)} but found ${ht(e)} instead.`}function Lo(r,e){return e.some((i=>i.kind===r.kind))}function dn(r,e){return e.some((i=>i==="null"?r===null:i==="array"?Array.isArray(r):i==="object"?r&&!Array.isArray(r)&&typeof r=="object":i===typeof r))}function nr(r,e){return r.kind==="array"&&e.kind==="array"?r.itemType.kind===e.itemType.kind&&typeof r.N=="number":r.kind===e.kind}let Ic=.96422,pn=.82521,ka=4/29,At=6/29,Ec=3*At*At,Cc=At*At*At,Fo=Math.PI/180,Ac=180/Math.PI;function Dc(r){return(r%=360)<0&&(r+=360),r}function zc([r,e,i,o]){let a,l,u=rl((.2225045*(r=Ra(r))+.7168786*(e=Ra(e))+.0606169*(i=Ra(i)))/1);r===e&&e===i?a=l=u:(a=rl((.4360747*r+.3850649*e+.1430804*i)/Ic),l=rl((.0139322*r+.0971045*e+.7141733*i)/pn));let p=116*u-16;return[p<0?0:p,500*(a-u),200*(u-l),o]}function Ra(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function rl(r){return r>Cc?Math.pow(r,1/3):r/Ec+ka}function nl([r,e,i,o]){let a=(r+16)/116,l=isNaN(e)?a:a+e/500,u=isNaN(i)?a:a-i/200;return a=1*al(a),l=Ic*al(l),u=pn*al(u),[ol(3.1338561*l-1.6168667*a-.4906146*u),ol(-.9787684*l+1.9161415*a+.033454*u),ol(.0719453*l-.2289914*a+1.4052427*u),o]}function ol(r){return(r=r<=.00304?12.92*r:1.055*Math.pow(r,1/2.4)-.055)<0?0:r>1?1:r}function al(r){return r>At?r*r*r:Ec*(r-ka)}let uh=Object.hasOwn||function(r,e){return Object.prototype.hasOwnProperty.call(r,e)};function Bo(r,e){return uh(r,e)?r[e]:void 0}function La(r){return parseInt(r.padEnd(2,r),16)/255}function kc(r,e){return Wn(e?r/100:r,0,1)}function Wn(r,e,i){return Math.min(Math.max(e,r),i)}function sl(r){return!r.some(Number.isNaN)}let Oo={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function Nr(r,e,i){return r+i*(e-r)}function Hn(r,e,i){return r.map(((o,a)=>Nr(o,e[a],i)))}class qe{constructor(e,i,o,a=1,l=!0){this.r=e,this.g=i,this.b=o,this.a=a,l||(this.r*=a,this.g*=a,this.b*=a,a||this.overwriteGetter("rgb",[e,i,o,a]))}static parse(e){if(e instanceof qe)return e;if(typeof e!="string")return;let i=(function(o){if((o=o.toLowerCase().trim())==="transparent")return[0,0,0,0];let a=Bo(Oo,o);if(a){let[u,p,g]=a;return[u/255,p/255,g/255,1]}if(o.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(o)){let u=o.length<6?1:2,p=1;return[La(o.slice(p,p+=u)),La(o.slice(p,p+=u)),La(o.slice(p,p+=u)),La(o.slice(p,p+u)||"ff")]}if(o.startsWith("rgb")){let u=o.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(u){let[p,g,m,x,_,T,b,M,I,A,D,L]=u,R=[x||" ",b||" ",A].join("");if(R===" "||R===" /"||R===",,"||R===",,,"){let F=[m,T,I].join(""),O=F==="%%%"?100:F===""?255:0;if(O){let N=[Wn(+g/O,0,1),Wn(+_/O,0,1),Wn(+M/O,0,1),D?kc(+D,L):1];if(sl(N))return N}}return}}let l=o.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(l){let[u,p,g,m,x,_,T,b,M]=l,I=[g||" ",x||" ",T].join("");if(I===" "||I===" /"||I===",,"||I===",,,"){let A=[+p,Wn(+m,0,100),Wn(+_,0,100),b?kc(+b,M):1];if(sl(A))return(function([D,L,R,F]){function O(N){let K=(N+D/30)%12,Q=L*Math.min(R,1-R);return R-Q*Math.max(-1,Math.min(K-3,9-K,1))}return D=Dc(D),L/=100,R/=100,[O(0),O(8),O(4),F]})(A)}}})(e);return i?new qe(...i,!1):void 0}get rgb(){let{r:e,g:i,b:o,a}=this,l=a||1/0;return this.overwriteGetter("rgb",[e/l,i/l,o/l,a])}get hcl(){return this.overwriteGetter("hcl",(function(e){let[i,o,a,l]=zc(e),u=Math.sqrt(o*o+a*a);return[Math.round(1e4*u)?Dc(Math.atan2(a,o)*Ac):NaN,u,i,l]})(this.rgb))}get lab(){return this.overwriteGetter("lab",zc(this.rgb))}overwriteGetter(e,i){return Object.defineProperty(this,e,{value:i}),i}toString(){let[e,i,o,a]=this.rgb;return`rgba(${[e,i,o].map((l=>Math.round(255*l))).join(",")},${a})`}static interpolate(e,i,o,a="rgb"){switch(a){case"rgb":{let[l,u,p,g]=Hn(e.rgb,i.rgb,o);return new qe(l,u,p,g,!1)}case"hcl":{let[l,u,p,g]=e.hcl,[m,x,_,T]=i.hcl,b,M;if(isNaN(l)||isNaN(m))isNaN(l)?isNaN(m)?b=NaN:(b=m,p!==1&&p!==0||(M=x)):(b=l,_!==1&&_!==0||(M=u));else{let R=m-l;m>l&&R>180?R-=360:m180&&(R+=360),b=l+o*R}let[I,A,D,L]=(function([R,F,O,N]){return R=isNaN(R)?0:R*Fo,nl([O,Math.cos(R)*F,Math.sin(R)*F,N])})([b,M??Nr(u,x,o),Nr(p,_,o),Nr(g,T,o)]);return new qe(I,A,D,L,!1)}case"lab":{let[l,u,p,g]=nl(Hn(e.lab,i.lab,o));return new qe(l,u,p,g,!1)}}}}qe.black=new qe(0,0,0,1),qe.white=new qe(1,1,1,1),qe.transparent=new qe(0,0,0,0),qe.red=new qe(1,0,0,1);class ll{constructor(e,i,o){this.sensitivity=e?i?"variant":"case":i?"accent":"base",this.locale=o,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,i){return this.collator.compare(e,i)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}let hh=["bottom","center","top"];class cl{constructor(e,i,o,a,l,u){this.text=e,this.image=i,this.scale=o,this.fontStack=a,this.textColor=l,this.verticalAlign=u}}class Ci{constructor(e){this.sections=e}static fromString(e){return new Ci([new cl(e,null,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some((e=>e.text.length!==0||e.image&&e.image.name.length!==0))}static factory(e){return e instanceof Ci?e:Ci.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map((e=>e.text)).join("")}}class li{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof li)return e;if(typeof e=="number")return new li([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(let i of e)if(typeof i!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new li(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,i,o){return new li(Hn(e.values,i.values,o))}}class wt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof wt)return e;if(typeof e=="number")return new wt([e]);if(Array.isArray(e)){for(let i of e)if(typeof i!="number")return;return new wt(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,i,o){return new wt(Hn(e.values,i.values,o))}}class Ve{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ve)return e;if(typeof e=="string"){let o=qe.parse(e);return o?new Ve([o]):void 0}if(!Array.isArray(e))return;let i=[];for(let o of e){if(typeof o!="string")return;let a=qe.parse(o);if(!a)return;i.push(a)}return new Ve(i)}toString(){return JSON.stringify(this.values)}static interpolate(e,i,o,a="rgb"){let l=[];if(e.values.length!=i.values.length)throw new Error(`colorArray: Arrays have mismatched length (${e.values.length} vs. ${i.values.length}), cannot interpolate.`);for(let u=0;u=0&&r<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof i=="number"&&i>=0&&i<=255?o===void 0||typeof o=="number"&&o>=0&&o<=1?null:`Invalid rgba value [${[r,e,i,o].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof o=="number"?[r,e,i,o]:[r,e,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Gr(r){if(r===null||typeof r=="string"||typeof r=="boolean"||typeof r=="number"||r instanceof yi||r instanceof qe||r instanceof ll||r instanceof Ci||r instanceof li||r instanceof wt||r instanceof Ve||r instanceof _i||r instanceof Bi)return!0;if(Array.isArray(r)){for(let e of r)if(!Gr(e))return!1;return!0}if(typeof r=="object"){for(let e in r)if(!Gr(r[e]))return!1;return!0}return!1}function Rt(r){if(r===null)return jr;if(typeof r=="string")return Ne;if(typeof r=="boolean")return Ye;if(typeof r=="number")return Me;if(r instanceof qe)return Fi;if(r instanceof yi)return Aa;if(r instanceof ll)return Do;if(r instanceof Ci)return zo;if(r instanceof li)return Da;if(r instanceof wt)return ko;if(r instanceof Ve)return $n;if(r instanceof _i)return Ro;if(r instanceof Bi)return Zn;if(Array.isArray(r)){let e=r.length,i;for(let o of r){let a=Rt(o);if(i){if(i===a)continue;i=Ge;break}i=a}return ni(i||Ge,e)}return vr}function fn(r){let e=typeof r;return r===null?"":e==="string"||e==="number"||e==="boolean"?String(r):r instanceof qe||r instanceof yi||r instanceof Ci||r instanceof li||r instanceof wt||r instanceof Ve||r instanceof _i||r instanceof Bi?r.toString():JSON.stringify(r)}class dr{constructor(e,i){this.type=e,this.value=i}static parse(e,i){if(e.length!==2)return i.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Gr(e[1]))return i.error("invalid value");let o=e[1],a=Rt(o),l=i.expectedType;return a.kind!=="array"||a.N!==0||!l||l.kind!=="array"||typeof l.N=="number"&&l.N!==0||(a=l),new dr(a,o)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}let Fa={string:Ne,number:Me,boolean:Ye,object:vr};class Ai{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let o,a=1,l=e[0];if(l==="array"){let p,g;if(e.length>2){let m=e[1];if(typeof m!="string"||!(m in Fa)||m==="object")return i.error('The item type argument of "array" must be one of string, number, boolean',1);p=Fa[m],a++}else p=Ge;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return i.error('The length argument to "array" must be a positive integer literal',2);g=e[2],a++}o=ni(p,g)}else{if(!Fa[l])throw new Error(`Types doesn't contain name = ${l}`);o=Fa[l]}let u=[];for(;ae.outputDefined()))}}let mn={"to-boolean":Ye,"to-color":Fi,"to-number":Me,"to-string":Ne};class br{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let o=e[0];if(!mn[o])throw new Error(`Can't parse ${o} as it is not part of the known types`);if((o==="to-boolean"||o==="to-string")&&e.length!==2)return i.error("Expected one argument.");let a=mn[o],l=[];for(let u=1;u4?`Invalid rgba value ${JSON.stringify(i)}: expected an array containing either three or four numeric values.`:Xn(i[0],i[1],i[2],i[3]),!o))return new qe(i[0]/255,i[1]/255,i[2]/255,i[3])}throw new mt(o||`Could not parse color from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"padding":{let i;for(let o of this.args){i=o.evaluate(e);let a=li.parse(i);if(a)return a}throw new mt(`Could not parse padding from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"numberArray":{let i;for(let o of this.args){i=o.evaluate(e);let a=wt.parse(i);if(a)return a}throw new mt(`Could not parse numberArray from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"colorArray":{let i;for(let o of this.args){i=o.evaluate(e);let a=Ve.parse(i);if(a)return a}throw new mt(`Could not parse colorArray from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"variableAnchorOffsetCollection":{let i;for(let o of this.args){i=o.evaluate(e);let a=_i.parse(i);if(a)return a}throw new mt(`Could not parse variableAnchorOffsetCollection from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"number":{let i=null;for(let o of this.args){if(i=o.evaluate(e),i===null)return 0;let a=Number(i);if(!isNaN(a))return a}throw new mt(`Could not convert ${JSON.stringify(i)} to number.`)}case"formatted":return Ci.fromString(fn(this.args[0].evaluate(e)));case"resolvedImage":return Bi.fromString(fn(this.args[0].evaluate(e)));case"projectionDefinition":return this.args[0].evaluate(e);default:return fn(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}}let Rc=["Unknown","Point","LineString","Polygon"];class ul{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Rc[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(e){let i=this._parseColorCache.get(e);return i||(i=qe.parse(e),this._parseColorCache.set(e,i)),i}}class gn{constructor(e,i,o=[],a,l=new il,u=[]){this.registry=e,this.path=o,this.key=o.map((p=>`[${p}]`)).join(""),this.scope=l,this.errors=u,this.expectedType=a,this._isConstant=i}parse(e,i,o,a,l={}){return i?this.concat(i,o,a)._parse(e,l):this._parse(e,l)}_parse(e,i){function o(a,l,u){return u==="assert"?new Ai(l,[a]):u==="coerce"?new br(l,[a]):a}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let a=e[0];if(typeof a!="string")return this.error(`Expression name must be a string, but found ${typeof a} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let l=this.registry[a];if(l){let u=l.parse(e,this);if(!u)return null;if(this.expectedType){let p=this.expectedType,g=u.type;if(p.kind!=="string"&&p.kind!=="number"&&p.kind!=="boolean"&&p.kind!=="object"&&p.kind!=="array"||g.kind!=="value"){if(p.kind==="projectionDefinition"&&["string","array"].includes(g.kind)||["color","formatted","resolvedImage"].includes(p.kind)&&["value","string"].includes(g.kind)||["padding","numberArray"].includes(p.kind)&&["value","number","array"].includes(g.kind)||p.kind==="colorArray"&&["value","string","array"].includes(g.kind)||p.kind==="variableAnchorOffsetCollection"&&["value","array"].includes(g.kind))u=o(u,p,i.typeAnnotation||"coerce");else if(this.checkSubtype(p,g))return null}else u=o(u,p,i.typeAnnotation||"assert")}if(!(u instanceof dr)&&u.type.kind!=="resolvedImage"&&this._isConstant(u)){let p=new ul;try{u=new dr(u.type,u.evaluate(p))}catch(g){return this.error(g.message),null}}return u}return this.error(`Unknown expression "${a}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,i,o){let a=typeof e=="number"?this.path.concat(e):this.path,l=o?this.scope.concat(o):this.scope;return new gn(this.registry,this._isConstant,a,i||null,l,this.errors)}error(e,...i){let o=`${this.key}${i.map((a=>`[${a}]`)).join("")}`;this.errors.push(new ri(o,e))}checkSubtype(e,i){let o=qn(e,i);return o&&this.error(o),o}}class gt{constructor(e,i){this.type=i.type,this.bindings=[].concat(e),this.result=i}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(let i of this.bindings)e(i[1]);e(this.result)}static parse(e,i){if(e.length<4)return i.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);let o=[];for(let l=1;l=o.length)throw new mt(`Array index out of bounds: ${i} > ${o.length-1}.`);if(i!==Math.floor(i))throw new mt(`Array index must be an integer, but found ${i} instead.`);return o[i]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class $e{constructor(e,i){this.type=Ye,this.needle=e,this.haystack=i}static parse(e,i){if(e.length!==3)return i.error(`Expected 2 arguments, but found ${e.length-1} instead.`);let o=i.parse(e[1],1,Ge),a=i.parse(e[2],2,Ge);return o&&a?Lo(o.type,[Ye,Ne,Me,jr,Ge])?new $e(o,a):i.error(`Expected first argument to be of type boolean, string, number or null, but found ${ht(o.type)} instead`):null}evaluate(e){let i=this.needle.evaluate(e),o=this.haystack.evaluate(e);if(!o)return!1;if(!dn(i,["boolean","string","number","null"]))throw new mt(`Expected first argument to be of type boolean, string, number or null, but found ${ht(Rt(i))} instead.`);if(!dn(o,["string","array"]))throw new mt(`Expected second argument to be of type array or string, but found ${ht(Rt(o))} instead.`);return o.indexOf(i)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class Kn{constructor(e,i,o){this.type=Me,this.needle=e,this.haystack=i,this.fromIndex=o}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);let o=i.parse(e[1],1,Ge),a=i.parse(e[2],2,Ge);if(!o||!a)return null;if(!Lo(o.type,[Ye,Ne,Me,jr,Ge]))return i.error(`Expected first argument to be of type boolean, string, number or null, but found ${ht(o.type)} instead`);if(e.length===4){let l=i.parse(e[3],3,Me);return l?new Kn(o,a,l):null}return new Kn(o,a)}evaluate(e){let i=this.needle.evaluate(e),o=this.haystack.evaluate(e);if(!dn(i,["boolean","string","number","null"]))throw new mt(`Expected first argument to be of type boolean, string, number or null, but found ${ht(Rt(i))} instead.`);let a;if(this.fromIndex&&(a=this.fromIndex.evaluate(e)),dn(o,["string"])){let l=o.indexOf(i,a);return l===-1?-1:[...o.slice(0,l)].length}if(dn(o,["array"]))return o.indexOf(i,a);throw new mt(`Expected second argument to be of type array or string, but found ${ht(Rt(o))} instead.`)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class rt{constructor(e,i,o,a,l,u){this.inputType=e,this.type=i,this.input=o,this.cases=a,this.outputs=l,this.otherwise=u}static parse(e,i){if(e.length<5)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return i.error("Expected an even number of arguments.");let o,a;i.expectedType&&i.expectedType.kind!=="value"&&(a=i.expectedType);let l={},u=[];for(let m=2;mNumber.MAX_SAFE_INTEGER)return T.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof M=="number"&&Math.floor(M)!==M)return T.error("Numeric branch labels must be integer values.");if(o){if(T.checkSubtype(o,Rt(M)))return null}else o=Rt(M);if(l[String(M)]!==void 0)return T.error("Branch labels must be unique.");l[String(M)]=u.length}let b=i.parse(_,m,a);if(!b)return null;a=a||b.type,u.push(b)}let p=i.parse(e[1],1,Ge);if(!p)return null;let g=i.parse(e[e.length-1],e.length-1,a);return g?p.type.kind!=="value"&&i.concat(1).checkSubtype(o,p.type)?null:new rt(o,a,p,l,u,g):null}evaluate(e){let i=this.input.evaluate(e);return(Rt(i)===this.inputType&&this.outputs[this.cases[i]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))&&this.otherwise.outputDefined()}}class or{constructor(e,i,o){this.type=e,this.branches=i,this.otherwise=o}static parse(e,i){if(e.length<4)return i.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return i.error("Expected an odd number of arguments.");let o;i.expectedType&&i.expectedType.kind!=="value"&&(o=i.expectedType);let a=[];for(let u=1;ui.outputDefined()))&&this.otherwise.outputDefined()}}class Jn{constructor(e,i,o,a){this.type=e,this.input=i,this.beginIndex=o,this.endIndex=a}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);let o=i.parse(e[1],1,Ge),a=i.parse(e[2],2,Me);if(!o||!a)return null;if(!Lo(o.type,[ni(Ge),Ne,Ge]))return i.error(`Expected first argument to be of type array or string, but found ${ht(o.type)} instead`);if(e.length===4){let l=i.parse(e[3],3,Me);return l?new Jn(o.type,o,a,l):null}return new Jn(o.type,o,a)}evaluate(e){let i=this.input.evaluate(e),o=this.beginIndex.evaluate(e),a;if(this.endIndex&&(a=this.endIndex.evaluate(e)),dn(i,["string"]))return[...i].slice(o,a).join("");if(dn(i,["array"]))return i.slice(o,a);throw new mt(`Expected first argument to be of type array or string, but found ${ht(Rt(i))} instead.`)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function _n(r,e){let i=r.length-1,o,a,l=0,u=i,p=0;for(;l<=u;)if(p=Math.floor((l+u)/2),o=r[p],a=r[p+1],o<=e){if(p===i||ee))throw new mt("Input is not a number.");u=p-1}return 0}class Qn{constructor(e,i,o){this.type=e,this.input=i,this.labels=[],this.outputs=[];for(let[a,l]of o)this.labels.push(a),this.outputs.push(l)}static parse(e,i){if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");let o=i.parse(e[1],1,Me);if(!o)return null;let a=[],l=null;i.expectedType&&i.expectedType.kind!=="value"&&(l=i.expectedType);for(let u=1;u=p)return i.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',m);let _=i.parse(g,x,l);if(!_)return null;l=l||_.type,a.push([p,_])}return new Qn(l,o,a)}evaluate(e){let i=this.labels,o=this.outputs;if(i.length===1)return o[0].evaluate(e);let a=this.input.evaluate(e);if(a<=i[0])return o[0].evaluate(e);let l=i.length;return a>=i[l-1]?o[l-1].evaluate(e):o[_n(i,a)].evaluate(e)}eachChild(e){e(this.input);for(let i of this.outputs)e(i)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}}function hl(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Ba,Lc,Fc=(function(){if(Lc)return Ba;function r(e,i,o,a){this.cx=3*e,this.bx=3*(o-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(a-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=i,this.p2x=o,this.p2y=a}return Lc=1,Ba=r,r.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,i){if(i===void 0&&(i=1e-6),e<0)return 0;if(e>1)return 1;for(var o=e,a=0;a<8;a++){var l=this.sampleCurveX(o)-e;if(Math.abs(l)l?p=o:g=o,o=.5*(g-p)+p;return o},solve:function(e,i){return this.sampleCurveY(this.solveCurveX(e,i))}},Ba})(),Bc=hl(Fc);class Bt{constructor(e,i,o,a,l){this.type=e,this.operator=i,this.interpolation=o,this.input=a,this.labels=[],this.outputs=[];for(let[u,p]of l)this.labels.push(u),this.outputs.push(p)}static interpolationFactor(e,i,o,a){let l=0;if(e.name==="exponential")l=Ht(i,e.base,o,a);else if(e.name==="linear")l=Ht(i,1,o,a);else if(e.name==="cubic-bezier"){let u=e.controlPoints;l=new Bc(u[0],u[1],u[2],u[3]).solve(Ht(i,1,o,a))}return l}static parse(e,i){let[o,a,l,...u]=e;if(!Array.isArray(a)||a.length===0)return i.error("Expected an interpolation type expression.",1);if(a[0]==="linear")a={name:"linear"};else if(a[0]==="exponential"){let m=a[1];if(typeof m!="number")return i.error("Exponential interpolation requires a numeric base.",1,1);a={name:"exponential",base:m}}else{if(a[0]!=="cubic-bezier")return i.error(`Unknown interpolation type ${String(a[0])}`,1,0);{let m=a.slice(1);if(m.length!==4||m.some((x=>typeof x!="number"||x<0||x>1)))return i.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);a={name:"cubic-bezier",controlPoints:m}}}if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");if(l=i.parse(l,2,Me),!l)return null;let p=[],g=null;o!=="interpolate-hcl"&&o!=="interpolate-lab"||i.expectedType==$n?i.expectedType&&i.expectedType.kind!=="value"&&(g=i.expectedType):g=Fi;for(let m=0;m=x)return i.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',T);let M=i.parse(_,b,g);if(!M)return null;g=g||M.type,p.push([x,M])}return nr(g,Me)||nr(g,Aa)||nr(g,Fi)||nr(g,Da)||nr(g,ko)||nr(g,$n)||nr(g,Ro)||nr(g,ni(Me))?new Bt(g,o,a,l,p):i.error(`Type ${ht(g)} is not interpolatable.`)}evaluate(e){let i=this.labels,o=this.outputs;if(i.length===1)return o[0].evaluate(e);let a=this.input.evaluate(e);if(a<=i[0])return o[0].evaluate(e);let l=i.length;if(a>=i[l-1])return o[l-1].evaluate(e);let u=_n(i,a),p=Bt.interpolationFactor(this.interpolation,a,i[u],i[u+1]),g=o[u].evaluate(e),m=o[u+1].evaluate(e);switch(this.operator){case"interpolate":switch(this.type.kind){case"number":return Nr(g,m,p);case"color":return qe.interpolate(g,m,p);case"padding":return li.interpolate(g,m,p);case"colorArray":return Ve.interpolate(g,m,p);case"numberArray":return wt.interpolate(g,m,p);case"variableAnchorOffsetCollection":return _i.interpolate(g,m,p);case"array":return Hn(g,m,p);case"projectionDefinition":return yi.interpolate(g,m,p)}case"interpolate-hcl":switch(this.type.kind){case"color":return qe.interpolate(g,m,p,"hcl");case"colorArray":return Ve.interpolate(g,m,p,"hcl")}case"interpolate-lab":switch(this.type.kind){case"color":return qe.interpolate(g,m,p,"lab");case"colorArray":return Ve.interpolate(g,m,p,"lab")}}}eachChild(e){e(this.input);for(let i of this.outputs)e(i)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}}function Ht(r,e,i,o){let a=o-i,l=r-i;return a===0?0:e===1?l/a:(Math.pow(e,l)-1)/(Math.pow(e,a)-1)}let Oi={color:qe.interpolate,number:Nr,padding:li.interpolate,numberArray:wt.interpolate,colorArray:Ve.interpolate,variableAnchorOffsetCollection:_i.interpolate,array:Hn};class Vo{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let o=null,a=i.expectedType;a&&a.kind!=="value"&&(o=a);let l=[];for(let p of e.slice(1)){let g=i.parse(p,1+l.length,o,void 0,{typeAnnotation:"omit"});if(!g)return null;o=o||g.type,l.push(g)}if(!o)throw new Error("No output type");let u=a&&l.some((p=>qn(a,p.type)));return new Vo(u?Ge:o,l)}evaluate(e){let i,o=null,a=0;for(let l of this.args)if(a++,o=l.evaluate(e),o&&o instanceof Bi&&!o.available&&(i||(i=o.name),o=null,a===this.args.length&&(o=i)),o!==null)break;return o}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}}function jo(r,e){return r==="=="||r==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function Zt(r,e,i,o){return o.compare(e,i)===0}function yn(r,e,i){let o=r!=="=="&&r!=="!=";return class tg{constructor(l,u,p){this.type=Ye,this.lhs=l,this.rhs=u,this.collator=p,this.hasUntypedArgument=l.type.kind==="value"||u.type.kind==="value"}static parse(l,u){if(l.length!==3&&l.length!==4)return u.error("Expected two or three arguments.");let p=l[0],g=u.parse(l[1],1,Ge);if(!g)return null;if(!jo(p,g.type))return u.concat(1).error(`"${p}" comparisons are not supported for type '${ht(g.type)}'.`);let m=u.parse(l[2],2,Ge);if(!m)return null;if(!jo(p,m.type))return u.concat(2).error(`"${p}" comparisons are not supported for type '${ht(m.type)}'.`);if(g.type.kind!==m.type.kind&&g.type.kind!=="value"&&m.type.kind!=="value")return u.error(`Cannot compare types '${ht(g.type)}' and '${ht(m.type)}'.`);o&&(g.type.kind==="value"&&m.type.kind!=="value"?g=new Ai(m.type,[g]):g.type.kind!=="value"&&m.type.kind==="value"&&(m=new Ai(g.type,[m])));let x=null;if(l.length===4){if(g.type.kind!=="string"&&m.type.kind!=="string"&&g.type.kind!=="value"&&m.type.kind!=="value")return u.error("Cannot use collator to compare non-string types.");if(x=u.parse(l[3],3,Do),!x)return null}return new tg(g,m,x)}evaluate(l){let u=this.lhs.evaluate(l),p=this.rhs.evaluate(l);if(o&&this.hasUntypedArgument){let g=Rt(u),m=Rt(p);if(g.kind!==m.kind||g.kind!=="string"&&g.kind!=="number")throw new mt(`Expected arguments for "${r}" to be (string, string) or (number, number), but found (${g.kind}, ${m.kind}) instead.`)}if(this.collator&&!o&&this.hasUntypedArgument){let g=Rt(u),m=Rt(p);if(g.kind!=="string"||m.kind!=="string")return e(l,u,p)}return this.collator?i(l,u,p,this.collator.evaluate(l)):e(l,u,p)}eachChild(l){l(this.lhs),l(this.rhs),this.collator&&l(this.collator)}outputDefined(){return!0}}}let dl=yn("==",(function(r,e,i){return e===i}),Zt),Oc=yn("!=",(function(r,e,i){return e!==i}),(function(r,e,i,o){return!Zt(0,e,i,o)})),dh=yn("<",(function(r,e,i){return e",(function(r,e,i){return e>i}),(function(r,e,i,o){return o.compare(e,i)>0})),Oa=yn("<=",(function(r,e,i){return e<=i}),(function(r,e,i,o){return o.compare(e,i)<=0})),pl=yn(">=",(function(r,e,i){return e>=i}),(function(r,e,i,o){return o.compare(e,i)>=0}));class Va{constructor(e,i,o){this.type=Do,this.locale=o,this.caseSensitive=e,this.diacriticSensitive=i}static parse(e,i){if(e.length!==2)return i.error("Expected one argument.");let o=e[1];if(typeof o!="object"||Array.isArray(o))return i.error("Collator options argument must be an object.");let a=i.parse(o["case-sensitive"]!==void 0&&o["case-sensitive"],1,Ye);if(!a)return null;let l=i.parse(o["diacritic-sensitive"]!==void 0&&o["diacritic-sensitive"],1,Ye);if(!l)return null;let u=null;return o.locale&&(u=i.parse(o.locale,1,Ne),!u)?null:new Va(a,l,u)}evaluate(e){return new ll(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}}class ja{constructor(e,i,o,a,l,u){this.type=Ne,this.number=e,this.locale=i,this.currency=o,this.unit=a,this.minFractionDigits=l,this.maxFractionDigits=u}static parse(e,i){if(e.length!==3)return i.error("Expected two arguments.");let o=i.parse(e[1],1,Me);if(!o)return null;let a=e[2];if(typeof a!="object"||Array.isArray(a))return i.error("NumberFormat options argument must be an object.");let l=null;if(a.locale&&(l=i.parse(a.locale,1,Ne),!l))return null;let u=null;if(a.currency&&(u=i.parse(a.currency,1,Ne),!u))return null;let p=null;if(a.unit&&(p=i.parse(a.unit,1,Ne),!p))return null;if(u&&p)return i.error("NumberFormat options `currency` and `unit` are mutually exclusive");let g=null;if(a["min-fraction-digits"]&&(g=i.parse(a["min-fraction-digits"],1,Me),!g))return null;let m=null;return a["max-fraction-digits"]&&(m=i.parse(a["max-fraction-digits"],1,Me),!m)?null:new ja(o,l,u,p,g,m)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":this.unit?"unit":"decimal",currency:this.currency?this.currency.evaluate(e):void 0,unit:this.unit?this.unit.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.unit&&e(this.unit),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class xn{constructor(e){this.type=zo,this.sections=e}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let o=e[1];if(!Array.isArray(o)&&typeof o=="object")return i.error("First argument must be an image or text section.");let a=[],l=!1;for(let u=1;u<=e.length-1;++u){let p=e[u];if(l&&typeof p=="object"&&!Array.isArray(p)){l=!1;let g=null;if(p["font-scale"]&&(g=i.parse(p["font-scale"],1,Me),!g))return null;let m=null;if(p["text-font"]&&(m=i.parse(p["text-font"],1,ni(Ne)),!m))return null;let x=null;if(p["text-color"]&&(x=i.parse(p["text-color"],1,Fi),!x))return null;let _=null;if(p["vertical-align"]){if(typeof p["vertical-align"]=="string"&&!hh.includes(p["vertical-align"]))return i.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${p["vertical-align"]}' instead.`);if(_=i.parse(p["vertical-align"],1,Ne),!_)return null}let T=a[a.length-1];T.scale=g,T.font=m,T.textColor=x,T.verticalAlign=_}else{let g=i.parse(e[u],1,Ge);if(!g)return null;let m=g.type.kind;if(m!=="string"&&m!=="value"&&m!=="null"&&m!=="resolvedImage")return i.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");l=!0,a.push({content:g,scale:null,font:null,textColor:null,verticalAlign:null})}}return new xn(a)}evaluate(e){return new Ci(this.sections.map((i=>{let o=i.content.evaluate(e);return Rt(o)===Zn?new cl("",o,null,null,null,i.verticalAlign?i.verticalAlign.evaluate(e):null):new cl(fn(o),null,i.scale?i.scale.evaluate(e):null,i.font?i.font.evaluate(e).join(","):null,i.textColor?i.textColor.evaluate(e):null,i.verticalAlign?i.verticalAlign.evaluate(e):null)})))}eachChild(e){for(let i of this.sections)e(i.content),i.scale&&e(i.scale),i.font&&e(i.font),i.textColor&&e(i.textColor),i.verticalAlign&&e(i.verticalAlign)}outputDefined(){return!1}}class to{constructor(e){this.type=Zn,this.input=e}static parse(e,i){if(e.length!==2)return i.error("Expected two arguments.");let o=i.parse(e[1],1,Ne);return o?new to(o):i.error("No image name provided.")}evaluate(e){let i=this.input.evaluate(e),o=Bi.fromString(i);return o&&e.availableImages&&(o.available=e.availableImages.indexOf(i)>-1),o}eachChild(e){e(this.input)}outputDefined(){return!1}}class Vi{constructor(e){this.type=Me,this.input=e}static parse(e,i){if(e.length!==2)return i.error(`Expected 1 argument, but found ${e.length-1} instead.`);let o=i.parse(e[1],1);return o?o.type.kind!=="array"&&o.type.kind!=="string"&&o.type.kind!=="value"?i.error(`Expected argument of type string or array, but found ${ht(o.type)} instead.`):new Vi(o):null}evaluate(e){let i=this.input.evaluate(e);if(typeof i=="string")return[...i].length;if(Array.isArray(i))return i.length;throw new mt(`Expected value to be of type string or array, but found ${ht(Rt(i))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}let ar=8192;function Na(r,e){let i=(180+r[0])/360,o=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r[1]*Math.PI/360)))/360,a=Math.pow(2,e.z);return[Math.round(i*a*ar),Math.round(o*a*ar)]}function fl(r,e){let i=Math.pow(2,e.z);return[(a=(r[0]/ar+e.x)/i,360*a-180),(o=(r[1]/ar+e.y)/i,360/Math.PI*Math.atan(Math.exp((180-360*o)*Math.PI/180))-90)];var o,a}function vn(r,e){r[0]=Math.min(r[0],e[0]),r[1]=Math.min(r[1],e[1]),r[2]=Math.max(r[2],e[0]),r[3]=Math.max(r[3],e[1])}function No(r,e){return!(r[0]<=e[0]||r[2]>=e[2]||r[1]<=e[1]||r[3]>=e[3])}function ph(r,e,i){let o=r[0]-e[0],a=r[1]-e[1],l=r[0]-i[0],u=r[1]-i[1];return o*u-l*a==0&&o*l<=0&&a*u<=0}function Ua(r,e,i,o){return(a=[o[0]-i[0],o[1]-i[1]])[0]*(l=[e[0]-r[0],e[1]-r[1]])[1]-a[1]*l[0]!=0&&!(!jc(r,e,i,o)||!jc(i,o,r,e));var a,l}function fh(r,e,i){for(let o of i)for(let a=0;a(a=r)[1]!=(u=p[g+1])[1]>a[1]&&a[0]<(u[0]-l[0])*(a[1]-l[1])/(u[1]-l[1])+l[0]&&(o=!o)}var a,l,u;return o}function mh(r,e){for(let i of e)if(wr(r,i))return!0;return!1}function ml(r,e){for(let i of r)if(!wr(i,e))return!1;for(let i=0;i0&&p<0||u<0&&p>0}function Ga(r,e,i){let o=[];for(let a=0;ai[2]){let a=.5*o,l=r[0]-i[0]>a?-o:i[0]-r[0]>a?o:0;l===0&&(l=r[0]-i[2]>a?-o:i[2]-r[0]>a?o:0),r[0]+=l}vn(e,r)}function Gc(r,e,i,o){let a=Math.pow(2,o.z)*ar,l=[o.x*ar,o.y*ar],u=[];for(let p of r)for(let g of p){let m=[g.x+l[0],g.y+l[1]];Uc(m,e,i,a),u.push(m)}return u}function $c(r,e,i,o){let a=Math.pow(2,o.z)*ar,l=[o.x*ar,o.y*ar],u=[];for(let g of r){let m=[];for(let x of g){let _=[x.x+l[0],x.y+l[1]];vn(e,_),m.push(_)}u.push(m)}if(e[2]-e[0]<=a/2){(p=e)[0]=p[1]=1/0,p[2]=p[3]=-1/0;for(let g of u)for(let m of g)Uc(m,e,i,a)}var p;return u}class bn{constructor(e,i){this.type=Ye,this.geojson=e,this.geometries=i}static parse(e,i){if(e.length!==2)return i.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Gr(e[1])){let o=e[1];if(o.type==="FeatureCollection"){let a=[];for(let l of o.features){let{type:u,coordinates:p}=l.geometry;u==="Polygon"&&a.push(p),u==="MultiPolygon"&&a.push(...p)}if(a.length)return new bn(o,{type:"MultiPolygon",coordinates:a})}else if(o.type==="Feature"){let a=o.geometry.type;if(a==="Polygon"||a==="MultiPolygon")return new bn(o,o.geometry)}else if(o.type==="Polygon"||o.type==="MultiPolygon")return new bn(o,o)}return i.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()==="Point")return(function(i,o){let a=[1/0,1/0,-1/0,-1/0],l=[1/0,1/0,-1/0,-1/0],u=i.canonicalID();if(o.type==="Polygon"){let p=Ga(o.coordinates,l,u),g=Gc(i.geometry(),a,l,u);if(!No(a,l))return!1;for(let m of g)if(!wr(m,p))return!1}if(o.type==="MultiPolygon"){let p=Nc(o.coordinates,l,u),g=Gc(i.geometry(),a,l,u);if(!No(a,l))return!1;for(let m of g)if(!mh(m,p))return!1}return!0})(e,this.geometries);if(e.geometryType()==="LineString")return(function(i,o){let a=[1/0,1/0,-1/0,-1/0],l=[1/0,1/0,-1/0,-1/0],u=i.canonicalID();if(o.type==="Polygon"){let p=Ga(o.coordinates,l,u),g=$c(i.geometry(),a,l,u);if(!No(a,l))return!1;for(let m of g)if(!ml(m,p))return!1}if(o.type==="MultiPolygon"){let p=Nc(o.coordinates,l,u),g=$c(i.geometry(),a,l,u);if(!No(a,l))return!1;for(let m of g)if(!Vc(m,p))return!1}return!0})(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let gl=class{constructor(r=[],e=(i,o)=>io?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;let r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){let{data:e,compare:i}=this,o=e[r];for(;r>0;){let a=r-1>>1,l=e[a];if(i(o,l)>=0)break;e[r]=l,r=a}e[r]=o}_down(r){let{data:e,compare:i}=this,o=this.length>>1,a=e[r];for(;r=0)break;e[r]=e[l],r=l}e[r]=a}};function _l(r,e,i=0,o=r.length-1,a=gh){for(;o>i;){if(o-i>600){let g=o-i+1,m=e-i+1,x=Math.log(g),_=.5*Math.exp(2*x/3),T=.5*Math.sqrt(x*_*(g-_)/g)*(m-g/2<0?-1:1);_l(r,e,Math.max(i,Math.floor(e-m*_/g+T)),Math.min(o,Math.floor(e+(g-m)*_/g+T)),a)}let l=r[e],u=i,p=o;for(io(r,i,e),a(r[o],l)>0&&io(r,i,o);u0;)p--}a(r[i],l)===0?io(r,i,p):(p++,io(r,p,o)),p<=e&&(i=p+1),e<=p&&(o=p-1)}}function io(r,e,i){let o=r[e];r[e]=r[i],r[i]=o}function gh(r,e){return re?1:0}function $a(r,e){if(r.length<=1)return[r];let i=[],o,a;for(let l of r){let u=yh(l);u!==0&&(l.area=Math.abs(u),a===void 0&&(a=u<0),a===u<0?(o&&i.push(o),o=[l]):o.push(l))}if(o&&i.push(o),e>1)for(let l=0;l1?(m=e[g+1][0],x=e[g+1][1]):b>0&&(m+=_/this.kx*b,x+=T/this.ky*b)),_=this.wrap(i[0]-m)*this.kx,T=(i[1]-x)*this.ky;let M=_*_+T*T;M180;)e-=360;return e}}function Wc(r,e){return e[0]-r[0]}function ro(r){return r[1]-r[0]+1}function pr(r,e){return r[1]>=r[0]&&r[1]r[1])return[null,null];let i=ro(r);if(e){if(i===2)return[r,null];let a=Math.floor(i/2);return[[r[0],r[0]+a],[r[0]+a,r[1]]]}if(i===1)return[r,null];let o=Math.floor(i/2)-1;return[[r[0],r[0]+o],[r[0]+o+1,r[1]]]}function vl(r,e){if(!pr(e,r.length))return[1/0,1/0,-1/0,-1/0];let i=[1/0,1/0,-1/0,-1/0];for(let o=e[0];o<=e[1];++o)vn(i,r[o]);return i}function Za(r){let e=[1/0,1/0,-1/0,-1/0];for(let i of r)for(let o of i)vn(e,o);return e}function bl(r){return r[0]!==-1/0&&r[1]!==-1/0&&r[2]!==1/0&&r[3]!==1/0}function wl(r,e,i){if(!bl(r)||!bl(e))return NaN;let o=0,a=0;return r[2]e[2]&&(o=r[0]-e[2]),r[1]>e[3]&&(a=r[1]-e[3]),r[3]=o)return o;if(No(a,l)){if(Xc(r,e))return 0}else if(Xc(e,r))return 0;let u=1/0;for(let p of r)for(let g=0,m=p.length,x=m-1;g0;){let g=u.pop();if(g[0]>=l)continue;let m=g[1],x=e?50:100;if(ro(m)<=x){if(!pr(m,r.length))return NaN;if(e){let _=bh(r,m,i,o);if(isNaN(_)||_===0)return _;l=Math.min(l,_)}else for(let _=m[0];_<=m[1];++_){let T=vh(r[_],i,o);if(l=Math.min(l,T),l===0)return 0}}else{let _=xl(m,e);Yc(u,l,o,r,p,_[0]),Yc(u,l,o,r,p,_[1])}}return l}function Ha(r,e,i,o,a,l=1/0){let u=Math.min(l,a.distance(r[0],i[0]));if(u===0)return u;let p=new gl([[0,[0,r.length-1],[0,i.length-1]]],Wc);for(;p.length>0;){let g=p.pop();if(g[0]>=u)continue;let m=g[1],x=g[2],_=e?50:100,T=o?50:100;if(ro(m)<=_&&ro(x)<=T){if(!pr(m,r.length)&&pr(x,i.length))return NaN;let b;if(e&&o)b=Hc(r,m,i,x,a),u=Math.min(u,b);else if(e&&!o){let M=r.slice(m[0],m[1]+1);for(let I=x[0];I<=x[1];++I)if(b=wn(i[I],M,a),u=Math.min(u,b),u===0)return u}else if(!e&&o){let M=i.slice(x[0],x[1]+1);for(let I=m[0];I<=m[1];++I)if(b=wn(r[I],M,a),u=Math.min(u,b),u===0)return u}else b=xh(r,m,i,x,a),u=Math.min(u,b)}else{let b=xl(m,e),M=xl(x,o);qa(p,u,a,r,i,b[0],M[0]),qa(p,u,a,r,i,b[0],M[1]),qa(p,u,a,r,i,b[1],M[0]),qa(p,u,a,r,i,b[1],M[1])}}return u}function Sl(r){return r.type==="MultiPolygon"?r.coordinates.map((e=>({type:"Polygon",coordinates:e}))):r.type==="MultiLineString"?r.coordinates.map((e=>({type:"LineString",coordinates:e}))):r.type==="MultiPoint"?r.coordinates.map((e=>({type:"Point",coordinates:e}))):[r]}class Tn{constructor(e,i){this.type=Me,this.geojson=e,this.geometries=i}static parse(e,i){if(e.length!==2)return i.error(`'distance' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Gr(e[1])){let o=e[1];if(o.type==="FeatureCollection")return new Tn(o,o.features.map((a=>Sl(a.geometry))).flat());if(o.type==="Feature")return new Tn(o,Sl(o.geometry));if("type"in o&&"coordinates"in o)return new Tn(o,Sl(o))}return i.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()==="Point")return(function(i,o){let a=i.geometry(),l=a.flat().map((g=>fl([g.x,g.y],i.canonical)));if(a.length===0)return NaN;let u=new yl(l[0][1]),p=1/0;for(let g of o){switch(g.type){case"Point":p=Math.min(p,Ha(l,!1,[g.coordinates],!1,u,p));break;case"LineString":p=Math.min(p,Ha(l,!1,g.coordinates,!0,u,p));break;case"Polygon":p=Math.min(p,Wa(l,!1,g.coordinates,u,p))}if(p===0)return p}return p})(e,this.geometries);if(e.geometryType()==="LineString")return(function(i,o){let a=i.geometry(),l=a.flat().map((g=>fl([g.x,g.y],i.canonical)));if(a.length===0)return NaN;let u=new yl(l[0][1]),p=1/0;for(let g of o){switch(g.type){case"Point":p=Math.min(p,Ha(l,!0,[g.coordinates],!1,u,p));break;case"LineString":p=Math.min(p,Ha(l,!0,g.coordinates,!0,u,p));break;case"Polygon":p=Math.min(p,Wa(l,!0,g.coordinates,u,p))}if(p===0)return p}return p})(e,this.geometries);if(e.geometryType()==="Polygon")return(function(i,o){let a=i.geometry();if(a.length===0||a[0].length===0)return NaN;let l=$a(a,0).map((g=>g.map((m=>m.map((x=>fl([x.x,x.y],i.canonical))))))),u=new yl(l[0][0][0][1]),p=1/0;for(let g of o)for(let m of l){switch(g.type){case"Point":p=Math.min(p,Wa([g.coordinates],!1,m,u,p));break;case"LineString":p=Math.min(p,Wa(g.coordinates,!0,m,u,p));break;case"Polygon":p=Math.min(p,lt(m,g.coordinates,u,p))}if(p===0)return p}return p})(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}class Go{constructor(e){this.type=Ge,this.key=e}static parse(e,i){if(e.length!==2)return i.error(`Expected 1 argument, but found ${e.length-1} instead.`);let o=e[1];return o==null?i.error("Global state property must be defined."):typeof o!="string"?i.error(`Global state property must be string, but found ${typeof e[1]} instead.`):new Go(o)}evaluate(e){var i;let o=(i=e.globals)===null||i===void 0?void 0:i.globalState;return o&&Object.keys(o).length!==0?Bo(o,this.key):null}eachChild(){}outputDefined(){return!1}}let no={"==":dl,"!=":Oc,">":eo,"<":dh,">=":pl,"<=":Oa,array:Ai,at:tt,boolean:Ai,case:or,coalesce:Vo,collator:Va,format:xn,image:to,in:$e,"index-of":Kn,interpolate:Bt,"interpolate-hcl":Bt,"interpolate-lab":Bt,length:Vi,let:gt,literal:dr,match:rt,number:Ai,"number-format":ja,object:Ai,slice:Jn,step:Qn,string:Ai,"to-boolean":br,"to-color":br,"to-number":br,"to-string":br,var:Yn,within:bn,distance:Tn,"global-state":Go};class Xi{constructor(e,i,o,a){this.name=e,this.type=i,this._evaluate=o,this.args=a}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,i){let o=e[0],a=Xi.definitions[o];if(!a)return i.error(`Unknown expression "${o}". If you wanted a literal array, use ["literal", [...]].`,0);let l=Array.isArray(a)?a[0]:a.type,u=Array.isArray(a)?[[a[1],a[2]]]:a.overloads,p=u.filter((([m])=>!Array.isArray(m)||m.length===e.length-1)),g=null;for(let[m,x]of p){g=new gn(i.registry,Xa,i.path,null,i.scope);let _=[],T=!1;for(let b=1;b{return T=_,Array.isArray(T)?`(${T.map(ht).join(", ")})`:`(${ht(T.type)}...)`;var T})).join(" | "),x=[];for(let _=1;_{i=e?i&&Xa(o):i&&o instanceof dr})),!!i&&Ya(r)&&Ka(r,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function Ya(r){if(r instanceof Xi&&(r.name==="get"&&r.args.length===1||r.name==="feature-state"||r.name==="has"&&r.args.length===1||r.name==="properties"||r.name==="geometry-type"||r.name==="id"||/^filter-/.test(r.name))||r instanceof bn||r instanceof Tn)return!1;let e=!0;return r.eachChild((i=>{e&&!Ya(i)&&(e=!1)})),e}function $o(r){if(r instanceof Xi&&r.name==="feature-state")return!1;let e=!0;return r.eachChild((i=>{e&&!$o(i)&&(e=!1)})),e}function Ka(r,e){if(r instanceof Xi&&e.indexOf(r.name)>=0)return!1;let i=!0;return r.eachChild((o=>{i&&!Ka(o,e)&&(i=!1)})),i}function Qc(r){return{result:"success",value:r}}function oo(r){return{result:"error",value:r}}function ao(r){return r["property-type"]==="data-driven"||r["property-type"]==="cross-faded-data-driven"}function eu(r){return!!r.expression&&r.expression.parameters.indexOf("zoom")>-1}function Ml(r){return!!r.expression&&r.expression.interpolated}function Ke(r){return r instanceof Number?"number":r instanceof String?"string":r instanceof Boolean?"boolean":Array.isArray(r)?"array":r===null?"null":typeof r}function Ja(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)&&Rt(r)===vr}function wh(r){return r}function tu(r,e){let i=r.stops&&typeof r.stops[0][0]=="object",o=i||!(i||r.property!==void 0),a=r.type||(Ml(e)?"exponential":"interval"),l=(function(x){switch(x.type){case"color":return qe.parse;case"padding":return li.parse;case"numberArray":return wt.parse;case"colorArray":return Ve.parse;default:return null}})(e);if(l&&((r=hn({},r)).stops&&(r.stops=r.stops.map((x=>[x[0],l(x[1])]))),r.default=l(r.default?r.default:e.default)),r.colorSpace&&(u=r.colorSpace)!=="rgb"&&u!=="hcl"&&u!=="lab")throw new Error(`Unknown color space: "${r.colorSpace}"`);var u;let p=(function(x){switch(x){case"exponential":return iu;case"interval":return Sh;case"categorical":return Th;case"identity":return Ph;default:throw new Error(`Unknown function type "${x}"`)}})(a),g,m;if(a==="categorical"){g=Object.create(null);for(let x of r.stops)g[x[0]]=x[1];m=typeof r.stops[0][0]}if(i){let x={},_=[];for(let M=0;MM[0])),evaluate:({zoom:M},I)=>iu({stops:T,base:r.base},e,M).evaluate(M,I)}}if(o){let x=a==="exponential"?{name:"exponential",base:r.base!==void 0?r.base:1}:null;return{kind:"camera",interpolationType:x,interpolationFactor:Bt.interpolationFactor.bind(void 0,x),zoomStops:r.stops.map((_=>_[0])),evaluate:({zoom:_})=>p(r,e,_,g,m)}}return{kind:"source",evaluate(x,_){let T=_&&_.properties?_.properties[r.property]:void 0;return T===void 0?Zo(r.default,e.default):p(r,e,T,g,m)}}}function Zo(r,e,i){return r!==void 0?r:e!==void 0?e:i!==void 0?i:void 0}function Th(r,e,i,o,a){return Zo(typeof i===a?o[i]:void 0,r.default,e.default)}function Sh(r,e,i){if(Ke(i)!=="number")return Zo(r.default,e.default);let o=r.stops.length;if(o===1||i<=r.stops[0][0])return r.stops[0][1];if(i>=r.stops[o-1][0])return r.stops[o-1][1];let a=_n(r.stops.map((l=>l[0])),i);return r.stops[a][1]}function iu(r,e,i){let o=r.base!==void 0?r.base:1;if(Ke(i)!=="number")return Zo(r.default,e.default);let a=r.stops.length;if(a===1||i<=r.stops[0][0])return r.stops[0][1];if(i>=r.stops[a-1][0])return r.stops[a-1][1];let l=_n(r.stops.map((x=>x[0])),i),u=(function(x,_,T,b){let M=b-T,I=x-T;return M===0?0:_===1?I/M:(Math.pow(_,I)-1)/(Math.pow(_,M)-1)})(i,o,r.stops[l][0],r.stops[l+1][0]),p=r.stops[l][1],g=r.stops[l+1][1],m=Oi[e.type]||wh;return typeof p.evaluate=="function"?{evaluate(...x){let _=p.evaluate.apply(void 0,x),T=g.evaluate.apply(void 0,x);if(_!==void 0&&T!==void 0)return m(_,T,u,r.colorSpace)}}:m(p,g,u,r.colorSpace)}function Ph(r,e,i){switch(e.type){case"color":i=qe.parse(i);break;case"formatted":i=Ci.fromString(i.toString());break;case"resolvedImage":i=Bi.fromString(i.toString());break;case"padding":i=li.parse(i);break;case"colorArray":i=Ve.parse(i);break;case"numberArray":i=wt.parse(i);break;default:Ke(i)===e.type||e.type==="enum"&&e.values[i]||(i=void 0)}return Zo(i,r.default,e.default)}Xi.register(no,{error:[{kind:"error"},[Ne],(r,[e])=>{throw new mt(e.evaluate(r))}],typeof:[Ne,[Ge],(r,[e])=>ht(Rt(e.evaluate(r)))],"to-rgba":[ni(Me,4),[Fi],(r,[e])=>{let[i,o,a,l]=e.evaluate(r).rgb;return[255*i,255*o,255*a,l]}],rgb:[Fi,[Me,Me,Me],Kc],rgba:[Fi,[Me,Me,Me,Me],Kc],has:{type:Ye,overloads:[[[Ne],(r,[e])=>Jc(e.evaluate(r),r.properties())],[[Ne,vr],(r,[e,i])=>Jc(e.evaluate(r),i.evaluate(r))]]},get:{type:Ge,overloads:[[[Ne],(r,[e])=>Pl(e.evaluate(r),r.properties())],[[Ne,vr],(r,[e,i])=>Pl(e.evaluate(r),i.evaluate(r))]]},"feature-state":[Ge,[Ne],(r,[e])=>Pl(e.evaluate(r),r.featureState||{})],properties:[vr,[],r=>r.properties()],"geometry-type":[Ne,[],r=>r.geometryType()],id:[Ge,[],r=>r.id()],zoom:[Me,[],r=>r.globals.zoom],"heatmap-density":[Me,[],r=>r.globals.heatmapDensity||0],elevation:[Me,[],r=>r.globals.elevation||0],"line-progress":[Me,[],r=>r.globals.lineProgress||0],accumulated:[Ge,[],r=>r.globals.accumulated===void 0?null:r.globals.accumulated],"+":[Me,Sn(Me),(r,e)=>{let i=0;for(let o of e)i+=o.evaluate(r);return i}],"*":[Me,Sn(Me),(r,e)=>{let i=1;for(let o of e)i*=o.evaluate(r);return i}],"-":{type:Me,overloads:[[[Me,Me],(r,[e,i])=>e.evaluate(r)-i.evaluate(r)],[[Me],(r,[e])=>-e.evaluate(r)]]},"/":[Me,[Me,Me],(r,[e,i])=>e.evaluate(r)/i.evaluate(r)],"%":[Me,[Me,Me],(r,[e,i])=>e.evaluate(r)%i.evaluate(r)],ln2:[Me,[],()=>Math.LN2],pi:[Me,[],()=>Math.PI],e:[Me,[],()=>Math.E],"^":[Me,[Me,Me],(r,[e,i])=>Math.pow(e.evaluate(r),i.evaluate(r))],sqrt:[Me,[Me],(r,[e])=>Math.sqrt(e.evaluate(r))],log10:[Me,[Me],(r,[e])=>Math.log(e.evaluate(r))/Math.LN10],ln:[Me,[Me],(r,[e])=>Math.log(e.evaluate(r))],log2:[Me,[Me],(r,[e])=>Math.log(e.evaluate(r))/Math.LN2],sin:[Me,[Me],(r,[e])=>Math.sin(e.evaluate(r))],cos:[Me,[Me],(r,[e])=>Math.cos(e.evaluate(r))],tan:[Me,[Me],(r,[e])=>Math.tan(e.evaluate(r))],asin:[Me,[Me],(r,[e])=>Math.asin(e.evaluate(r))],acos:[Me,[Me],(r,[e])=>Math.acos(e.evaluate(r))],atan:[Me,[Me],(r,[e])=>Math.atan(e.evaluate(r))],min:[Me,Sn(Me),(r,e)=>Math.min(...e.map((i=>i.evaluate(r))))],max:[Me,Sn(Me),(r,e)=>Math.max(...e.map((i=>i.evaluate(r))))],abs:[Me,[Me],(r,[e])=>Math.abs(e.evaluate(r))],round:[Me,[Me],(r,[e])=>{let i=e.evaluate(r);return i<0?-Math.round(-i):Math.round(i)}],floor:[Me,[Me],(r,[e])=>Math.floor(e.evaluate(r))],ceil:[Me,[Me],(r,[e])=>Math.ceil(e.evaluate(r))],"filter-==":[Ye,[Ne,Ge],(r,[e,i])=>r.properties()[e.value]===i.value],"filter-id-==":[Ye,[Ge],(r,[e])=>r.id()===e.value],"filter-type-==":[Ye,[Ne],(r,[e])=>r.geometryType()===e.value],"filter-<":[Ye,[Ne,Ge],(r,[e,i])=>{let o=r.properties()[e.value],a=i.value;return typeof o==typeof a&&o{let i=r.id(),o=e.value;return typeof i==typeof o&&i":[Ye,[Ne,Ge],(r,[e,i])=>{let o=r.properties()[e.value],a=i.value;return typeof o==typeof a&&o>a}],"filter-id->":[Ye,[Ge],(r,[e])=>{let i=r.id(),o=e.value;return typeof i==typeof o&&i>o}],"filter-<=":[Ye,[Ne,Ge],(r,[e,i])=>{let o=r.properties()[e.value],a=i.value;return typeof o==typeof a&&o<=a}],"filter-id-<=":[Ye,[Ge],(r,[e])=>{let i=r.id(),o=e.value;return typeof i==typeof o&&i<=o}],"filter->=":[Ye,[Ne,Ge],(r,[e,i])=>{let o=r.properties()[e.value],a=i.value;return typeof o==typeof a&&o>=a}],"filter-id->=":[Ye,[Ge],(r,[e])=>{let i=r.id(),o=e.value;return typeof i==typeof o&&i>=o}],"filter-has":[Ye,[Ge],(r,[e])=>e.value in r.properties()],"filter-has-id":[Ye,[],r=>r.id()!==null&&r.id()!==void 0],"filter-type-in":[Ye,[ni(Ne)],(r,[e])=>e.value.indexOf(r.geometryType())>=0],"filter-id-in":[Ye,[ni(Ge)],(r,[e])=>e.value.indexOf(r.id())>=0],"filter-in-small":[Ye,[Ne,ni(Ge)],(r,[e,i])=>i.value.indexOf(r.properties()[e.value])>=0],"filter-in-large":[Ye,[Ne,ni(Ge)],(r,[e,i])=>(function(o,a,l,u){for(;l<=u;){let p=l+u>>1;if(a[p]===o)return!0;a[p]>o?u=p-1:l=p+1}return!1})(r.properties()[e.value],i.value,0,i.value.length-1)],all:{type:Ye,overloads:[[[Ye,Ye],(r,[e,i])=>e.evaluate(r)&&i.evaluate(r)],[Sn(Ye),(r,e)=>{for(let i of e)if(!i.evaluate(r))return!1;return!0}]]},any:{type:Ye,overloads:[[[Ye,Ye],(r,[e,i])=>e.evaluate(r)||i.evaluate(r)],[Sn(Ye),(r,e)=>{for(let i of e)if(i.evaluate(r))return!0;return!1}]]},"!":[Ye,[Ye],(r,[e])=>!e.evaluate(r)],"is-supported-script":[Ye,[Ne],(r,[e])=>{let i=r.globals&&r.globals.isSupportedScript;return!i||i(e.evaluate(r))}],upcase:[Ne,[Ne],(r,[e])=>e.evaluate(r).toUpperCase()],downcase:[Ne,[Ne],(r,[e])=>e.evaluate(r).toLowerCase()],concat:[Ne,Sn(Ge),(r,e)=>e.map((i=>fn(i.evaluate(r)))).join("")],split:[ni(Ne),[Ne,Ne],(r,[e,i])=>e.evaluate(r).split(i.evaluate(r))],join:[Ne,[ni(Ne),Ne],(r,[e,i])=>e.evaluate(r).join(i.evaluate(r))],"resolved-locale":[Ne,[Do],(r,[e])=>e.evaluate(r).resolvedLocale()]});class qo{constructor(e,i,o){this.expression=e,this._warningHistory={},this._evaluator=new ul,this._defaultValue=i?(function(a){if(a.type==="color"&&Ja(a.default))return new qe(0,0,0,0);switch(a.type){case"color":return qe.parse(a.default)||null;case"padding":return li.parse(a.default)||null;case"numberArray":return wt.parse(a.default)||null;case"colorArray":return Ve.parse(a.default)||null;case"variableAnchorOffsetCollection":return _i.parse(a.default)||null;case"projectionDefinition":return yi.parse(a.default)||null;default:return a.default===void 0?null:a.default}})(i):null,this._enumValues=i&&i.type==="enum"?i.values:null,this._globalState=o}evaluateWithoutErrorHandling(e,i,o,a,l,u){return this._globalState&&(e=lo(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=i,this._evaluator.featureState=o,this._evaluator.canonical=a,this._evaluator.availableImages=l||null,this._evaluator.formattedSection=u,this.expression.evaluate(this._evaluator)}evaluate(e,i,o,a,l,u){this._globalState&&(e=lo(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=i||null,this._evaluator.featureState=o||null,this._evaluator.canonical=a,this._evaluator.availableImages=l||null,this._evaluator.formattedSection=u||null;try{let p=this.expression.evaluate(this._evaluator);if(p==null||typeof p=="number"&&p!=p)return this._defaultValue;if(this._enumValues&&!(p in this._enumValues))throw new mt(`Expected value to be one of ${Object.keys(this._enumValues).map((g=>JSON.stringify(g))).join(", ")}, but found ${JSON.stringify(p)} instead.`);return p}catch(p){return this._warningHistory[p.message]||(this._warningHistory[p.message]=!0,typeof console<"u"&&console.warn(p.message)),this._defaultValue}}}function Qa(r){return Array.isArray(r)&&r.length>0&&typeof r[0]=="string"&&r[0]in no}function Wo(r,e,i){let o=new gn(no,Xa,[],e?(function(l){let u={color:Fi,string:Ne,number:Me,enum:Ne,boolean:Ye,formatted:zo,padding:Da,numberArray:ko,colorArray:$n,projectionDefinition:Aa,resolvedImage:Zn,variableAnchorOffsetCollection:Ro};return l.type==="array"?ni(u[l.value]||Ge,l.length):u[l.type]})(e):void 0),a=o.parse(r,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return a?Qc(new qo(a,e,i)):oo(o.errors)}class es{constructor(e,i,o){this.kind=e,this._styleExpression=i,this.isStateDependent=e!=="constant"&&!$o(i.expression),this.globalStateRefs=so(i.expression),this._globalState=o}evaluateWithoutErrorHandling(e,i,o,a,l,u){return this._globalState&&(e=lo(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,i,o,a,l,u)}evaluate(e,i,o,a,l,u){return this._globalState&&(e=lo(e,this._globalState)),this._styleExpression.evaluate(e,i,o,a,l,u)}}class ts{constructor(e,i,o,a,l){this.kind=e,this.zoomStops=o,this._styleExpression=i,this.isStateDependent=e!=="camera"&&!$o(i.expression),this.globalStateRefs=so(i.expression),this.interpolationType=a,this._globalState=l}evaluateWithoutErrorHandling(e,i,o,a,l,u){return this._globalState&&(e=lo(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,i,o,a,l,u)}evaluate(e,i,o,a,l,u){return this._globalState&&(e=lo(e,this._globalState)),this._styleExpression.evaluate(e,i,o,a,l,u)}interpolationFactor(e,i,o){return this.interpolationType?Bt.interpolationFactor(this.interpolationType,e,i,o):0}}function ru(r,e,i){let o=Wo(r,e,i);if(o.result==="error")return o;let a=o.value.expression,l=Ya(a);if(!l&&!ao(e))return oo([new ri("","data expressions not supported")]);let u=Ka(a,["zoom"]);if(!u&&!eu(e))return oo([new ri("","zoom expressions not supported")]);let p=Pn(a);return p||u?p instanceof ri?oo([p]):p instanceof Bt&&!Ml(e)?oo([new ri("",'"interpolate" expressions cannot be used with this property')]):Qc(p?new ts(l?"camera":"composite",o.value,p.labels,p instanceof Bt?p.interpolation:void 0,i):new es(l?"constant":"source",o.value,i)):oo([new ri("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class is{constructor(e,i){this._parameters=e,this._specification=i,hn(this,tu(this._parameters,this._specification))}static deserialize(e){return new is(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function Pn(r){let e=null;if(r instanceof gt)e=Pn(r.result);else if(r instanceof Vo){for(let i of r.args)if(e=Pn(i),e)break}else(r instanceof Qn||r instanceof Bt)&&r.input instanceof Xi&&r.input.name==="zoom"&&(e=r);return e instanceof ri||r.eachChild((i=>{let o=Pn(i);o instanceof ri?e=o:!e&&o?e=new ri("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&o&&e!==o&&(e=new ri("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),e}function so(r,e=new Set){return r instanceof Go&&e.add(r.key),r.eachChild((i=>{so(i,e)})),e}function lo(r,e){let{zoom:i,heatmapDensity:o,elevation:a,lineProgress:l,isSupportedScript:u,accumulated:p}=r??{};return{zoom:i,heatmapDensity:o,elevation:a,lineProgress:l,isSupportedScript:u,accumulated:p,globalState:e}}function Il(r){if(r===!0||r===!1)return!0;if(!Array.isArray(r)||r.length===0)return!1;switch(r[0]){case"has":return r.length>=2&&r[1]!=="$id"&&r[1]!=="$type";case"in":return r.length>=3&&(typeof r[1]!="string"||Array.isArray(r[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return r.length!==3||Array.isArray(r[1])||Array.isArray(r[2]);case"any":case"all":for(let e of r.slice(1))if(!Il(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}let Mh={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Ho(r,e){if(r==null)return{filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};Il(r)||(r=Xo(r));let i=Wo(r,Mh,e);if(i.result==="error")throw new Error(i.value.map((o=>`${o.key}: ${o.message}`)).join(", "));return{filter:(o,a,l)=>i.value.evaluate(o,a,{},l),needGeometry:El(r),getGlobalStateRefs:()=>so(i.value.expression)}}function Ih(r,e){return re?1:0}function El(r){if(!Array.isArray(r))return!1;if(r[0]==="within"||r[0]==="distance")return!0;for(let e=1;e"||e==="<="||e===">="?Cl(r[1],r[2],e):e==="any"?(i=r.slice(1),["any"].concat(i.map(Xo))):e==="all"?["all"].concat(r.slice(1).map(Xo)):e==="none"?["all"].concat(r.slice(1).map(Xo).map(Yo)):e==="in"?nu(r[1],r.slice(2)):e==="!in"?Yo(nu(r[1],r.slice(2))):e==="has"?Al(r[1]):e!=="!has"||Yo(Al(r[1]));var i}function Cl(r,e,i){switch(r){case"$type":return[`filter-type-${i}`,e];case"$id":return[`filter-id-${i}`,e];default:return[`filter-${i}`,r,e]}}function nu(r,e){if(e.length===0)return!1;switch(r){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((i=>typeof i!=typeof e[0]))?["filter-in-large",r,["literal",e.sort(Ih)]]:["filter-in-small",r,["literal",e]]}}function Al(r){switch(r){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",r]}}function Yo(r){return["!",r]}function rs(r){let e=typeof r;if(e==="number"||e==="boolean"||e==="string"||r==null)return JSON.stringify(r);if(Array.isArray(r)){let a="[";for(let l of r)a+=`${rs(l)},`;return`${a}]`}let i=Object.keys(r).sort(),o="{";for(let a=0;ao.maximum?[new be(e,i,`${i} is greater than the maximum value ${o.maximum}`)]:[]}function os(r){let e=r.valueSpec,i=Lt(r.value.type),o,a,l,u={},p=i!=="categorical"&&r.value.property===void 0,g=!p,m=Ke(r.value.stops)==="array"&&Ke(r.value.stops[0])==="array"&&Ke(r.value.stops[0][0])==="object",x=Di({key:r.key,value:r.value,valueSpec:r.styleSpec.function,validateSpec:r.validateSpec,style:r.style,styleSpec:r.styleSpec,objectElementValidators:{stops:function(b){if(i==="identity")return[new be(b.key,b.value,'identity function may not have a "stops" property')];let M=[],I=b.value;return M=M.concat(ns({key:b.key,value:I,valueSpec:b.valueSpec,validateSpec:b.validateSpec,style:b.style,styleSpec:b.styleSpec,arrayElementValidator:_})),Ke(I)==="array"&&I.length===0&&M.push(new be(b.key,I,"array must have at least one stop")),M},default:function(b){return b.validateSpec({key:b.key,value:b.value,valueSpec:e,validateSpec:b.validateSpec,style:b.style,styleSpec:b.styleSpec})}}});return i==="identity"&&p&&x.push(new be(r.key,r.value,'missing required property "property"')),i==="identity"||r.value.stops||x.push(new be(r.key,r.value,'missing required property "stops"')),i==="exponential"&&r.valueSpec.expression&&!Ml(r.valueSpec)&&x.push(new be(r.key,r.value,"exponential functions not supported")),r.styleSpec.$version>=8&&(g&&!ao(r.valueSpec)?x.push(new be(r.key,r.value,"property functions not supported")):p&&!eu(r.valueSpec)&&x.push(new be(r.key,r.value,"zoom functions not supported"))),i!=="categorical"&&!m||r.value.property!==void 0||x.push(new be(r.key,r.value,'"property" property is required')),x;function _(b){let M=[],I=b.value,A=b.key;if(Ke(I)!=="array")return[new be(A,I,`array expected, ${Ke(I)} found`)];if(I.length!==2)return[new be(A,I,`array length 2 expected, length ${I.length} found`)];if(m){if(Ke(I[0])!=="object")return[new be(A,I,`object expected, ${Ke(I[0])} found`)];if(I[0].zoom===void 0)return[new be(A,I,"object stop key must have zoom")];if(I[0].value===void 0)return[new be(A,I,"object stop key must have value")];if(l&&l>Lt(I[0].zoom))return[new be(A,I[0].zoom,"stop zoom values must appear in ascending order")];Lt(I[0].zoom)!==l&&(l=Lt(I[0].zoom),a=void 0,u={}),M=M.concat(Di({key:`${A}[0]`,value:I[0],valueSpec:{zoom:{}},validateSpec:b.validateSpec,style:b.style,styleSpec:b.styleSpec,objectElementValidators:{zoom:co,value:T}}))}else M=M.concat(T({key:`${A}[0]`,value:I[0],validateSpec:b.validateSpec,style:b.style,styleSpec:b.styleSpec},I));return Qa(Mn(I[1]))?M.concat([new be(`${A}[1]`,I[1],"expressions are not allowed in function stops.")]):M.concat(b.validateSpec({key:`${A}[1]`,value:I[1],valueSpec:e,validateSpec:b.validateSpec,style:b.style,styleSpec:b.styleSpec}))}function T(b,M){let I=Ke(b.value),A=Lt(b.value),D=b.value!==null?b.value:M;if(o){if(I!==o)return[new be(b.key,D,`${I} stop domain type must match previous stop domain type ${o}`)]}else o=I;if(I!=="number"&&I!=="string"&&I!=="boolean")return[new be(b.key,D,"stop domain value must be a number, string, or boolean")];if(I!=="number"&&i!=="categorical"){let L=`number expected, ${I} found`;return ao(e)&&i===void 0&&(L+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new be(b.key,D,L)]}return i!=="categorical"||I!=="number"||isFinite(A)&&Math.floor(A)===A?i!=="categorical"&&I==="number"&&a!==void 0&&Anew be(`${r.key}${o.key}`,r.value,o.message)));let i=e.value.expression||e.value._styleExpression.expression;if(r.expressionContext==="property"&&r.propertyKey==="text-font"&&!i.outputDefined())return[new be(r.key,r.value,`Invalid data expression for "${r.propertyKey}". Output values must be contained as literals within the expression.`)];if(r.expressionContext==="property"&&r.propertyType==="layout"&&!$o(i))return[new be(r.key,r.value,'"feature-state" data expressions are not supported with layout properties.')];if(r.expressionContext==="filter"&&!$o(i))return[new be(r.key,r.value,'"feature-state" data expressions are not supported with filters.')];if(r.expressionContext&&r.expressionContext.indexOf("cluster")===0){if(!Ka(i,["zoom","feature-state"]))return[new be(r.key,r.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(r.expressionContext==="cluster-initial"&&!Ya(i))return[new be(r.key,r.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Ko(r){let e=r.key,i=r.value,o=Ke(i);return o!=="string"?[new be(e,i,`color expected, ${o} found`)]:qe.parse(String(i))?[]:[new be(e,i,`color expected, "${i}" found`)]}function In(r){let e=r.key,i=r.value,o=r.valueSpec,a=[];return Array.isArray(o.values)?o.values.indexOf(Lt(i))===-1&&a.push(new be(e,i,`expected one of [${o.values.join(", ")}], ${JSON.stringify(i)} found`)):Object.keys(o.values).indexOf(Lt(i))===-1&&a.push(new be(e,i,`expected one of [${Object.keys(o.values).join(", ")}], ${JSON.stringify(i)} found`)),a}function uo(r){return Il(Mn(r.value))?$r(hn({},r,{expressionContext:"filter",valueSpec:{value:"boolean"}})):au(r)}function au(r){let e=r.value,i=r.key;if(Ke(e)!=="array")return[new be(i,e,`array expected, ${Ke(e)} found`)];let o=r.styleSpec,a,l=[];if(e.length<1)return[new be(i,e,"filter array must have at least 1 element")];switch(l=l.concat(In({key:`${i}[0]`,value:e[0],valueSpec:o.filter_operator,style:r.style,styleSpec:r.styleSpec})),Lt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Lt(e[1])==="$type"&&l.push(new be(i,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&l.push(new be(i,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(a=Ke(e[1]),a!=="string"&&l.push(new be(`${i}[1]`,e[1],`string expected, ${a} found`)));for(let u=2;u{_ in a&&o.push(new be(l,a[_],`"${_}" is prohibited for ref layers`))})),u.layers.forEach((_=>{Lt(_.id)===m&&(x=_)})),x?x.ref?o.push(new be(l,a.ref,"ref cannot reference another ref layer")):g=Lt(x.type):o.push(new be(l,a.ref,`ref layer "${m}" not found`))}else if(g!=="background")if(a.source){let x=u.sources&&u.sources[a.source],_=x&&Lt(x.type);x?_==="vector"&&g==="raster"?o.push(new be(l,a.source,`layer "${a.id}" requires a raster source`)):_!=="raster-dem"&&g==="hillshade"||_!=="raster-dem"&&g==="color-relief"?o.push(new be(l,a.source,`layer "${a.id}" requires a raster-dem source`)):_==="raster"&&g!=="raster"?o.push(new be(l,a.source,`layer "${a.id}" requires a vector source`)):_!=="vector"||a["source-layer"]?_==="raster-dem"&&g!=="hillshade"&&g!=="color-relief"?o.push(new be(l,a.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):g!=="line"||!a.paint||!a.paint["line-gradient"]||_==="geojson"&&x.lineMetrics||o.push(new be(l,a,`layer "${a.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):o.push(new be(l,a,`layer "${a.id}" must specify a "source-layer"`)):o.push(new be(l,a.source,`source "${a.source}" not found`))}else o.push(new be(l,a,'missing required property "source"'));return g==="raster"&&(!((e=a.paint)===null||e===void 0)&&e.resampling)&&(!((i=a.paint)===null||i===void 0)&&i["raster-resampling"])&&o.push(new be(l,a.paint,`layer "${a.id}" redundantly specifies "resampling" and "raster-resampling" paint properties, but only one is allowed. It is advised to use "resampling".`)),o=o.concat(Di({key:l,value:a,valueSpec:p.layer,style:r.style,styleSpec:r.styleSpec,validateSpec:r.validateSpec,objectElementValidators:{"*":()=>[],type:()=>r.validateSpec({key:`${l}.type`,value:a.type,valueSpec:p.layer.type,style:r.style,styleSpec:r.styleSpec,validateSpec:r.validateSpec,object:a,objectKey:"type"}),filter:uo,layout:x=>Di({layer:a,key:x.key,value:x.value,style:x.style,styleSpec:x.styleSpec,validateSpec:x.validateSpec,objectElementValidators:{"*":_=>cu(hn({layerType:g},_))}}),paint:x=>Di({layer:a,key:x.key,value:x.value,style:x.style,styleSpec:x.styleSpec,validateSpec:x.validateSpec,objectElementValidators:{"*":_=>lu(hn({layerType:g},_))}})}})),o}function Zr(r){let e=r.value,i=r.key,o=Ke(e);return o!=="string"?[new be(i,e,`string expected, ${o} found`)]:[]}let Dl={promoteId:function({key:r,value:e}){if(Ke(e)==="string")return Zr({key:r,value:e});{let i=[];for(let o in e)i.push(...Zr({key:`${r}.${o}`,value:e[o]}));return i}}};function zl(r){let e=r.value,i=r.key,o=r.styleSpec,a=r.style,l=r.validateSpec;if(!e.type)return[new be(i,e,'"type" is required')];let u=Lt(e.type),p;switch(u){case"vector":case"raster":return p=Di({key:i,value:e,valueSpec:o[`source_${u.replace("-","_")}`],style:r.style,styleSpec:o,objectElementValidators:Dl,validateSpec:l}),p;case"raster-dem":return p=(function(g){var m;let x=(m=g.sourceName)!==null&&m!==void 0?m:"",_=g.value,T=g.styleSpec,b=T.source_raster_dem,M=g.style,I=[],A=Ke(_);if(_===void 0)return I;if(A!=="object")return I.push(new be("source_raster_dem",_,`object expected, ${A} found`)),I;let D=Lt(_.encoding)==="custom",L=["redFactor","greenFactor","blueFactor","baseShift"],R=g.value.encoding?`"${g.value.encoding}"`:"Default";for(let F in _)!D&&L.includes(F)?I.push(new be(F,_[F],`In "${x}": "${F}" is only valid when "encoding" is set to "custom". ${R} encoding found`)):b[F]?I=I.concat(g.validateSpec({key:F,value:_[F],valueSpec:b[F],validateSpec:g.validateSpec,style:M,styleSpec:T})):I.push(new be(F,_[F],`unknown property "${F}"`));return I})({sourceName:i,value:e,style:r.style,styleSpec:o,validateSpec:l}),p;case"geojson":if(p=Di({key:i,value:e,valueSpec:o.source_geojson,style:a,styleSpec:o,validateSpec:l,objectElementValidators:Dl}),e.cluster)for(let g in e.clusterProperties){let[m,x]=e.clusterProperties[g],_=typeof m=="string"?[m,["accumulated"],["get",g]]:m;p.push(...$r({key:`${i}.${g}.map`,value:x,expressionContext:"cluster-map"})),p.push(...$r({key:`${i}.${g}.reduce`,value:_,expressionContext:"cluster-reduce"}))}return p;case"video":return Di({key:i,value:e,valueSpec:o.source_video,style:a,validateSpec:l,styleSpec:o});case"image":return Di({key:i,value:e,valueSpec:o.source_image,style:a,validateSpec:l,styleSpec:o});case"canvas":return[new be(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return In({key:`${i}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function Jo(r){let e=r.value,i=r.styleSpec,o=i.light,a=r.style,l=[],u=Ke(e);if(e===void 0)return l;if(u!=="object")return l=l.concat([new be("light",e,`object expected, ${u} found`)]),l;for(let p in e){let g=p.match(/^(.*)-transition$/);l=l.concat(g&&o[g[1]]&&o[g[1]].transition?r.validateSpec({key:p,value:e[p],valueSpec:i.transition,validateSpec:r.validateSpec,style:a,styleSpec:i}):o[p]?r.validateSpec({key:p,value:e[p],valueSpec:o[p],validateSpec:r.validateSpec,style:a,styleSpec:i}):[new be(p,e[p],`unknown property "${p}"`)])}return l}function hu(r){let e=r.value,i=r.styleSpec,o=i.sky,a=r.style,l=Ke(e);if(e===void 0)return[];if(l!=="object")return[new be("sky",e,`object expected, ${l} found`)];let u=[];for(let p in e)u=u.concat(o[p]?r.validateSpec({key:p,value:e[p],valueSpec:o[p],style:a,styleSpec:i}):[new be(p,e[p],`unknown property "${p}"`)]);return u}function kl(r){let e=r.value,i=r.styleSpec,o=i.terrain,a=r.style,l=[],u=Ke(e);if(e===void 0)return l;if(u!=="object")return l=l.concat([new be("terrain",e,`object expected, ${u} found`)]),l;for(let p in e)l=l.concat(o[p]?r.validateSpec({key:p,value:e[p],valueSpec:o[p],validateSpec:r.validateSpec,style:a,styleSpec:i}):[new be(p,e[p],`unknown property "${p}"`)]);return l}function Rl(r){let e=[],i=r.value,o=r.key;if(Array.isArray(i)){let a=[],l=[];for(let u in i)i[u].id&&a.includes(i[u].id)&&e.push(new be(o,i,`all the sprites' ids must be unique, but ${i[u].id} is duplicated`)),a.push(i[u].id),i[u].url&&l.includes(i[u].url)&&e.push(new be(o,i,`all the sprites' URLs must be unique, but ${i[u].url} is duplicated`)),l.push(i[u].url),e=e.concat(Di({key:`${o}[${u}]`,value:i[u],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:r.validateSpec}));return e}return Zr({key:o,value:i})}function du(r){return!!r&&r.constructor===Object}function Qo(r){return du(r.value)?[]:[new be(r.key,r.value,`object expected, ${Ke(r.value)} found`)]}let Ll={"*":()=>[],array:ns,boolean:function(r){let e=r.value,i=r.key,o=Ke(e);return o!=="boolean"?[new be(i,e,`boolean expected, ${o} found`)]:[]},number:co,color:Ko,constants:ou,enum:In,filter:uo,function:os,layer:uu,object:Di,source:zl,light:Jo,sky:hu,terrain:kl,projection:function(r){let e=r.value,i=r.styleSpec,o=i.projection,a=r.style,l=Ke(e);if(e===void 0)return[];if(l!=="object")return[new be("projection",e,`object expected, ${l} found`)];let u=[];for(let p in e)u=u.concat(o[p]?r.validateSpec({key:p,value:e[p],valueSpec:o[p],style:a,styleSpec:i}):[new be(p,e[p],`unknown property "${p}"`)]);return u},projectionDefinition:function(r){let e=r.key,i=r.value;i=i instanceof String?i.valueOf():i;let o=Ke(i);return o!=="array"||(function(a){return Array.isArray(a)&&a.length===3&&typeof a[0]=="string"&&typeof a[1]=="string"&&typeof a[2]=="number"})(i)||(function(a){return!!["interpolate","step","literal"].includes(a[0])})(i)?["array","string"].includes(o)?[]:[new be(e,i,`projection expected, invalid type "${o}" found`)]:[new be(e,i,`projection expected, invalid array ${JSON.stringify(i)} found`)]},string:Zr,formatted:function(r){return Zr(r).length===0?[]:$r(r)},resolvedImage:function(r){return Zr(r).length===0?[]:$r(r)},padding:function(r){let e=r.key,i=r.value;if(Ke(i)==="array"){if(i.length<1||i.length>4)return[new be(e,i,`padding requires 1 to 4 values; ${i.length} values found`)];let o={type:"number"},a=[];for(let l=0;l[]}})),r.constants&&(i=i.concat(ou({key:"constants",value:r.constants}))),pu(i)}function sr(r){return function(e){return r(Object.assign({},e,{validateSpec:ea}))}}function pu(r){return[].concat(r).sort(((e,i)=>e.line-i.line))}function lr(r){return function(...e){return pu(r.apply(this,e))}}Yi.source=lr(sr(zl)),Yi.sprite=lr(sr(Rl)),Yi.glyphs=lr(sr(ho)),Yi.light=lr(sr(Jo)),Yi.sky=lr(sr(hu)),Yi.terrain=lr(sr(kl)),Yi.state=lr(sr(Qo)),Yi.layer=lr(sr(uu)),Yi.filter=lr(sr(uo)),Yi.paintProperty=lr(sr(lu)),Yi.layoutProperty=lr(sr(cu));let Ch={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class Ah{constructor(e,i){this._globalState=i,this.setValue(e)}evaluate(){var e;return(e=this._literalValue)!==null&&e!==void 0?e:this._compiledValue.evaluate({})}setValue(e){if(e==null||e==="visible"||e==="none")return this._literalValue=e==="none"?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);let i=Wo(e,Ch,this._globalState);if(i.result==="error")throw this._literalValue="visible",this._compiledValue=void 0,new Error(i.value.map((o=>`${o.key}: ${o.message}`)).join(", "));this._literalValue=void 0,this._compiledValue=i.value,this._globalStateRefs=so(i.value.expression)}getGlobalStateRefs(){return this._globalStateRefs}}let ta=he,fr=Yi,ji=fr.light,ia=fr.sky,fu=fr.paintProperty,Dh=fr.layoutProperty;function mu(r,e){let i=!1;if(e?.length)for(let o of e)r.fire(new Gn(new Error(o.message))),i=!0;return i}class Tr{constructor(e,i,o){let a=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;let u=new Int32Array(this.arrayBuffer);e=u[0],this.d=(i=u[1])+2*(o=u[2]);for(let g=0;g=_[b+0]&&a>=_[b+1])?(p[T]=!0,u.push(x[T])):p[T]=!1}}}_forEachCell(e,i,o,a,l,u,p,g){let m=this._convertToCellCoord(e),x=this._convertToCellCoord(i),_=this._convertToCellCoord(o),T=this._convertToCellCoord(a);for(let b=m;b<=_;b++)for(let M=x;M<=T;M++){let I=this.d*M+b;if((!g||g(this._convertFromCellCoord(b),this._convertFromCellCoord(M),this._convertFromCellCoord(b+1),this._convertFromCellCoord(M+1)))&&l.call(this,e,i,o,a,I,u,p,g))return}}_convertFromCellCoord(e){return(e-this.padding)/this.scale}_convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let e=this.cells,i=3+this.cells.length+1+1,o=0;for(let u of this.cells)o+=u.length;let a=new Int32Array(i+o+this.keys.length+this.bboxes.length);a[0]=this.extent,a[1]=this.n,a[2]=this.padding;let l=i;for(let u=0;uo?(this.lastIntegerZoom=o+1,this.lastIntegerZoomTime=i):this.lastFloorZoom{try{return new RegExp(`\\p{sc=${i}}`,"u").source}catch{return null}})).filter((i=>i));return new RegExp(e.join("|"),"u")}let Ol=xu(["Arab","Dupl","Mong","Ougr","Syrc"]);function ss(r){return!Ol.test(String.fromCodePoint(r))}function Vl(r){return!(En(r)||(e=r,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(e))));var e}let vu=xu(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function jl(r){return vu.test(String.fromCodePoint(r))}function bu(r,e){return!(!e&&jl(r)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(r)))}function Nl(r){for(let e of r)if(jl(e.codePointAt(0)))return!0;return!1}let Pr=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{}}setState(r){this.pluginStatus=r.pluginStatus,this.pluginURL=r.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(r){if(Pr.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=r.applyArabicShaping,this.processBidirectionalText=r.processBidirectionalText,this.processStyledBidirectionalText=r.processStyledBidirectionalText,this.loadScriptResolve()}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getRTLTextPluginStatus(){return this.pluginStatus}syncState(r,e){return h(this,void 0,void 0,(function*(){if(this.isParsed())return this.getState();if(r.pluginStatus!=="loading")return this.setState(r),r;let i=r.pluginURL,o=new Promise((l=>{this.loadScriptResolve=l}));e(i);let a=new Promise((l=>setTimeout((()=>l()),this.TIMEOUT)));if(yield Promise.race([o,a]),this.isParsed()){let l={pluginStatus:"loaded",pluginURL:i};return this.setState(l),l}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${i}`)}))}};class _t{constructor(e,i){this.isSupportedScript=wu,this.zoom=e,i?(this.now=i.now||0,this.fadeDuration=i.fadeDuration||0,this.zoomHistory=i.zoomHistory||new Fl,this.transition=i.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Fl,this.transition={})}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let e=this.zoom,i=e-Math.floor(e),o=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:i+(1-i)*o}:{fromScale:.5,toScale:1,t:1-(1-o)*i}}}function wu(r){return(function(e,i){for(let o of e)if(!bu(o.codePointAt(0),i))return!1;return!0})(r,Pr.getRTLTextPluginStatus()==="loaded")}let ls="-transition";class oa{constructor(e,i,o){this.property=e,this.value=i,this.expression=(function(a,l,u){if(Ja(a))return new is(a,l);if(Qa(a)){let p=ru(a,l,u);if(p.result==="error")throw new Error(p.value.map((g=>`${g.key}: ${g.message}`)).join(", "));return p.value}{let p=a;return l.type==="color"&&typeof a=="string"?p=qe.parse(a):l.type!=="padding"||typeof a!="number"&&!Array.isArray(a)?l.type!=="numberArray"||typeof a!="number"&&!Array.isArray(a)?l.type!=="colorArray"||typeof a!="string"&&!Array.isArray(a)?l.type==="variableAnchorOffsetCollection"&&Array.isArray(a)?p=_i.parse(a):l.type==="projectionDefinition"&&typeof a=="string"&&(p=yi.parse(a)):p=Ve.parse(a):p=wt.parse(a):p=li.parse(a),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>p}}})(i===void 0?e.specification.default:i,e.specification,o)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(e,i,o){return this.property.possiblyEvaluate(this,e,i,o)}}class Ul{constructor(e,i){this.property=e,this.value=new oa(e,void 0,i)}transitioned(e,i){return new $l(this.property,this.value,i,Wi({},e.transition,this.transition),e.now)}untransitioned(){return new $l(this.property,this.value,null,{},0)}}class Gl{constructor(e,i){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._globalState=i}hasProperty(e){return e in this._properties.defaultTransitionablePropertyValues}getValue(e){return Oe(this._values[e].value.value)}setValue(e,i){Object.hasOwn(this._values,e)||(this._values[e]=new Ul(this._values[e].property,this._globalState)),this._values[e].value=new oa(this._values[e].property,i===null?void 0:Oe(i),this._globalState)}getTransition(e){return Oe(this._values[e].transition)}setTransition(e,i){Object.hasOwn(this._values,e)||(this._values[e]=new Ul(this._values[e].property,this._globalState)),this._values[e].transition=Oe(i)||void 0}serialize(){let e={};for(let i of Object.keys(this._values)){let o=this.getValue(i);o!==void 0&&(e[i]=o);let a=this.getTransition(i);a!==void 0&&(e[`${i}${ls}`]=a)}return e}transitioned(e,i){let o=new Tu(this._properties);for(let a of Object.keys(this._values))o._values[a]=this._values[a].transitioned(e,i._values[a]);return o}untransitioned(){let e=new Tu(this._properties);for(let i of Object.keys(this._values))e._values[i]=this._values[i].untransitioned();return e}}class $l{constructor(e,i,o,a,l){this.property=e,this.value=i,this.begin=l+a.delay||0,this.end=this.begin+a.duration||0,e.specification.transition&&(a.delay||a.duration)&&(this.prior=o)}possiblyEvaluate(e,i,o){let a=e.now||0,l=this.value.possiblyEvaluate(e,i,o),u=this.prior;if(u){if(a>this.end)return this.prior=null,l;if(this.value.isDataDriven())return this.prior=null,l;if(aa.zoomHistory.lastIntegerZoom?{from:e,to:i}:{from:o,to:i}}interpolate(e){return e}}class Su{constructor(e){this.specification=e}possiblyEvaluate(e,i,o,a){if(e.value!==void 0){if(e.expression.kind==="constant"){let l=e.expression.evaluate(i,null,{},o,a);return this._calculate(l,l,l,i)}return this._calculate(e.expression.evaluate(new _t(Math.floor(i.zoom-1),i)),e.expression.evaluate(new _t(Math.floor(i.zoom),i)),e.expression.evaluate(new _t(Math.floor(i.zoom+1),i)),i)}}_calculate(e,i,o,a){return a.zoom>a.zoomHistory.lastIntegerZoom?{from:e,to:i}:{from:o,to:i}}interpolate(e){return e}}class po{constructor(e){this.specification=e}possiblyEvaluate(e,i,o,a){return!!e.expression.evaluate(i,null,{},o,a)}interpolate(){return!1}}class xi{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let i in e){let o=e[i];o.specification.overridable&&this.overridableProperties.push(i);let a=this.defaultPropertyValues[i]=new oa(o,void 0,void 0),l=this.defaultTransitionablePropertyValues[i]=new Ul(o,void 0);this.defaultTransitioningPropertyValues[i]=l.untransitioned(),this.defaultPossiblyEvaluatedValues[i]=a.possiblyEvaluate({})}}}Ee("DataDrivenProperty",Re),Ee("DataConstantProperty",De),Ee("CrossFadedDataDrivenProperty",qr),Ee("CrossFadedProperty",Su),Ee("ColorRampProperty",po);let Pu=" is a PAINT property not a LAYOUT property. Use get/setPaintProperty instead?",cs=" is a LAYOUT property not a PAINT property. Use get/setLayoutProperty instead?";class Ki extends Ea{constructor(e,i,o){if(super(),this.id=e.id,this.type=e.type,this._globalState=o,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},this._visibilityExpression=(function(a,l){return new Ah(a,l)})(this.visibility,o),e.type!=="custom"&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!=="background"&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter,this._featureFilter=Ho(e.filter,o)),i.layout&&(this._unevaluatedLayout=new kh(i.layout,o)),i.paint)){this._transitionablePaint=new Gl(i.paint,o);for(let a in e.paint)this.setPaintProperty(a,e.paint[a],{validate:!1});for(let a in e.layout)this.setLayoutProperty(a,e.layout[a],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new aa(i.paint)}}setFilter(e){this.filter=e,this._featureFilter=Ho(e,this._globalState)}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){var i;if(e==="visibility")return this.visibility;if(!((i=this._transitionablePaint)===null||i===void 0)&&i.hasProperty(e))throw new Error(e+Pu);if(!this._unevaluatedLayout)throw new Error(`Cannot get layout property "${e}" on layer type "${this.type}" which has no layout properties.`);return this._unevaluatedLayout.getValue(e)}getLayoutAffectingGlobalStateRefs(){let e=new Set;for(let i of this._visibilityExpression.getGlobalStateRefs())e.add(i);if(this._unevaluatedLayout)for(let i in this._unevaluatedLayout._values){let o=this._unevaluatedLayout._values[i];for(let a of o.getGlobalStateRefs())e.add(a)}for(let i of this._featureFilter.getGlobalStateRefs())e.add(i);return e}getPaintAffectingGlobalStateRefs(){var e;let i=new globalThis.Map;if(this._transitionablePaint)for(let o in this._transitionablePaint._values){let a=this._transitionablePaint._values[o].value;for(let l of a.getGlobalStateRefs()){let u=(e=i.get(l))!==null&&e!==void 0?e:[];u.push({name:o,value:a.value}),i.set(l,u)}}return i}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(e,i,o={}){var a;if(e==="visibility")return this.visibility=i,this._visibilityExpression.setValue(i),void this.recalculateVisibility();!((a=this._transitionablePaint)===null||a===void 0)&&a.hasProperty(e)?this.fire(new Gn(new Error(e+Pu))):i!=null&&this._validate(Dh,`layers.${this.id}.layout.${e}`,e,i,o)||this._unevaluatedLayout.setValue(e,i)}getPaintProperty(e){var i,o;if(e.endsWith(ls)){let a=e.slice(0,-11);if(a==="visibility"||!((i=this._unevaluatedLayout)===null||i===void 0)&&i.hasProperty(a))throw new Error(e+cs);return this._transitionablePaint.getTransition(a)}if(e==="visibility"||!((o=this._unevaluatedLayout)===null||o===void 0)&&o.hasProperty(e))throw new Error(e+cs);return this._transitionablePaint.getValue(e)}setPaintProperty(e,i,o={}){var a;if(e==="visibility"||!((a=this._unevaluatedLayout)===null||a===void 0)&&a.hasProperty(e))return this.fire(new Gn(new Error(e+cs))),!1;if(i!=null&&this._validate(fu,`layers.${this.id}.paint.${e}`,e,i,o))return!1;if(e.endsWith(ls))return this._transitionablePaint.setTransition(e.slice(0,-11),i||void 0),!1;{let l=this._transitionablePaint._values[e],u=l.property.specification["property-type"]==="cross-faded-data-driven",p=l.value.isDataDriven(),g=l.value;this._transitionablePaint.setValue(e,i),this._handleSpecialPaintPropertyUpdate(e);let m=this._transitionablePaint._values[e].value;return m.isDataDriven()||p||u||this._handleOverridablePaintPropertyUpdate(e,g,m)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,i,o){return!1}isHidden(e=this.minzoom,i=!1){return!!(this.minzoom&&e<(i?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&e>=this.maxzoom)||this._evaluatedVisibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate()}recalculate(e,i){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,i)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,i)}serialize(){var e,i;let o={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:(e=this._unevaluatedLayout)===null||e===void 0?void 0:e.serialize(),paint:(i=this._transitionablePaint)===null||i===void 0?void 0:i.serialize()};return this.visibility&&(o.layout||(o.layout={}),o.layout.visibility=this.visibility),on(o,((a,l)=>!(a===void 0||l==="layout"&&!Object.keys(a).length||l==="paint"&&!Object.keys(a).length)))}_validate(e,i,o,a,l={}){return l?.validate!==!1&&mu(this,e.call(fr,{key:i,layerType:this.type,objectKey:o,value:a,styleSpec:he,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let e in this.paint._values){let i=this.paint.get(e);if(i instanceof cr&&ao(i.property.specification)&&(i.value.kind==="source"||i.value.kind==="composite")&&i.value.isStateDependent)return!0}return!1}}let Zl;var Rh={get paint(){return Zl=Zl||new xi({"raster-opacity":new De(he.paint_raster["raster-opacity"]),"raster-hue-rotate":new De(he.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new De(he.paint_raster["raster-brightness-min"]),"raster-brightness-max":new De(he.paint_raster["raster-brightness-max"]),"raster-saturation":new De(he.paint_raster["raster-saturation"]),"raster-contrast":new De(he.paint_raster["raster-contrast"]),resampling:new De(he.paint_raster.resampling),"raster-resampling":new De(he.paint_raster["raster-resampling"]),"raster-fade-duration":new De(he.paint_raster["raster-fade-duration"])})}};class Lh extends Ki{constructor(e,i){super(e,Rh,i)}}let Fh={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class sa{constructor(e,i){this._structArray=e,this._pos1=i*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Tt{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,i){return e._trim(),i&&(e.isTransferred=!0,i.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){let i=Object.create(this.prototype);return i.arrayBuffer=e.arrayBuffer,i.length=e.length,i.capacity=e.arrayBuffer.byteLength/i.bytesPerElement,i._refreshViews(),i}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let i=this.uint8;this._refreshViews(),i&&this.uint8.set(i)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}freeBufferAfterUpload(){this.arrayBuffer=new ArrayBuffer(0),this._refreshViews()}}function yt(r,e=1){let i=0,o=0;return{members:r.map((a=>{let l=Fh[a.type].BYTES_PER_ELEMENT,u=i=Mu(i,Math.max(e,l)),p=a.components||1;return o=Math.max(o,l),i+=l*p,{name:a.name,type:a.type,components:p,offset:u}})),size:Mu(i,Math.max(o,e)),alignment:e}}function Mu(r,e){return Math.ceil(r/e)*e}class la extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i){let o=this.length;return this.resize(o+1),this.emplace(o,e,i)}emplace(e,i,o){let a=2*e;return this.int16[a+0]=i,this.int16[a+1]=o,e}}la.prototype.bytesPerElement=4,Ee("StructArrayLayout2i4",la);class us extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o){let a=this.length;return this.resize(a+1),this.emplace(a,e,i,o)}emplace(e,i,o,a){let l=3*e;return this.int16[l+0]=i,this.int16[l+1]=o,this.int16[l+2]=a,e}}us.prototype.bytesPerElement=6,Ee("StructArrayLayout3i6",us);class hs extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a){let l=this.length;return this.resize(l+1),this.emplace(l,e,i,o,a)}emplace(e,i,o,a,l){let u=4*e;return this.int16[u+0]=i,this.int16[u+1]=o,this.int16[u+2]=a,this.int16[u+3]=l,e}}hs.prototype.bytesPerElement=8,Ee("StructArrayLayout4i8",hs);class ds extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u){let p=this.length;return this.resize(p+1),this.emplace(p,e,i,o,a,l,u)}emplace(e,i,o,a,l,u,p){let g=6*e;return this.int16[g+0]=i,this.int16[g+1]=o,this.int16[g+2]=a,this.int16[g+3]=l,this.int16[g+4]=u,this.int16[g+5]=p,e}}ds.prototype.bytesPerElement=12,Ee("StructArrayLayout2i4i12",ds);class ql extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u){let p=this.length;return this.resize(p+1),this.emplace(p,e,i,o,a,l,u)}emplace(e,i,o,a,l,u,p){let g=4*e,m=8*e;return this.int16[g+0]=i,this.int16[g+1]=o,this.uint8[m+4]=a,this.uint8[m+5]=l,this.uint8[m+6]=u,this.uint8[m+7]=p,e}}ql.prototype.bytesPerElement=8,Ee("StructArrayLayout2i4ub8",ql);class ca extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i){let o=this.length;return this.resize(o+1),this.emplace(o,e,i)}emplace(e,i,o){let a=2*e;return this.float32[a+0]=i,this.float32[a+1]=o,e}}ca.prototype.bytesPerElement=8,Ee("StructArrayLayout2f8",ca);class Mr extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g,m,x){let _=this.length;return this.resize(_+1),this.emplace(_,e,i,o,a,l,u,p,g,m,x)}emplace(e,i,o,a,l,u,p,g,m,x,_){let T=10*e;return this.uint16[T+0]=i,this.uint16[T+1]=o,this.uint16[T+2]=a,this.uint16[T+3]=l,this.uint16[T+4]=u,this.uint16[T+5]=p,this.uint16[T+6]=g,this.uint16[T+7]=m,this.uint16[T+8]=x,this.uint16[T+9]=_,e}}Mr.prototype.bytesPerElement=20,Ee("StructArrayLayout10ui20",Mr);class ps extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g){let m=this.length;return this.resize(m+1),this.emplace(m,e,i,o,a,l,u,p,g)}emplace(e,i,o,a,l,u,p,g,m){let x=8*e;return this.uint16[x+0]=i,this.uint16[x+1]=o,this.uint16[x+2]=a,this.uint16[x+3]=l,this.uint16[x+4]=u,this.uint16[x+5]=p,this.uint16[x+6]=g,this.uint16[x+7]=m,e}}ps.prototype.bytesPerElement=16,Ee("StructArrayLayout8ui16",ps);class ua extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g,m,x,_,T){let b=this.length;return this.resize(b+1),this.emplace(b,e,i,o,a,l,u,p,g,m,x,_,T)}emplace(e,i,o,a,l,u,p,g,m,x,_,T,b){let M=12*e;return this.int16[M+0]=i,this.int16[M+1]=o,this.int16[M+2]=a,this.int16[M+3]=l,this.uint16[M+4]=u,this.uint16[M+5]=p,this.uint16[M+6]=g,this.uint16[M+7]=m,this.int16[M+8]=x,this.int16[M+9]=_,this.int16[M+10]=T,this.int16[M+11]=b,e}}ua.prototype.bytesPerElement=24,Ee("StructArrayLayout4i4ui4i24",ua);class fs extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,o){let a=this.length;return this.resize(a+1),this.emplace(a,e,i,o)}emplace(e,i,o,a){let l=3*e;return this.float32[l+0]=i,this.float32[l+1]=o,this.float32[l+2]=a,e}}fs.prototype.bytesPerElement=12,Ee("StructArrayLayout3f12",fs);class ha extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){let i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint32[1*e+0]=i,e}}ha.prototype.bytesPerElement=4,Ee("StructArrayLayout1ul4",ha);class Wl extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g,m){let x=this.length;return this.resize(x+1),this.emplace(x,e,i,o,a,l,u,p,g,m)}emplace(e,i,o,a,l,u,p,g,m,x){let _=10*e,T=5*e;return this.int16[_+0]=i,this.int16[_+1]=o,this.int16[_+2]=a,this.int16[_+3]=l,this.int16[_+4]=u,this.int16[_+5]=p,this.uint32[T+3]=g,this.uint16[_+8]=m,this.uint16[_+9]=x,e}}Wl.prototype.bytesPerElement=20,Ee("StructArrayLayout6i1ul2ui20",Wl);class fo extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u){let p=this.length;return this.resize(p+1),this.emplace(p,e,i,o,a,l,u)}emplace(e,i,o,a,l,u,p){let g=6*e;return this.int16[g+0]=i,this.int16[g+1]=o,this.int16[g+2]=a,this.int16[g+3]=l,this.int16[g+4]=u,this.int16[g+5]=p,e}}fo.prototype.bytesPerElement=12,Ee("StructArrayLayout2i2i2i12",fo);class Cn extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l){let u=this.length;return this.resize(u+1),this.emplace(u,e,i,o,a,l)}emplace(e,i,o,a,l,u){let p=4*e,g=8*e;return this.float32[p+0]=i,this.float32[p+1]=o,this.float32[p+2]=a,this.int16[g+6]=l,this.int16[g+7]=u,e}}Cn.prototype.bytesPerElement=16,Ee("StructArrayLayout2f1f2i16",Cn);class Hl extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u){let p=this.length;return this.resize(p+1),this.emplace(p,e,i,o,a,l,u)}emplace(e,i,o,a,l,u,p){let g=16*e,m=4*e,x=8*e;return this.uint8[g+0]=i,this.uint8[g+1]=o,this.float32[m+1]=a,this.float32[m+2]=l,this.int16[x+6]=u,this.int16[x+7]=p,e}}Hl.prototype.bytesPerElement=16,Ee("StructArrayLayout2ub2f2i16",Hl);class da extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o){let a=this.length;return this.resize(a+1),this.emplace(a,e,i,o)}emplace(e,i,o,a){let l=3*e;return this.uint16[l+0]=i,this.uint16[l+1]=o,this.uint16[l+2]=a,e}}da.prototype.bytesPerElement=6,Ee("StructArrayLayout3ui6",da);class An extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D){let L=this.length;return this.resize(L+1),this.emplace(L,e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D)}emplace(e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D,L){let R=24*e,F=12*e,O=48*e;return this.int16[R+0]=i,this.int16[R+1]=o,this.uint16[R+2]=a,this.uint16[R+3]=l,this.uint32[F+2]=u,this.uint32[F+3]=p,this.uint32[F+4]=g,this.uint16[R+10]=m,this.uint16[R+11]=x,this.uint16[R+12]=_,this.float32[F+7]=T,this.float32[F+8]=b,this.uint8[O+36]=M,this.uint8[O+37]=I,this.uint8[O+38]=A,this.uint32[F+10]=D,this.int16[R+22]=L,e}}An.prototype.bytesPerElement=48,Ee("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",An);class Xl extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D,L,R,F,O,N,K,Q,oe,re,ce,ue){let ae=this.length;return this.resize(ae+1),this.emplace(ae,e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D,L,R,F,O,N,K,Q,oe,re,ce,ue)}emplace(e,i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D,L,R,F,O,N,K,Q,oe,re,ce,ue,ae){let ne=32*e,ye=16*e;return this.int16[ne+0]=i,this.int16[ne+1]=o,this.int16[ne+2]=a,this.int16[ne+3]=l,this.int16[ne+4]=u,this.int16[ne+5]=p,this.int16[ne+6]=g,this.int16[ne+7]=m,this.uint16[ne+8]=x,this.uint16[ne+9]=_,this.uint16[ne+10]=T,this.uint16[ne+11]=b,this.uint16[ne+12]=M,this.uint16[ne+13]=I,this.uint16[ne+14]=A,this.uint16[ne+15]=D,this.uint16[ne+16]=L,this.uint16[ne+17]=R,this.uint16[ne+18]=F,this.uint16[ne+19]=O,this.uint16[ne+20]=N,this.uint16[ne+21]=K,this.uint16[ne+22]=Q,this.uint32[ye+12]=oe,this.float32[ye+13]=re,this.float32[ye+14]=ce,this.uint16[ne+30]=ue,this.uint16[ne+31]=ae,e}}Xl.prototype.bytesPerElement=64,Ee("StructArrayLayout8i15ui1ul2f2ui64",Xl);class ms extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){let i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.float32[1*e+0]=i,e}}ms.prototype.bytesPerElement=4,Ee("StructArrayLayout1f4",ms);class gs extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,o){let a=this.length;return this.resize(a+1),this.emplace(a,e,i,o)}emplace(e,i,o,a){let l=3*e;return this.uint16[6*e+0]=i,this.float32[l+1]=o,this.float32[l+2]=a,e}}gs.prototype.bytesPerElement=12,Ee("StructArrayLayout1ui2f12",gs);class Yl extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,o){let a=this.length;return this.resize(a+1),this.emplace(a,e,i,o)}emplace(e,i,o,a){let l=4*e;return this.uint32[2*e+0]=i,this.uint16[l+2]=o,this.uint16[l+3]=a,e}}Yl.prototype.bytesPerElement=8,Ee("StructArrayLayout1ul2ui8",Yl);class d extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i){let o=this.length;return this.resize(o+1),this.emplace(o,e,i)}emplace(e,i,o){let a=2*e;return this.uint16[a+0]=i,this.uint16[a+1]=o,e}}d.prototype.bytesPerElement=4,Ee("StructArrayLayout2ui4",d);class t extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){let i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint16[1*e+0]=i,e}}t.prototype.bytesPerElement=2,Ee("StructArrayLayout1ui2",t);class n extends Tt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,o,a){let l=this.length;return this.resize(l+1),this.emplace(l,e,i,o,a)}emplace(e,i,o,a,l){let u=4*e;return this.float32[u+0]=i,this.float32[u+1]=o,this.float32[u+2]=a,this.float32[u+3]=l,e}}n.prototype.bytesPerElement=16,Ee("StructArrayLayout4f16",n);class s extends sa{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new fe(this.anchorPointX,this.anchorPointY)}}s.prototype.size=20;class c extends Wl{get(e){return new s(this,e)}}Ee("CollisionBoxArray",c);class f extends sa{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(e){this._structArray.uint8[this._pos1+37]=e}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(e){this._structArray.uint8[this._pos1+38]=e}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(e){this._structArray.uint32[this._pos4+10]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}f.prototype.size=48;class y extends An{get(e){return new f(this,e)}}Ee("PlacedSymbolArray",y);class v extends sa{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(e){this._structArray.uint32[this._pos4+12]=e}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}v.prototype.size=64;class w extends Xl{get(e){return new v(this,e)}}Ee("SymbolInstanceArray",w);class S extends ms{getoffsetX(e){return this.float32[1*e+0]}}Ee("GlyphOffsetArray",S);class P extends us{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}Ee("SymbolLineVertexArray",P);class E extends sa{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}E.prototype.size=12;class C extends gs{get(e){return new E(this,e)}}Ee("TextAnchorOffsetArray",C);class z extends sa{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}z.prototype.size=8;class B extends Yl{get(e){return new z(this,e)}}Ee("FeatureIndexArray",B);class j extends la{}class $ extends la{}class U extends la{}class Z extends ds{}class Y extends ql{}class q extends ca{}class G extends Mr{}class X extends ps{}class W extends ua{}class te extends fs{}class se extends ha{}class le extends fo{}class ge extends Hl{}class me extends da{}class Ae extends d{}let Te=yt([{name:"a_pos",components:2,type:"Int16"}],4),{members:pe}=Te;class Ie{constructor(e=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=e}prepareSegment(e,i,o,a){let l=this.segments[this.segments.length-1];return e>Ie.MAX_VERTEX_ARRAY_LENGTH&&ti(`Max vertices per segment is ${Ie.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${Ie.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!l||l.vertexLength+e>Ie.MAX_VERTEX_ARRAY_LENGTH||l.sortKey!==a?this.createNewSegment(i,o,a):l}createNewSegment(e,i,o){let a={vertexOffset:e.length,primitiveOffset:i.length,vertexLength:0,primitiveLength:0,vaos:{}};return o!==void 0&&(a.sortKey=o),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(a),a}getOrCreateLatestSegment(e,i,o){return this.prepareSegment(0,e,i,o)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0}get(){return this.segments}destroy(){for(let e of this.segments)for(let i in e.vaos)e.vaos[i].destroy()}static simpleSegment(e,i,o,a){return new Ie([{vertexOffset:e,primitiveOffset:i,vertexLength:o,primitiveLength:a,vaos:{},sortKey:0}])}}function ke(r,e){return 256*(r=gi(Math.floor(r),0,255))+gi(Math.floor(e),0,255)}Ie.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ee("SegmentVector",Ie);let ct=yt([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]),Ft=yt([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var pt,Ot,jt,ci={exports:{}},Dt={exports:{}},vi={exports:{}},oi=(function(){if(jt)return ci.exports;jt=1;var r=(pt||(pt=1,Dt.exports=function(i,o){var a,l,u,p,g,m,x,_;for(l=i.length-(a=3&i.length),u=o,g=3432918353,m=461845907,_=0;_>>16)*g&65535)<<16)&4294967295)<<15|x>>>17))*m+(((x>>>16)*m&65535)<<16)&4294967295)<<13|u>>>19))+((5*(u>>>16)&65535)<<16)&4294967295))+((58964+(p>>>16)&65535)<<16);switch(x=0,a){case 3:x^=(255&i.charCodeAt(_+2))<<16;case 2:x^=(255&i.charCodeAt(_+1))<<8;case 1:u^=x=(65535&(x=(x=(65535&(x^=255&i.charCodeAt(_)))*g+(((x>>>16)*g&65535)<<16)&4294967295)<<15|x>>>17))*m+(((x>>>16)*m&65535)<<16)&4294967295}return u^=i.length,u=2246822507*(65535&(u^=u>>>16))+((2246822507*(u>>>16)&65535)<<16)&4294967295,u=3266489909*(65535&(u^=u>>>13))+((3266489909*(u>>>16)&65535)<<16)&4294967295,(u^=u>>>16)>>>0}),Dt.exports),e=(Ot||(Ot=1,vi.exports=function(i,o){for(var a,l=i.length,u=o^l,p=0;l>=4;)a=1540483477*(65535&(a=255&i.charCodeAt(p)|(255&i.charCodeAt(++p))<<8|(255&i.charCodeAt(++p))<<16|(255&i.charCodeAt(++p))<<24))+((1540483477*(a>>>16)&65535)<<16),u=1540483477*(65535&u)+((1540483477*(u>>>16)&65535)<<16)^(a=1540483477*(65535&(a^=a>>>24))+((1540483477*(a>>>16)&65535)<<16)),l-=4,++p;switch(l){case 3:u^=(255&i.charCodeAt(p+2))<<16;case 2:u^=(255&i.charCodeAt(p+1))<<8;case 1:u=1540483477*(65535&(u^=255&i.charCodeAt(p)))+((1540483477*(u>>>16)&65535)<<16)}return u=1540483477*(65535&(u^=u>>>13))+((1540483477*(u>>>16)&65535)<<16),(u^=u>>>15)>>>0}),vi.exports);return ci.exports=r,ci.exports.murmur3=r,ci.exports.murmur2=e,ci.exports})(),Xt=Ze(oi);class ui{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,i,o,a){this.ids.push(Wr(e)),this.positions.push(i,o,a)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let i=Wr(e),o=0,a=this.ids.length-1;for(;o>1;this.ids[u]>=i?a=u:o=u+1}let l=[];for(;this.ids[o]===i;)l.push({index:this.positions[3*o],start:this.positions[3*o+1],end:this.positions[3*o+2]}),o++;return l}static serialize(e,i){let o=new Float64Array(e.ids),a=new Uint32Array(e.positions);return Hr(o,a,0,o.length-1),i&&i.push(o.buffer,a.buffer),{ids:o,positions:a}}static deserialize(e){let i=new ui;return i.ids=e.ids,i.positions=e.positions,i.indexed=!0,i}}function Wr(r){let e=+r;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:Xt(String(r))}function Hr(r,e,i,o){for(;i>1],l=i-1,u=o+1;for(;;){do l++;while(r[l]a);if(l>=u)break;Xr(r,l,u),Xr(e,3*l,3*u),Xr(e,3*l+1,3*u+1),Xr(e,3*l+2,3*u+2)}u-i`u_${a}`)),this.type=o}setUniform(e,i,o){e.set(o.constantOr(this.value))}getBinding(e,i,o){return this.type==="color"?new _s(e,i):new Ir(e,i)}}class Ji{constructor(e,i){this.uniformNames=i.map((o=>`u_${o}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,i){this.pixelRatioFrom=i.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=i.tlbr,this.patternTo=e.tlbr}setConstantDashPositions(e,i){this.dashTo=[0,e.y,e.height,e.width],this.dashFrom=[0,i.y,i.height,i.width]}setUniform(e,i,o,a){let l=null;a==="u_pattern_to"?l=this.patternTo:a==="u_pattern_from"?l=this.patternFrom:a==="u_dasharray_to"?l=this.dashTo:a==="u_dasharray_from"?l=this.dashFrom:a==="u_pixel_ratio_to"?l=this.pixelRatioTo:a==="u_pixel_ratio_from"&&(l=this.pixelRatioFrom),l!==null&&e.set(l)}getBinding(e,i,o){return o.startsWith("u_pattern")||o.startsWith("u_dasharray_")?new Yr(e,i):new Ir(e,i)}}class St{constructor(e,i,o,a){this.expression=e,this.type=o,this.maxValue=0,this.paintVertexAttributes=i.map((l=>({name:`a_${l}`,type:"Float32",components:o==="color"?2:1,offset:0}))),this.paintVertexArray=new a}populatePaintArray(e,i,o){let a=this.paintVertexArray.length,l=this.expression.evaluate(new _t(0,o),i,{},o.canonical,[],o.formattedSection);this.paintVertexArray.resize(e),this._setPaintValue(a,e,l)}updatePaintArray(e,i,o,a,l){let u=this.expression.evaluate(new _t(0,l),o,a);this._setPaintValue(e,i,u)}_setPaintValue(e,i,o){if(this.type==="color"){let a=_r(o);for(let l=e;l`u_${p}_t`)),this.type=o,this.useIntegerZoom=a,this.zoom=l,this.maxValue=0,this.paintVertexAttributes=i.map((p=>({name:`a_${p}`,type:"Float32",components:o==="color"?4:2,offset:0}))),this.paintVertexArray=new u}populatePaintArray(e,i,o){let a=this.expression.evaluate(new _t(this.zoom,o),i,{},o.canonical,[],o.formattedSection),l=this.expression.evaluate(new _t(this.zoom+1,o),i,{},o.canonical,[],o.formattedSection),u=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(u,e,a,l)}updatePaintArray(e,i,o,a,l){let u=this.expression.evaluate(new _t(this.zoom,l),o,a),p=this.expression.evaluate(new _t(this.zoom+1,l),o,a);this._setPaintValue(e,i,u,p)}_setPaintValue(e,i,o,a){if(this.type==="color"){let l=_r(o),u=_r(a);for(let p=e;p`#define HAS_UNIFORM_${a}`)))}return e}getBinderAttributes(){let e=[];for(let i in this.binders){let o=this.binders[i];if(o instanceof St||o instanceof xt)for(let a of o.paintVertexAttributes)e.push(a.name);else if(o instanceof Nt){let a=o.getVertexAttributes();for(let l of a)e.push(l.name)}}return e}getBinderUniforms(){let e=[];for(let i in this.binders){let o=this.binders[i];if(o instanceof Ni||o instanceof Ji||o instanceof xt)for(let a of o.uniformNames)e.push(a)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,i){let o=[];for(let a in this.binders){let l=this.binders[a];if(l instanceof Ni||l instanceof Ji||l instanceof xt){for(let u of l.uniformNames)if(i[u]){let p=l.getBinding(e,i[u],u);o.push({name:u,property:a,binding:p})}}}return o}setUniforms(e,i,o,a){for(let{name:l,property:u,binding:p}of i)this.binders[u].setUniform(p,a,o.get(u),l)}updatePaintBuffers(e){this._buffers=[];for(let i in this.binders){let o=this.binders[i];if(e&&o instanceof Nt){let a=e.fromScale===2?o.zoomInPaintVertexBuffer:o.zoomOutPaintVertexBuffer;a&&this._buffers.push(a)}else(o instanceof St||o instanceof xt)&&o.paintVertexBuffer&&this._buffers.push(o.paintVertexBuffer)}}upload(e){for(let i in this.binders){let o=this.binders[i];(o instanceof St||o instanceof xt||o instanceof Nt)&&o.upload(e)}this.updatePaintBuffers()}destroy(){for(let e in this.binders){let i=this.binders[e];(i instanceof St||i instanceof xt||i instanceof Nt)&&i.destroy()}}}class Er{constructor(e,i,o=()=>!0){this.programConfigurations={};for(let a of e)this.programConfigurations[a.id]=new ys(a,i,o);this.needsUpload=!1,this._featureMap=new ui,this._bufferOffset=0}populatePaintArrays(e,i,o,a){for(let l in this.programConfigurations)this.programConfigurations[l].populatePaintArrays(e,i,a);i.id!==void 0&&this._featureMap.add(i.id,o,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,i,o,a){for(let l of o)this.needsUpload=this.programConfigurations[l.id].updatePaintArrays(e,this._featureMap,i,l,a)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(let i in this.programConfigurations)this.programConfigurations[i].upload(e);this.needsUpload=!1}}destroy(){for(let e in this.programConfigurations)this.programConfigurations[e].destroy()}}function Kl(r,e){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-dasharray":["dasharray_to","dasharray_from"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[r]||[r.replace(`${e}-`,"").replace(/-/g,"_")]}function Iu(r,e,i){let o={color:{source:ca,composite:n},number:{source:ms,composite:ca}},a=(function(l){return{"line-pattern":{source:G,composite:G},"fill-pattern":{source:G,composite:G},"fill-extrusion-pattern":{source:G,composite:G},"line-dasharray":{source:X,composite:X}}[l]})(r);return a?.[i]||o[e][i]}Ee("ConstantBinder",Ni),Ee("CrossFadedConstantBinder",Ji),Ee("SourceExpressionBinder",St),Ee("CrossFadedPatternBinder",Pt),Ee("CrossFadedDasharrayBinder",Dn),Ee("CompositeExpressionBinder",xt),Ee("ProgramConfiguration",ys,{omit:["_buffers"]}),Ee("ProgramConfigurationSet",Er);let Jl=Math.pow(2,14)-1,Kr=-Jl-1;function Jr(r){let e=Fe/r.extent,i=r.loadGeometry();for(let o of i)for(let a of o){let l=Math.round(a.x*e),u=Math.round(a.y*e);a.x=gi(l,Kr,Jl),a.y=gi(u,Kr,Jl),(la.x+1||ua.y+1)&&ti("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return i}function Qr(r,e){return{type:r.type,id:r.id,properties:r.properties,geometry:e?Jr(r):[]}}let Ql=-32768;function ec(r,e,i,o,a){r.emplaceBack(Ql+8*e+o,Ql+8*i+a)}class xs{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((i=>i.id)),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new $,this.indexArray=new me,this.segments=new Ie,this.programConfigurations=new Er(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter((i=>i.isStateDependent())).map((i=>i.id))}populate(e,i,o){let a=this.layers[0],l=[],u=null,p=!1,g=a.type==="heatmap";if(a.type==="circle"){let x=a;u=x.layout.get("circle-sort-key"),p=!u.isConstant(),g||(g=x.paint.get("circle-pitch-alignment")==="map")}let m=g?i.subdivisionGranularity.circle:1;for(let{feature:x,id:_,index:T,sourceLayerIndex:b}of e){let M=this.layers[0]._featureFilter.needGeometry,I=Qr(x,M);if(!this.layers[0]._featureFilter.filter(new _t(this.zoom),I,o))continue;let A=p?u.evaluate(I,{},o):void 0,D={id:_,properties:x.properties,type:x.type,sourceLayerIndex:b,index:T,geometry:M?I.geometry:Jr(x),patterns:{},sortKey:A};l.push(D)}p&&l.sort(((x,_)=>x.sortKey-_.sortKey));for(let x of l){let{geometry:_,index:T,sourceLayerIndex:b}=x,M=e[T].feature;this.addFeature(x,_,T,o,m),i.featureIndex.insert(M,_,T,b,this.index)}}update(e,i,o){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:o})}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,pe),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,i,o,a,l=1){let u;switch(l){case 1:u=[0,7];break;case 3:u=[0,2,5,7];break;case 5:u=[0,1,3,4,6,7];break;case 7:u=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${l}; valid values are 1, 3, 5, 7.`)}let p=u.length;for(let g of i)for(let m of g){let x=m.x,_=m.y;if(x<0||x>=Fe||_<0||_>=Fe)continue;let T=this.segments.prepareSegment(p*p,this.layoutVertexArray,this.indexArray,e.sortKey),b=T.vertexLength;for(let M=0;M1){if(Bh(r,e))return!0;for(let o of e)if(Oh(o,r,i))return!0}for(let o of r)if(Oh(o,e,i))return!0;return!1}function Bh(r,e){if(r.length===0||e.length===0)return!1;for(let i=0;i1?i:i.sub(e)._mult(a)._add(e))}function zp(r,e){let i,o,a,l=!1;for(let u of r){i=u;for(let p=0,g=i.length-1;pe.y!=a.y>e.y&&e.x<(a.x-o.x)*(e.y-o.y)/(a.y-o.y)+o.x&&(l=!l)}return l}function bs(r,e){let i=!1;for(let o=0,a=r.length-1;oe.y!=u.y>e.y&&e.x<(u.x-l.x)*(e.y-l.y)/(u.y-l.y)+l.x&&(i=!i)}return i}function M_(r,e,i){let o=i[0],a=i[2];if(r.xa.x&&e.x>a.x||r.ya.y&&e.y>a.y)return!1;let l=Li(r,e,i[0]);return l!==Li(r,e,i[1])||l!==Li(r,e,i[2])||l!==Li(r,e,i[3])}function ws(r,e,i){let o=e.paint.get(r).value;return o.kind==="constant"?o.value:i.programConfigurations.get(e.id).getMaxValue(r)}function Cu(r){return Math.sqrt(r[0]*r[0]+r[1]*r[1])}function Au(r,e,i,o,a){if(!e[0]&&!e[1])return r;let l=fe.convert(e)._mult(a);i==="viewport"&&l._rotate(-o);let u=[];for(let p of r)u.push(p.sub(l));return u}function I_(r){let e=[];for(let i=0;iVh(R,A,D,L)))})(m,l,p,g),M=x),kp({queryGeometry:b,size:M,transform:l,unwrappedTileID:p,getElevation:g,pitchAlignment:T,pitchScale:_},a)}}class Fp extends xs{}let Bp;Ee("HeatmapBucket",Fp,{omit:["layers"]});var R_={get paint(){return Bp=Bp||new xi({"heatmap-radius":new Re(he.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Re(he.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new De(he.paint_heatmap["heatmap-intensity"]),"heatmap-color":new po(he.paint_heatmap["heatmap-color"]),"heatmap-opacity":new De(he.paint_heatmap["heatmap-opacity"])})}};function jh(r,{width:e,height:i},o,a){if(a){if(a instanceof Uint8ClampedArray)a=new Uint8Array(a.buffer);else if(a.length!==e*i*o)throw new RangeError(`mismatched image size. expected: ${a.length} but got: ${e*i*o}`)}else a=new Uint8Array(e*i*o);return r.width=e,r.height=i,r.data=a,r}function Op(r,{width:e,height:i},o){if(e===r.width&&i===r.height)return;let a=jh({},{width:e,height:i},o);Nh(r,a,{x:0,y:0},{x:0,y:0},{width:Math.min(r.width,e),height:Math.min(r.height,i)},o),r.width=e,r.height=i,r.data=a.data}function Nh(r,e,i,o,a,l){if(a.width===0||a.height===0)return e;if(a.width>r.width||a.height>r.height||i.x>r.width-a.width||i.y>r.height-a.height)throw new RangeError("out of range source coordinates for image copy");if(a.width>e.width||a.height>e.height||o.x>e.width-a.width||o.y>e.height-a.height)throw new RangeError("out of range destination coordinates for image copy");let u=r.data,p=e.data;if(u===p)throw new Error("srcData equals dstData, so image is already copied");for(let g=0;g{e[r.evaluationKey]=g;let m=r.expression.evaluate(e);a.setPixel(u/4/i,p/4,m)};if(r.clips)for(let u=0,p=0;uthis.max&&(this.max=_),_=this.dim+1||i<-1||i>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${i}, dim: ${this.dim}`);return(i+1)*this.stride+(e+1)}unpack(e,i,o){return e*this.redFactor+i*this.greenFactor+o*this.blueFactor-this.baseShift}pack(e){return Zp(e,this.getUnpackVector())}getPixels(){return new Ui({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,i,o){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let a=i*this.dim,l=i*this.dim+this.dim,u=o*this.dim,p=o*this.dim+this.dim;switch(i){case-1:a=l-1;break;case 1:l=a+1}switch(o){case-1:u=p-1;break;case 1:p=u+1}let g=-i*this.dim,m=-o*this.dim;for(let x=u;x0)for(let u=e;u=e;u-=o)l=Yp(u/o|0,r[u],r[u+1],l);return l&&Ts(l,l.next)&&(oc(l),l=l.next),l}function pa(r,e){if(!r)return r;e||(e=r);let i,o=r;do if(i=!1,o.steiner||!Ts(o,o.next)&&Vt(o.prev,o,o.next)!==0)o=o.next;else{if(oc(o),o=e=o.prev,o===o.next)break;i=!0}while(i||o!==e);return e}function ic(r,e,i,o,a,l,u){if(!r)return;!u&&l&&(function(g,m,x,_){let T=g;do T.z===0&&(T.z=Zh(T.x,T.y,m,x,_)),T.prevZ=T.prev,T.nextZ=T.next,T=T.next;while(T!==g);T.prevZ.nextZ=null,T.prevZ=null,(function(b){let M,I=1;do{let A,D=b;b=null;let L=null;for(M=0;D;){M++;let R=D,F=0;for(let N=0;N0||O>0&&R;)F!==0&&(O===0||!R||D.z<=R.z)?(A=D,D=D.nextZ,F--):(A=R,R=R.nextZ,O--),L?L.nextZ=A:b=A,A.prevZ=L,L=A;D=R}L.nextZ=null,I*=2}while(M>1)})(T)})(r,o,a,l);let p=r;for(;r.prev!==r.next;){let g=r.prev,m=r.next;if(l?G_(r,o,a,l):U_(r))e.push(g.i,r.i,m.i),oc(r),r=m.next,p=m.next;else if((r=m)===p){u?u===1?ic(r=$_(pa(r),e),e,i,o,a,l,2):u===2&&Z_(r,e,i,o,a,l):ic(pa(r),e,i,o,a,l,1);break}}}function U_(r){let e=r.prev,i=r,o=r.next;if(Vt(e,i,o)>=0)return!1;let a=e.x,l=i.x,u=o.x,p=e.y,g=i.y,m=o.y,x=Math.min(a,l,u),_=Math.min(p,g,m),T=Math.max(a,l,u),b=Math.max(p,g,m),M=o.next;for(;M!==e;){if(M.x>=x&&M.x<=T&&M.y>=_&&M.y<=b&&rc(a,p,l,g,u,m,M.x,M.y)&&Vt(M.prev,M,M.next)>=0)return!1;M=M.next}return!0}function G_(r,e,i,o){let a=r.prev,l=r,u=r.next;if(Vt(a,l,u)>=0)return!1;let p=a.x,g=l.x,m=u.x,x=a.y,_=l.y,T=u.y,b=Math.min(p,g,m),M=Math.min(x,_,T),I=Math.max(p,g,m),A=Math.max(x,_,T),D=Zh(b,M,e,i,o),L=Zh(I,A,e,i,o),R=r.prevZ,F=r.nextZ;for(;R&&R.z>=D&&F&&F.z<=L;){if(R.x>=b&&R.x<=I&&R.y>=M&&R.y<=A&&R!==a&&R!==u&&rc(p,x,g,_,m,T,R.x,R.y)&&Vt(R.prev,R,R.next)>=0||(R=R.prevZ,F.x>=b&&F.x<=I&&F.y>=M&&F.y<=A&&F!==a&&F!==u&&rc(p,x,g,_,m,T,F.x,F.y)&&Vt(F.prev,F,F.next)>=0))return!1;F=F.nextZ}for(;R&&R.z>=D;){if(R.x>=b&&R.x<=I&&R.y>=M&&R.y<=A&&R!==a&&R!==u&&rc(p,x,g,_,m,T,R.x,R.y)&&Vt(R.prev,R,R.next)>=0)return!1;R=R.prevZ}for(;F&&F.z<=L;){if(F.x>=b&&F.x<=I&&F.y>=M&&F.y<=A&&F!==a&&F!==u&&rc(p,x,g,_,m,T,F.x,F.y)&&Vt(F.prev,F,F.next)>=0)return!1;F=F.nextZ}return!0}function $_(r,e){let i=r;do{let o=i.prev,a=i.next.next;!Ts(o,a)&&Hp(o,i,i.next,a)&&nc(o,a)&&nc(a,o)&&(e.push(o.i,i.i,a.i),oc(i),oc(i.next),i=r=a),i=i.next}while(i!==r);return pa(i)}function Z_(r,e,i,o,a,l){let u=r;do{let p=u.next.next;for(;p!==u.prev;){if(u.i!==p.i&&Y_(u,p)){let g=Xp(u,p);return u=pa(u,u.next),g=pa(g,g.next),ic(u,e,i,o,a,l,0),void ic(g,e,i,o,a,l,0)}p=p.next}u=u.next}while(u!==r)}function q_(r,e){let i=r.x-e.x;return i===0&&(i=r.y-e.y,i===0)&&(i=(r.next.y-r.y)/(r.next.x-r.x)-(e.next.y-e.y)/(e.next.x-e.x)),i}function W_(r,e){let i=(function(a,l){let u=l,p=a.x,g=a.y,m,x=-1/0;if(Ts(a,u))return u;do{if(Ts(a,u.next))return u.next;if(g<=u.y&&g>=u.next.y&&u.next.y!==u.y){let I=u.x+(g-u.y)*(u.next.x-u.x)/(u.next.y-u.y);if(I<=p&&I>x&&(x=I,m=u.x=u.x&&u.x>=T&&p!==u.x&&Wp(gm.x||u.x===m.x&&H_(m,u)))&&(m=u,M=I)}u=u.next}while(u!==_);return m})(r,e);if(!i)return e;let o=Xp(i,r);return pa(o,o.next),pa(i,i.next)}function H_(r,e){return Vt(r.prev,r,e.prev)<0&&Vt(e.next,r,r.next)<0}function Zh(r,e,i,o,a){return(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r=(r-i)*a|0)|r<<8))|r<<4))|r<<2))|r<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-o)*a|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function X_(r){let e=r,i=r;do(e.x=(r-u)*(l-p)&&(r-u)*(o-p)>=(i-u)*(e-p)&&(i-u)*(l-p)>=(a-u)*(o-p)}function rc(r,e,i,o,a,l,u,p){return!(r===u&&e===p)&&Wp(r,e,i,o,a,l,u,p)}function Y_(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!(function(i,o){let a=i;do{if(a.i!==i.i&&a.next.i!==i.i&&a.i!==o.i&&a.next.i!==o.i&&Hp(a,a.next,i,o))return!0;a=a.next}while(a!==i);return!1})(r,e)&&(nc(r,e)&&nc(e,r)&&(function(i,o){let a=i,l=!1,u=(i.x+o.x)/2,p=(i.y+o.y)/2;do a.y>p!=a.next.y>p&&a.next.y!==a.y&&u<(a.next.x-a.x)*(p-a.y)/(a.next.y-a.y)+a.x&&(l=!l),a=a.next;while(a!==i);return l})(r,e)&&(Vt(r.prev,r,e.prev)||Vt(r,e.prev,e))||Ts(r,e)&&Vt(r.prev,r,r.next)>0&&Vt(e.prev,e,e.next)>0)}function Vt(r,e,i){return(e.y-r.y)*(i.x-e.x)-(e.x-r.x)*(i.y-e.y)}function Ts(r,e){return r.x===e.x&&r.y===e.y}function Hp(r,e,i,o){let a=ku(Vt(r,e,i)),l=ku(Vt(r,e,o)),u=ku(Vt(i,o,r)),p=ku(Vt(i,o,e));return a!==l&&u!==p||!(a!==0||!zu(r,i,e))||!(l!==0||!zu(r,o,e))||!(u!==0||!zu(i,r,o))||!(p!==0||!zu(i,e,o))}function zu(r,e,i){return e.x<=Math.max(r.x,i.x)&&e.x>=Math.min(r.x,i.x)&&e.y<=Math.max(r.y,i.y)&&e.y>=Math.min(r.y,i.y)}function ku(r){return r>0?1:r<0?-1:0}function nc(r,e){return Vt(r.prev,r,r.next)<0?Vt(r,e,r.next)>=0&&Vt(r,r.prev,e)>=0:Vt(r,e,r.prev)<0||Vt(r,r.next,e)<0}function Xp(r,e){let i=qh(r.i,r.x,r.y),o=qh(e.i,e.x,e.y),a=r.next,l=e.prev;return r.next=e,e.prev=r,i.next=a,a.prev=i,o.next=i,i.prev=o,l.next=o,o.prev=l,o}function Yp(r,e,i,o){let a=qh(r,e,i);return o?(a.next=o.next,a.prev=o,o.next.prev=a,o.next=a):(a.prev=a,a.next=a),a}function oc(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function qh(r,e,i){return{i:r,x:e,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class Ss{constructor(e,i){if(i>e)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=e,this._minGranularity=i}getGranularityForZoomLevel(e){return Math.max(Math.floor(this._baseZoomGranularity/(1<32767||i>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");let o=0|Math.round(e),a=0|Math.round(i),l=this._getKey(o,a);if(this._vertexDictionary.has(l))return this._vertexDictionary.get(l);let u=this._vertexBuffer.length/2;return this._vertexDictionary.set(l,u),this._vertexBuffer.push(o,a),u}_subdivideTrianglesScanline(e){if(this._granularity<2)return(function(a,l){let u=[];for(let p=0;p0?(u.push(g),u.push(x),u.push(m)):(u.push(g),u.push(m),u.push(x))}return u})(this._vertexBuffer,e);let i=[],o=e.length;for(let a=0;a=1||O<=0)||D&&(ml)){_>=a&&_<=l&&u.push(o[(p+1)%3]);continue}!D&&F>0&&u.push(this._vertexToIndex(g+M*F,m+I*F));let N=g+M*Math.max(F,0),K=g+M*Math.min(O,1);A||this._generateIntraEdgeVertices(u,g,m,x,_,N,K),!D&&O<1&&u.push(this._vertexToIndex(g+M*O,m+I*O)),(D||_>=a&&_<=l)&&u.push(o[(p+1)%3]),!D&&(_<=a||_>=l)&&this._generateInterEdgeVertices(u,g,m,x,_,T,b,K,a,l)}return u}_generateIntraEdgeVertices(e,i,o,a,l,u,p){let g=a-i,m=l-o,x=m===0,_=x?Math.min(i,a):Math.min(u,p),T=x?Math.max(i,a):Math.max(u,p),b=Math.floor(_/this._granularityCellSize)+1,M=Math.ceil(T/this._granularityCellSize)-1;if(x?i=b;I--){let A=I*this._granularityCellSize;e.push(this._vertexToIndex(A,o+m*(A-i)/g))}}_generateInterEdgeVertices(e,i,o,a,l,u,p,g,m,x){let _=l-o,T=u-a,b=p-l,M=(m-l)/b,I=(x-l)/b,A=Math.min(M,I),D=Math.max(M,I),L=a+T*A,R=Math.floor(Math.min(L,g)/this._granularityCellSize)+1,F=Math.ceil(Math.max(L,g)/this._granularityCellSize)-1,O=g=1||D<=0){let Q=o-p,oe=u+(i-u)*Math.min((m-p)/Q,(x-p)/Q);R=Math.floor(Math.min(oe,g)/this._granularityCellSize)+1,F=Math.ceil(Math.max(oe,g)/this._granularityCellSize)-1,O=g0?x:m;if(O)for(let Q=R;Q<=F;Q++)e.push(this._vertexToIndex(Q*this._granularityCellSize,K));else for(let Q=F;Q>=R;Q--)e.push(this._vertexToIndex(Q*this._granularityCellSize,K))}_generateOutline(e){let i=[];for(let o of e){let a=fa(o,this._granularity,!0),l=this._pointArrayToIndices(a),u=[];for(let p=1;pl!=(u===Ps)?(e.push(i),e.push(o),e.push(this._vertexToIndex(a,u)),e.push(o),e.push(this._vertexToIndex(l,u)),e.push(this._vertexToIndex(a,u))):(e.push(o),e.push(i),e.push(this._vertexToIndex(a,u)),e.push(this._vertexToIndex(l,u)),e.push(o),e.push(this._vertexToIndex(a,u)))}_fillPoles(e,i,o){let a=this._vertexBuffer,l=Fe,u=e.length;for(let p=2;p80*_){A=m[0],D=m[1];let R=A,F=D;for(let O=_;OR&&(R=N),K>F&&(F=K)}L=Math.max(R-A,F-D),L=L!==0?32767/L:0}return ic(M,I,_,A,D,L,0),I})(o,a),g=this._convertIndices(o,p);l=this._subdivideTrianglesScanline(g)}catch(p){console.error(p)}let u=[];return i&&(u=this._generateOutline(e)),this._ensureNoPoleVertices(),this._handlePoles(l),{verticesFlattened:this._vertexBuffer,indicesTriangles:l,indicesLineList:u}}_convertIndices(e,i){let o=[];for(let a of i)o.push(this._vertexToIndex(e[2*a],e[2*a+1]));return o}_pointArrayToIndices(e){let i=[];for(let o of e)i.push(this._vertexToIndex(o.x,o.y));return i}}function Kp(r,e,i,o=!0){return new K_(i,e).subdividePolygonInternal(r,o)}function fa(r,e,i=!1){if(!r||r.length<1)return[];if(r.length<2)return[];let o=r[0],a=r[r.length-1],l=i&&(o.x!==a.x||o.y!==a.y);if(e<2)return l?[...r,r[0]]:[...r];let u=Math.floor(Fe/e),p=[];p.push(new fe(r[0].x,r[0].y));let g=r.length,m=l?g:g-1;for(let x=0;x0?(Math.floor(K/u)+1)*u:(Math.ceil(K/u)-1)*u,ce=F>0?(Math.floor(Q/u)+1)*u:(Math.ceil(Q/u)-1)*u,ue=Math.abs(K-re),ae=Math.abs(Q-ce),ne=Math.abs(K-I),ye=Math.abs(Q-A),Pe=D?ue/O:Number.POSITIVE_INFINITY,we=L?ae/N:Number.POSITIVE_INFINITY;if((ne<=ue||!D)&&(ye<=ae||!L))break;if(Pe=0?u-1:l-1,m=(p+1)%l,x=r[2*e[g]],_=r[2*e[m]],T=r[2*e[u]],b=r[2*e[u]+1],M=r[2*e[p]+1],I=!1;if(x<_)I=!0;else if(x>_)I=!1;else{let A=M-b,D=-(r[2*e[p]]-T),L=b((_-T)*A+(r[2*e[m]+1]-b)*D)*L&&(I=!0)}if(I){let A=e[g],D=e[u],L=e[p];A!==D&&A!==L&&D!==L&&i.push(L,D,A),u--,u<0&&(u=l-1)}else{let A=e[m],D=e[u],L=e[p];A!==D&&A!==L&&D!==L&&i.push(L,D,A),p++,p>=l&&(p=0)}if(g===m)break}}function Jp(r,e,i,o,a,l,u,p,g){let m=a.length/2,x=u&&p&&g;if(mIe.MAX_VERTEX_ARRAY_LENGTH&&(F=_.createNewSegment(T,b),R=L.count,re=!0,ce=!0,ue=!0,O=0);let ae=sc(D,M,A,L,K,re,F),ne=sc(D,M,A,L,Q,ce,F),ye=sc(D,M,A,L,oe,ue,F);b.emplaceBack(O+ae-R,O+ne-R,O+ye-R),F.primitiveLength++}})(e,i,o,a,l,r),x&&(function(_,T,b,M,I,A){let D=[];for(let N=0;NIe.MAX_VERTEX_ARRAY_LENGTH&&(F=_.createNewSegment(T,b),R=L.count,re=!0,ce=!0,O=0);let ue=sc(D,M,A,L,Q,re,F),ae=sc(D,M,A,L,oe,ce,F);b.emplaceBack(O+ue-R,O+ae-R),F.primitiveLength++}})(u,i,p,a,g,r),e.forceNewSegmentOnNextPrepare(),u?.forceNewSegmentOnNextPrepare()}function sc(r,e,i,o,a,l,u){if(l){let p=o.count;return i(e[2*a],e[2*a+1]),r[a]=o.count,o.count++,u.vertexLength++,p}return r[a]}class Wh{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((i=>i.id)),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new U,this.indexArray=new me,this.indexArray2=new Ae,this.programConfigurations=new Er(e.layers,e.zoom),this.segments=new Ie,this.segments2=new Ie,this.stateDependentLayerIds=this.layers.filter((i=>i.isStateDependent())).map((i=>i.id))}populate(e,i,o){this.hasDependencies=Du("fill",this.layers,i);let a=this.layers[0].layout.get("fill-sort-key"),l=!a.isConstant(),u=[];for(let{feature:p,id:g,index:m,sourceLayerIndex:x}of e){let _=this.layers[0]._featureFilter.needGeometry,T=Qr(p,_);if(!this.layers[0]._featureFilter.filter(new _t(this.zoom),T,o))continue;let b=l?a.evaluate(T,{},o,i.availableImages):void 0,M={id:g,properties:p.properties,type:p.type,sourceLayerIndex:x,index:m,geometry:_?T.geometry:Jr(p),patterns:{},sortKey:b};u.push(M)}l&&u.sort(((p,g)=>p.sortKey-g.sortKey));for(let p of u){let{geometry:g,index:m,sourceLayerIndex:x}=p;if(this.hasDependencies){let _=$h("fill",this.layers,p,{zoom:this.zoom},i);this.patternFeatures.push(_)}else this.addFeature(p,g,m,o,{},i.subdivisionGranularity);i.featureIndex.insert(e[m].feature,g,m,x,this.index)}}update(e,i,o){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:o})}addFeatures(e,i,o){for(let a of this.patternFeatures)this.addFeature(a,a.geometry,a.index,i,o,e.subdivisionGranularity)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,N_),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,i,o,a,l,u){for(let p of $a(i,500)){let g=Kp(p,a,u.fill.getGranularityForZoomLevel(a.z)),m=this.layoutVertexArray;Jp(((x,_)=>{m.emplaceBack(x,_)}),this.segments,this.layoutVertexArray,this.indexArray,g.verticesFlattened,g.indicesTriangles,this.segments2,this.indexArray2,g.indicesLineList)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,{imagePositions:l,canonical:a})}}let Qp,ef;Ee("FillBucket",Wh,{omit:["layers","patternFeatures"]});var Q_={get paint(){return ef=ef||new xi({"fill-antialias":new De(he.paint_fill["fill-antialias"]),"fill-opacity":new Re(he.paint_fill["fill-opacity"]),"fill-color":new Re(he.paint_fill["fill-color"]),"fill-outline-color":new Re(he.paint_fill["fill-outline-color"]),"fill-translate":new De(he.paint_fill["fill-translate"]),"fill-translate-anchor":new De(he.paint_fill["fill-translate-anchor"]),"fill-pattern":new qr(he.paint_fill["fill-pattern"])})},get layout(){return Qp=Qp||new xi({"fill-sort-key":new Re(he.layout_fill["fill-sort-key"])})}};class e0 extends Ki{constructor(e,i){super(e,Q_,i)}recalculate(e,i){super.recalculate(e,i);let o=this.paint._values["fill-outline-color"];o.value.kind==="constant"&&o.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new Wh(e)}queryRadius(){return Cu(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:e,geometry:i,transform:o,pixelsToTileUnits:a}){return Ap(Au(e,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-o.bearingInRadians,a),i)}isTileClipped(){return!0}}let t0=yt([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),i0=yt([{name:"a_centroid",components:2,type:"Int16"}],4),{members:r0}=t0;class lc{constructor(e,i,o,a,l){this.properties={},this.extent=o,this.type=0,this.id=void 0,this._pbf=e,this._geometry=-1,this._keys=a,this._values=l,e.readFields(n0,this,i)}loadGeometry(){let e=this._pbf;e.pos=this._geometry;let i=e.readVarint()+e.pos,o=[],a,l=1,u=0,p=0,g=0;for(;e.pos>3}if(u--,l===1||l===2)p+=e.readSVarint(),g+=e.readSVarint(),l===1&&(a&&o.push(a),a=[]),a&&a.push(new fe(p,g));else{if(l!==7)throw new Error(`unknown command ${l}`);a&&a.push(a[0].clone())}}return a&&o.push(a),o}bbox(){let e=this._pbf;e.pos=this._geometry;let i=e.readVarint()+e.pos,o=1,a=0,l=0,u=0,p=1/0,g=-1/0,m=1/0,x=-1/0;for(;e.pos>3}if(a--,o===1||o===2)l+=e.readSVarint(),u+=e.readSVarint(),lg&&(g=l),ux&&(x=u);else if(o!==7)throw new Error(`unknown command ${o}`)}return[p,m,g,x]}toGeoJSON(e,i,o){let a=this.extent*Math.pow(2,o),l=this.extent*e,u=this.extent*i,p=this.loadGeometry();function g(T){return[360*(T.x+l)/a-180,360/Math.PI*Math.atan(Math.exp((1-2*(T.y+u)/a)*Math.PI))-90]}function m(T){return T.map(g)}let x;if(this.type===1){let T=[];for(let M of p)T.push(M[0]);let b=m(T);x=T.length===1?{type:"Point",coordinates:b[0]}:{type:"MultiPoint",coordinates:b}}else if(this.type===2){let T=p.map(m);x=T.length===1?{type:"LineString",coordinates:T[0]}:{type:"MultiLineString",coordinates:T}}else{if(this.type!==3)throw new Error("unknown feature type");{let T=tf(p),b=[];for(let M of T)b.push(M.map(m));x=b.length===1?{type:"Polygon",coordinates:b[0]}:{type:"MultiPolygon",coordinates:b}}}let _={type:"Feature",geometry:x,properties:this.properties};return this.id!=null&&(_.id=this.id),_}}function n0(r,e,i){r===1?e.id=i.readVarint():r===2?(function(o,a){let l=o.readVarint()+o.pos;for(;o.pos=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];let i=this._pbf.readVarint()+this._pbf.pos;return new lc(this._pbf,i,this.extent,this._keys,this._values)}}function s0(r,e,i){r===15?e.version=i.readVarint():r===1?e.name=i.readString():r===5?e.extent=i.readVarint():r===2?e._features.push(i.pos):r===3?e._keys.push(i.readString()):r===4&&e._values.push((function(o){let a=null,l=o.readVarint()+o.pos;for(;o.pos>3;a=u===1?o.readString():u===2?o.readFloat():u===3?o.readDouble():u===4?o.readVarint64():u===5?o.readVarint():u===6?o.readSVarint():u===7?o.readBoolean():null}if(a==null)throw new Error("unknown feature value");return a})(i))}class rf{constructor(e,i){this.layers=e.readFields(l0,{},i)}}function l0(r,e,i){if(r===3){let o=new a0(i,i.readVarint()+i.pos);o.length&&(e[o.name]=o)}}let Hh=Math.pow(2,13);function cc(r,e,i,o,a,l,u,p){r.emplaceBack(e,i,2*Math.floor(o*Hh)+u,a*Hh*2,l*Hh*2,Math.round(p))}class Xh{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((i=>i.id)),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Z,this.centroidVertexArray=new j,this.indexArray=new me,this.programConfigurations=new Er(e.layers,e.zoom),this.segments=new Ie,this.stateDependentLayerIds=this.layers.filter((i=>i.isStateDependent())).map((i=>i.id))}populate(e,i,o){this.features=[],this.hasDependencies=Du("fill-extrusion",this.layers,i);for(let{feature:a,id:l,index:u,sourceLayerIndex:p}of e){let g=this.layers[0]._featureFilter.needGeometry,m=Qr(a,g);if(!this.layers[0]._featureFilter.filter(new _t(this.zoom),m,o))continue;let x={id:l,sourceLayerIndex:p,index:u,geometry:g?m.geometry:Jr(a),properties:a.properties,type:a.type,patterns:{}};this.hasDependencies?this.features.push($h("fill-extrusion",this.layers,x,{zoom:this.zoom},i)):this.addFeature(x,x.geometry,u,o,{},i.subdivisionGranularity),i.featureIndex.insert(a,x.geometry,u,p,this.index,!0)}}addFeatures(e,i,o){for(let a of this.features){let{geometry:l}=a;this.addFeature(a,l,a.index,i,o,e.subdivisionGranularity)}}update(e,i,o){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:o})}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,r0),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,i0.members,!0),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(e,i,o,a,l,u){for(let p of $a(i,500)){let g={x:0,y:0,sampleCount:0},m=this.layoutVertexArray.length;this.processPolygon(g,a,e,p,u);let x=this.layoutVertexArray.length-m,_=Math.floor(g.x/g.sampleCount),T=Math.floor(g.y/g.sampleCount);for(let b=0;b{cc(x,_,T,0,0,1,1,0)}),this.segments,this.layoutVertexArray,this.indexArray,m.verticesFlattened,m.indicesTriangles)}_generateSideFaces(e,i){let o=0;for(let a=1;aIe.MAX_VERTEX_ARRAY_LENGTH&&(i.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let p=l.sub(u)._perp()._unit(),g=u.dist(l);o+g>32768&&(o=0),cc(this.layoutVertexArray,l.x,l.y,p.x,p.y,0,0,o),cc(this.layoutVertexArray,l.x,l.y,p.x,p.y,0,1,o),o+=g,cc(this.layoutVertexArray,u.x,u.y,p.x,p.y,0,0,o),cc(this.layoutVertexArray,u.x,u.y,p.x,p.y,0,1,o);let m=i.segment.vertexLength;this.indexArray.emplaceBack(m,m+2,m+1),this.indexArray.emplaceBack(m+1,m+2,m+3),i.segment.vertexLength+=4,i.segment.primitiveLength+=2}}}function c0(r,e){for(let i=0;iFe)||r.y===e.y&&(r.y<0||r.y>Fe)}function nf(r){return r.every((e=>e.x<0))||r.every((e=>e.x>Fe))||r.every((e=>e.y<0))||r.every((e=>e.y>Fe))}let of;Ee("FillExtrusionBucket",Xh,{omit:["layers","features"]});var h0={get paint(){return of=of||new xi({"fill-extrusion-opacity":new De(he["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Re(he["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new De(he["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new De(he["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new qr(he["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Re(he["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Re(he["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new De(he["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class d0 extends Ki{constructor(e,i){super(e,h0,i)}createBucket(e){return new Xh(e)}queryRadius(){return Cu(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:o,geometry:a,transform:l,pixelsToTileUnits:u,pixelPosMatrix:p}){let g=Au(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-l.bearingInRadians,u),m=this.paint.get("fill-extrusion-height").evaluate(i,o),x=this.paint.get("fill-extrusion-base").evaluate(i,o),_=(function(b,M){let I=[];for(let A of b){let D=[A.x,A.y,0,1];et(D,D,M),I.push(new fe(D[0]/D[3],D[1]/D[3]))}return I})(g,p),T=(function(b,M,I,A){let D=[],L=[],R=A[8]*M,F=A[9]*M,O=A[10]*M,N=A[11]*M,K=A[8]*I,Q=A[9]*I,oe=A[10]*I,re=A[11]*I;for(let ce of b){let ue=[],ae=[];for(let ne of ce){let ye=ne.x,Pe=ne.y,we=A[0]*ye+A[4]*Pe+A[12],xe=A[1]*ye+A[5]*Pe+A[13],Le=A[2]*ye+A[6]*Pe+A[14],ot=A[3]*ye+A[7]*Pe+A[15],st=Le+O,dt=ot+N,fi=we+K,zt=xe+Q,qt=Le+oe,Jt=ot+re,bt=new fe((we+R)/dt,(xe+F)/dt);bt.z=st/dt,ue.push(bt);let si=new fe(fi/Jt,zt/Jt);si.z=qt/Jt,ae.push(si)}D.push(ue),L.push(ae)}return[D,L]})(a,x,m,p);return(function(b,M,I){let A=1/0;Ap(I,M)&&(A=af(I,M[0]));for(let D=0;D>4;if(a!==1)throw new Error(`Got v${a} data when expected v1.`);let l=sf[15&o];if(!l)throw new Error("Unrecognized array type.");let[u]=new Uint16Array(e,2,1),[p]=new Uint32Array(e,4,1);return new Lu(p,u,l,e)}constructor(e,i=64,o=Float64Array,a){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+i,2),65535),this.ArrayType=o,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;let l=sf.indexOf(this.ArrayType),u=2*e*this.ArrayType.BYTES_PER_ELEMENT,p=e*this.IndexArrayType.BYTES_PER_ELEMENT,g=(8-p%8)%8;if(l<0)throw new Error(`Unexpected typed array class: ${o}.`);a&&a instanceof ArrayBuffer?(this.data=a,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+p+g,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+u+p+g),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+p+g,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+l]),new Uint16Array(this.data,2,1)[0]=i,new Uint32Array(this.data,4,1)[0]=e)}add(e,i){let o=this._pos>>1;return this.ids[o]=o,this.coords[this._pos++]=e,this.coords[this._pos++]=i,o}finish(){let e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return Yh(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,i,o,a){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:l,coords:u,nodeSize:p}=this,g=[0,l.length-1,0],m=[];for(;g.length;){let x=g.pop()||0,_=g.pop()||0,T=g.pop()||0;if(_-T<=p){for(let A=T;A<=_;A++){let D=u[2*A],L=u[2*A+1];D>=e&&D<=o&&L>=i&&L<=a&&m.push(l[A])}continue}let b=T+_>>1,M=u[2*b],I=u[2*b+1];M>=e&&M<=o&&I>=i&&I<=a&&m.push(l[b]),(x===0?e<=M:i<=I)&&(g.push(T),g.push(b-1),g.push(1-x)),(x===0?o>=M:a>=I)&&(g.push(b+1),g.push(_),g.push(1-x))}return m}within(e,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:a,coords:l,nodeSize:u}=this,p=[0,a.length-1,0],g=[],m=o*o;for(;p.length;){let x=p.pop()||0,_=p.pop()||0,T=p.pop()||0;if(_-T<=u){for(let A=T;A<=_;A++)cf(l[2*A],l[2*A+1],e,i)<=m&&g.push(a[A]);continue}let b=T+_>>1,M=l[2*b],I=l[2*b+1];cf(M,I,e,i)<=m&&g.push(a[b]),(x===0?e-o<=M:i-o<=I)&&(p.push(T),p.push(b-1),p.push(1-x)),(x===0?e+o>=M:i+o>=I)&&(p.push(b+1),p.push(_),p.push(1-x))}return g}}function Yh(r,e,i,o,a,l){if(a-o<=i)return;let u=o+a>>1;lf(r,e,u,o,a,l),Yh(r,e,i,o,u-1,1-l),Yh(r,e,i,u+1,a,1-l)}function lf(r,e,i,o,a,l){for(;a>o;){if(a-o>600){let m=a-o+1,x=i-o+1,_=Math.log(m),T=.5*Math.exp(2*_/3),b=.5*Math.sqrt(_*T*(m-T)/m)*(x-m/2<0?-1:1);lf(r,e,i,Math.max(o,Math.floor(i-x*T/m+b)),Math.min(a,Math.floor(i+(m-x)*T/m+b)),l)}let u=e[2*i+l],p=o,g=a;for(hc(r,e,o,i),e[2*a+l]>u&&hc(r,e,o,a);pu;)g--}e[2*o+l]===u?hc(r,e,o,g):(g++,hc(r,e,g,a)),g<=i&&(o=g+1),i<=g&&(a=g-1)}}function hc(r,e,i,o){Kh(r,i,o),Kh(e,2*i,2*o),Kh(e,2*i+1,2*o+1)}function Kh(r,e,i){let o=r[e];r[e]=r[i],r[i]=o}function cf(r,e,i,o){let a=r-i,l=e-o;return a*a+l*l}function Jh(r,e,i,o){let a=o,l=e+(i-e>>1),u,p=i-e,g=r[e],m=r[e+1],x=r[i],_=r[i+1];for(let T=e+3;Ta)u=T,a=b;else if(b===a){let M=Math.abs(T-l);Mo&&(u-e>3&&Jh(r,e,u,o),r[u+2]=a,i-u>3&&Jh(r,u,i,o))}function p0(r,e,i,o,a,l){let u=a-i,p=l-o;if(u!==0||p!==0){let g=((r-i)*u+(e-o)*p)/(u*u+p*p);g>1?(i=a,o=l):g>0&&(i+=u*g,o+=p*g)}return u=r-i,p=e-o,u*u+p*p}function ai(r,e,i,o){let a={type:e,geom:i},l={id:r??null,type:a.type,geometry:a.geom,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};switch(a.type){case"Point":case"MultiPoint":dc(l,a.geom);break;case"LineString":dc(l,a.geom.points);break;case"Polygon":dc(l,a.geom[0].points);break;case"MultiLineString":for(let u of a.geom)dc(l,u.points);break;case"MultiPolygon":for(let u of a.geom)dc(l,u[0].points)}return l}function Qh(r){r.points.length>64&&(r.points=new Float64Array(r.points))}function dc(r,e){for(let i=0;i0&&(u+=o?(a*x-m*l)/2:Math.sqrt(Math.pow(m-a,2)+Math.pow(x-l,2))),a=m,l=x}let p=e.points.length-3;e.points[2]=1,i>0&&Jh(e.points,0,p,i),e.points[p+2]=1,Qh(e),e.size=Math.abs(u),e.start=0,e.end=e.size}function id(r,e,i,o){for(let a=0;a1?1:i}function Bu(r){let e={type:"Feature",geometry:f0(r),properties:r.tags};return r.id!=null&&(e.id=r.id),e}function f0(r){let{type:e,geometry:i}=r;switch(e){case"Point":return{type:e,coordinates:uf(i[0],i[1])};case"MultiPoint":return{type:e,coordinates:Ou(i)};case"LineString":return{type:e,coordinates:Ou(i.points)};case"MultiLineString":case"Polygon":return{type:e,coordinates:i.map((o=>Ou(o.points)))};case"MultiPolygon":return{type:e,coordinates:i.map((o=>o.map((a=>Ou(a.points)))))}}}function Ou(r){let e=[];for(let i=0;i=(i/=e)&&u=o)return null;let g=[];for(let m of r){let x=a===bi.X?m.minX:m.minY,_=a===bi.X?m.maxX:m.maxY;if(x>=i&&_=o))switch(m.type){case"Point":case"MultiPoint":m0(m,g,i,o,a);continue;case"LineString":g0(m,g,i,o,a,p);continue;case"MultiLineString":_0(m,g,i,o,a);continue;case"Polygon":y0(m,g,i,o,a);continue;case"MultiPolygon":x0(m,g,i,o,a);continue}}return g.length?g:null}function m0(r,e,i,o,a){let l=[];(function(u,p,g,m,x){for(let _=0;_=g&&T<=m&&Es(p,u[_],u[_+1],u[_+2])}})(r.geometry,l,i,o,a),l.length&&e.push(ai(r.id,l.length===3?"Point":"MultiPoint",l,r.tags))}function g0(r,e,i,o,a,l){let u=[];if(pf(r.geometry,u,i,o,a,!1,l.lineMetrics),u.length)if(l.lineMetrics)for(let p of u)e.push(ai(r.id,"LineString",p,r.tags));else e.push(u.length>1?ai(r.id,"MultiLineString",u,r.tags):ai(r.id,"LineString",u[0],r.tags))}function _0(r,e,i,o,a){let l=[];rd(r.geometry,l,i,o,a,!1),l.length&&e.push(l.length!==1?ai(r.id,"MultiLineString",l,r.tags):ai(r.id,"LineString",l[0],r.tags))}function y0(r,e,i,o,a){let l=[];rd(r.geometry,l,i,o,a,!0),l.length&&e.push(ai(r.id,"Polygon",l,r.tags))}function x0(r,e,i,o,a){let l=[];for(let u of r.geometry){let p=[];rd(u,p,i,o,a,!0),p.length&&l.push(p)}l.length&&e.push(ai(r.id,"MultiPolygon",l,r.tags))}function pf(r,e,i,o,a,l,u){let p=ff(r),g=a===bi.X?v0:b0,m,x,_=r.start;for(let A=0;Ai&&(x=g(p,D,L,F,O,i),u&&(p.start=_+m*x)):N>o?K=i&&(x=g(p,D,L,F,O,i),Q=!0),K>o&&N<=o&&(x=g(p,D,L,F,O,o),Q=!0),!l&&Q&&(u&&(p.end=_+m*x),e.push(p),p=ff(r)),u&&(_+=m)}let T=r.points.length-3,b=r.points[T],M=r.points[T+1],I=a===bi.X?b:M;I>=i&&I<=o&&Es(p.points,b,M,r.points[T+2]),T=p.points.length-3,l&&T>=3&&(p.points[T]!==p.points[0]||p.points[T+1]!==p.points[1])&&Es(p.points,p.points[0],p.points[1],p.points[2]),p.points.length&&(Qh(p),e.push(p))}function ff(r){return{points:[],size:r.size,start:r.start,end:r.end}}function rd(r,e,i,o,a,l){for(let u of r)pf(u,e,i,o,a,l,!1)}function Es(r,e,i,o){r.push(e,i,o)}function v0(r,e,i,o,a,l){let u=(l-e)/(o-e);return Es(r.points,l,i+(a-i)*u,1),u}function b0(r,e,i,o,a,l){let u=(l-i)/(a-i);return Es(r.points,e+(o-e)*u,l,1),u}function nd(r,e){let i=e.buffer/e.extent,o=r,a=zn(r,1,-1-i,i,bi.X,-1,2,e),l=zn(r,1,1-i,2+i,bi.X,-1,2,e);return(a||l)&&(o=zn(r,1,-i,1+i,bi.X,-1,2,e)||[],a&&(o=mf(a,1).concat(o)),l&&(o=o.concat(mf(l,-1)))),o}function mf(r,e){let i=[];for(let o of r)switch(o.type){case"Point":case"MultiPoint":{let a=w0(o.geometry,e);i.push(ai(o.id,o.type,a,o.tags));continue}case"LineString":{let a=od(o.geometry,e);i.push(ai(o.id,o.type,a,o.tags));continue}case"MultiLineString":case"Polygon":{let a=[];for(let l of o.geometry)a.push(od(l,e));i.push(ai(o.id,o.type,a,o.tags));continue}case"MultiPolygon":{let a=[];for(let l of o.geometry){let u=[];for(let p of l)u.push(od(p,e));a.push(u)}i.push(ai(o.id,o.type,a,o.tags));continue}}return i}function w0(r,e){let i=[];for(let o=0;o0||e.addOrUpdateProperties?.length>0;if(o){let l=r[0],u=ed({type:"FeatureCollection",features:[{type:"Feature",id:l.id,geometry:e.newGeometry,properties:a?gf(l.tags,e):l.tags}]},i);return u=nd(u,i),u}if(a){let l=[];for(let u of r){let p={...u};p.tags=gf(p.tags,e),l.push(p)}return l}return r}function gf(r,e){if(e.removeAllProperties)return{};let i={...r||{}};if(e.removeProperties)for(let o of e.removeProperties)delete i[o];if(e.addOrUpdateProperties)for(let{key:o,value:a}of e.addOrUpdateProperties)i[o]=a;return i}(function(r){r[r.X=0]="X",r[r.Y=1]="Y"})(bi||(bi={}));let ad={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:r=>r};class S0{constructor(e){this.options=Object.assign(Object.create(ad),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[],this.points=[]}load(e){let i=[];for(let o of e){if(!o.geometry)continue;let[a,l]=o.geometry.coordinates,[u,p]=[Ms(a),Is(l)];i.push({id:o.id,type:"Point",geometry:[u,p],tags:o.properties})}this.createIndex(i)}initialize(e){let i=[];for(let o of e)o.type==="Point"&&i.push(o);this.createIndex(i)}updateIndex(e,i,o){this.options=Object.assign(Object.create(ad),o.clusterOptions),this.initialize(e)}createIndex(e){let{log:i,minZoom:o,maxZoom:a}=this.options;i&&console.time("total time");let l=`prepare ${e.length} points`;i&&console.time(l),this.points=e;let u=[];for(let g=0;g=o;g--){let m=Date.now();p=this.trees[g]=this.createTree(this.cluster(p,g)),i&&console.log("z%d: %d clusters in %dms",g,p.numItems,Date.now()-m)}i&&console.timeEnd("total time")}getClusters(e,i){return this.getClustersInternal(e,i).map((o=>Bu(o)))}getClustersInternal(e,i){let o=((e[0]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,e[1])),l=e[2]===180?180:((e[2]+180)%360+360)%360-180,u=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)o=-180,l=180;else if(o>l){let _=this.getClustersInternal([o,a,180,u],i),T=this.getClustersInternal([-180,a,l,u],i);return _.concat(T)}let p=this.trees[this.limitZoom(i)],g=p.range(Ms(o),Is(u),Ms(l),Is(a)),m=p.flatData,x=[];for(let _ of g){let T=this.stride*_;x.push(m[T+5]>1?P0(m,T,this.clusterProps):this.points[m[T+3]])}return x}getChildren(e){let i=this.getOriginId(e),o=this.getOriginZoom(e),a=new Error("No cluster with the specified id: "+e),l=this.trees[o];if(!l)throw a;let u=l.flatData;if(i*this.stride>=u.length)throw a;let p=this.options.radius/(this.options.extent*Math.pow(2,o-1)),g=l.within(u[i*this.stride],u[i*this.stride+1],p),m=[];for(let x of g){let _=x*this.stride;u[_+4]===e&&m.push(u[_+5]>1?M0(u,_,this.clusterProps):Bu(this.points[u[_+3]]))}if(m.length===0)throw a;return m}getLeaves(e,i,o){let a=[];return this.appendLeaves(a,e,i=i||10,o=o||0,0),a}getTile(e,i,o){let a=this.trees[this.limitZoom(e)];if(!a)return null;let l=Math.pow(2,e),{extent:u,radius:p}=this.options,g=p/u,m=(o-g)/l,x=(o+1+g)/l,_={transformed:!0,features:[],source:null,x:i,y:o,z:e};return this.addTileFeatures(a.range((i-g)/l,m,(i+1+g)/l,x),a.flatData,i,o,l,_),i===0&&this.addTileFeatures(a.range(1-g/l,m,1,x),a.flatData,l,o,l,_),i===l-1&&this.addTileFeatures(a.range(0,m,g/l,x),a.flatData,-1,o,l,_),_}getClusterExpansionZoom(e){return this.getOriginZoom(e)}appendLeaves(e,i,o,a,l){let u=this.getChildren(i);for(let p of u){let g=p.properties;if(g?.cluster?l+g.point_count<=a?l+=g.point_count:l=this.appendLeaves(e,g.cluster_id,o,a,l):l1,x,_,T;if(m)x=sd(i,g,this.clusterProps),_=i[g],T=i[g+1];else{let I=this.points[i[g+3]];x=I.tags,[_,T]=I.geometry}let b={type:1,geometry:[[Math.round(this.options.extent*(_*l-o)),Math.round(this.options.extent*(T*l-a))]],tags:x},M;M=m||this.options.generateId?i[g+3]:this.points[i[g+3]].id,M!==void 0&&(b.id=M),u.features.push(b)}}limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}cluster(e,i){let{radius:o,extent:a,reduce:l,minPoints:u}=this.options,p=o/(a*Math.pow(2,i)),g=e.flatData,m=[],x=this.stride;for(let _=0;_i&&(A+=g[L+5])}if(A>I&&A>=u){let D,L=T*I,R=b*I,F=-1,O=(_/x<<5)+(i+1)+this.points.length;for(let N of M){let K=N*x;if(g[K+2]<=i)continue;g[K+2]=i;let Q=g[K+5];L+=g[K]*Q,R+=g[K+1]*Q,g[K+4]=O,l&&(D||(D=this.map(g,_,!0),F=this.clusterProps.length,this.clusterProps.push(D)),l(D,this.map(g,K)))}g[_+4]=O,m.push(L/A,R/A,1/0,O,-1,A),l&&m.push(F)}else{for(let D=0;D1)for(let D of M){let L=D*x;if(!(g[L+2]<=i)){g[L+2]=i;for(let R=0;R>5}getOriginZoom(e){return(e-this.points.length)%32}map(e,i,o){if(e[i+5]>1){let u=this.clusterProps[e[i+6]];return o?Object.assign({},u):u}let a=this.points[e[i+3]].tags,l=this.options.map(a);return o&&l===a?Object.assign({},l):l}}function P0(r,e,i){return{id:r[e+3],type:"Point",tags:sd(r,e,i),geometry:[r[e],r[e+1]]}}function M0(r,e,i){return{type:"Feature",id:r[e+3],properties:sd(r,e,i),geometry:{type:"Point",coordinates:[hf(r[e]),df(r[e+1])]}}}function sd(r,e,i){let o=r[e+5],a=o>=1e4?`${Math.round(o/1e3)}k`:o>=1e3?Math.round(o/100)/10+"k":o,l=r[e+6],u=l===-1?{}:Object.assign({},i[l]);return Object.assign(u,{cluster:!0,cluster_id:r[e+3],point_count:o,point_count_abbreviated:a})}let ld="geojsonvt_clip_start",cd="geojsonvt_clip_end";function _f(r,e,i,o,a){let l=e===a.maxZoom?0:a.tolerance/((1<0&&e.size<(a?u:o))return void(i.numPoints+=e.points.length/3);let p=[];for(let g=0;gu)&&(i.numSimplified++,p.push(e.points[g],e.points[g+1])),i.numPoints++;a&&(function(g,m){let x=0;for(let _=0,T=g.length,b=T-2;_0===m)for(let _=0,T=g.length;_1&&(console.log("invalidating tiles"),console.time("invalidating")),this.invalidateTiles(i),o.debug>1&&console.timeEnd("invalidating");let[a,l,u]=[0,0,0],p=_f(e,a,l,u,o);p.source=e;let g=Vu(a,l,u);if(this.tiles[g]=p,this.tileCoords.push({z:a,x:l,y:u,id:g}),o.debug){let m=`z${a}`;this.stats[m]=(this.stats[m]||0)+1,this.total++}}getClusterExpansionZoom(e){return null}getChildren(e){return null}getLeaves(e,i,o){return null}getTile(e,i,o){let{extent:a,debug:l}=this.options,u=1<1&&console.log("drilling down to z%d-%d-%d",e,i,o);let g,m=e,x=i,_=o;for(;!g&&m>0;)m--,x>>=1,_>>=1,g=this.tiles[Vu(m,x,_)];return g?.source?(l>1&&(console.log("found parent tile z%d-%d-%d",m,x,_),console.time("drilling down")),this.splitTile(g.source,m,x,_,e,i,o),l>1&&console.timeEnd("drilling down"),this.tiles[p]?yf(this.tiles[p],a):null):null}splitTile(e,i,o,a,l,u,p){let g=[e,i,o,a],m=this.options,x=m.debug;for(;g.length;){a=g.pop(),o=g.pop(),i=g.pop(),e=g.pop();let _=1<1&&console.time("creation"),b=this.tiles[T]=_f(e,i,o,a,m),this.tileCoords.push({z:i,x:o,y:a,id:T}),x)){x>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",i,o,a,b.numFeatures,b.numPoints,b.numSimplified),console.timeEnd("creation"));let Q=`z${i}`;this.stats[Q]=(this.stats[Q]||0)+1,this.total++}if(b.source=e,l==null){if(i===m.indexMaxZoom||b.numPoints<=m.indexMaxPoints)continue}else{if(i===m.maxZoom||i===l)continue;if(l!=null){let Q=l-i;if(o!==u>>Q||a!==p>>Q)continue}}if(b.source=null,!e.length)continue;x>1&&console.time("clipping");let M=.5*m.buffer/m.extent,I=.5-M,A=.5+M,D=1+M,L=null,R=null,F=null,O=null,N=zn(e,_,o-M,o+A,bi.X,b.minX,b.maxX,m),K=zn(e,_,o+I,o+D,bi.X,b.minX,b.maxX,m);N&&(L=zn(N,_,a-M,a+A,bi.Y,b.minY,b.maxY,m),R=zn(N,_,a+I,a+D,bi.Y,b.minY,b.maxY,m)),K&&(F=zn(K,_,a-M,a+A,bi.Y,b.minY,b.maxY,m),O=zn(K,_,a+I,a+D,bi.Y,b.minY,b.maxY,m)),x>1&&console.timeEnd("clipping"),g.push(L||[],i+1,2*o,2*a),g.push(R||[],i+1,2*o,2*a+1),g.push(F||[],i+1,2*o+1,2*a),g.push(O||[],i+1,2*o+1,2*a+1)}}invalidateTiles(e){if(!e.length)return;let i=this.options,{debug:o}=i,a=1/0,l=-1/0,u=1/0,p=-1/0;for(let x of e)a=Math.min(a,x.minX),l=Math.max(l,x.maxX),u=Math.min(u,x.minY),p=Math.max(p,x.maxY);let g=i.buffer/i.extent,m=new Set;for(let x in this.tiles){let _=this.tiles[x],T=1<<_.z,b=(_.x-g)/T,M=(_.x+1+g)/T,I=(_.y-g)/T,A=(_.y+1+g)/T;if(l=M||p=A)continue;let D=!1;for(let L of e)if(L.maxX>=b&&L.minX=I&&L.minY1&&console.log("invalidate tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",_.z,_.x,_.y,_.numFeatures,_.numPoints,_.numSimplified);let L=`z${_.z}`;this.stats[L]=(this.stats[L]||0)-1,this.total--}delete this.tiles[x],m.add(x)}}m.size&&(this.tileCoords=this.tileCoords.filter((x=>!m.has(x.id))))}}function Vu(r,e,i){return 32*((1<i.id)),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={};for(let i of this.layers)this.gradients[i.id]={};this.layoutVertexArray=new Y,this.layoutVertexArray2=new q,this.indexArray=new me,this.programConfigurations=new Er(e.layers,e.zoom),this.segments=new Ie,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((i=>i.isStateDependent())).map((i=>i.id))}populate(e,i,o){this.hasDependencies=Du("line",this.layers,i)||this.hasLineDasharray(this.layers);let a=this.layers[0].layout.get("line-sort-key"),l=!a.isConstant(),u=[];for(let{feature:p,id:g,index:m,sourceLayerIndex:x}of e){let _=this.layers[0]._featureFilter.needGeometry,T=Qr(p,_);if(!this.layers[0]._featureFilter.filter(new _t(this.zoom),T,o))continue;let b=l?a.evaluate(T,{},o):void 0,M={id:g,properties:p.properties,type:p.type,sourceLayerIndex:x,index:m,geometry:_?T.geometry:Jr(p),patterns:{},dashes:{},sortKey:b};u.push(M)}l&&u.sort(((p,g)=>p.sortKey-g.sortKey));for(let p of u){let{geometry:g,index:m,sourceLayerIndex:x}=p;this.hasDependencies?(Du("line",this.layers,i)?$h("line",this.layers,p,{zoom:this.zoom},i):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,p,this.zoom,i),this.patternFeatures.push(p)):this.addFeature(p,g,m,o,{},{},i.subdivisionGranularity),i.featureIndex.insert(e[m].feature,g,m,x,this.index)}}update(e,i,o,a){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:o,dashPositions:a})}addFeatures(e,i,o,a){for(let l of this.patternFeatures)this.addFeature(l,l.geometry,l.index,i,o,a,e.subdivisionGranularity)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,L0)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,k0),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&Object.hasOwn(e.properties,ld)&&Object.hasOwn(e.properties,cd))return{start:+e.properties[ld],end:+e.properties[cd]}}addFeature(e,i,o,a,l,u,p){let g=this.layers[0].layout,m=g.get("line-join").evaluate(e,{}),x=g.get("line-cap").evaluate(e,{}),_=g.get("line-miter-limit").evaluate(e,{}),T=g.get("line-round-limit").evaluate(e,{});this.lineClips=this.lineFeatureClips(e);for(let b of i)this.addLine(b,e,m,x,_,T,a,p);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,{imagePositions:l,dashPositions:u,canonical:a})}addLine(e,i,o,a,l,u,p,g){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e=fa(e,p?g.line.getGranularityForZoomLevel(p.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let R=0;R=2&&e[x-1].equals(e[x-2]);)x--;let _=0;for(;_0;if(oe&&R>_){let ae=M.dist(I);if(ae>2*T){let ne=M.sub(M.sub(I)._mult(T/ae)._round());this.updateDistance(I,ne),this.addCurrentVertex(ne,D,0,0,b),I=ne}}let ce=I&&A,ue=ce?o:m?"butt":a;if(ce&&ue==="round"&&(Kl&&(ue="bevel"),ue==="bevel"&&(K>2&&(ue="flipbevel"),K100)F=L.mult(-1);else{let ae=K*D.add(L).mag()/D.sub(L).mag();F._perp()._mult(ae*(re?-1:1))}this.addCurrentVertex(M,F,0,0,b),this.addCurrentVertex(M,F.mult(-1),0,0,b)}else if(ue==="bevel"||ue==="fakeround"){let ae=-Math.sqrt(K*K-1),ne=re?ae:0,ye=re?0:ae;if(I&&this.addCurrentVertex(M,D,ne,ye,b),ue==="fakeround"){let Pe=Math.round(180*Q/Math.PI/20);for(let we=1;we2*T){let ne=M.add(A.sub(M)._mult(T/ae)._round());this.updateDistance(M,ne),this.addCurrentVertex(ne,L,0,0,b),M=ne}}}}addCurrentVertex(e,i,o,a,l,u=!1){let p=i.y*a-i.x,g=-i.y-i.x*a;this.addHalfVertex(e,i.x+i.y*o,i.y-i.x*o,u,!1,o,l),this.addHalfVertex(e,p,g,u,!0,-a,l),this.distance>vf/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,i,o,a,l,u))}addHalfVertex({x:e,y:i},o,a,l,u,p,g){let m=.5*(this.lineClips?this.scaledDistance*(vf-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(l?1:0),(i<<1)+(u?1:0),Math.round(63*o)+128,Math.round(63*a)+128,1+(p===0?0:p<0?-1:1)|(63&m)<<2,m>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let x=g.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,x,this.e2),g.primitiveLength++),u?this.e2=x:this.e1=x}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,i){this.distance+=e.dist(i),this.updateScaledDistance()}hasLineDasharray(e){for(let i of e){let o=i.paint.get("line-dasharray");if(o&&!o.isConstant())return!0}return!1}addLineDashDependencies(e,i,o,a){for(let l of e){let u=l.paint.get("line-dasharray");if(!u||u.value.kind==="constant")continue;let p=l.layout.get("line-cap").evaluate(i,{})==="round",g={dasharray:u.value.evaluate({zoom:o-1},i,{}),round:p},m={dasharray:u.value.evaluate({zoom:o},i,{}),round:p},x={dasharray:u.value.evaluate({zoom:o+1},i,{}),round:p},_=`${g.dasharray.join(",")},${g.round}`,T=`${m.dasharray.join(",")},${m.round}`,b=`${x.dasharray.join(",")},${x.round}`;a.dashDependencies[_]=g,a.dashDependencies[T]=m,a.dashDependencies[b]=x,i.dashes[l.id]={min:_,mid:T,max:b}}}}let bf,wf;Ee("LineBucket",hd,{omit:["layers","patternFeatures"]});var Tf={get paint(){return wf=wf||new xi({"line-opacity":new Re(he.paint_line["line-opacity"]),"line-color":new Re(he.paint_line["line-color"]),"line-translate":new De(he.paint_line["line-translate"]),"line-translate-anchor":new De(he.paint_line["line-translate-anchor"]),"line-width":new Re(he.paint_line["line-width"]),"line-gap-width":new Re(he.paint_line["line-gap-width"]),"line-offset":new Re(he.paint_line["line-offset"]),"line-blur":new Re(he.paint_line["line-blur"]),"line-dasharray":new qr(he.paint_line["line-dasharray"]),"line-pattern":new qr(he.paint_line["line-pattern"]),"line-gradient":new po(he.paint_line["line-gradient"])})},get layout(){return bf=bf||new xi({"line-cap":new Re(he.layout_line["line-cap"]),"line-join":new Re(he.layout_line["line-join"]),"line-miter-limit":new Re(he.layout_line["line-miter-limit"]),"line-round-limit":new Re(he.layout_line["line-round-limit"]),"line-sort-key":new Re(he.layout_line["line-sort-key"])})}};class B0 extends Re{possiblyEvaluate(e,i){return i=new _t(Math.floor(i.zoom),{now:i.now,fadeDuration:i.fadeDuration,zoomHistory:i.zoomHistory,transition:i.transition}),super.possiblyEvaluate(e,i)}evaluate(e,i,o,a){return i=Wi({},i,{zoom:Math.floor(i.zoom)}),super.evaluate(e,i,o,a)}}let ju;class O0 extends Ki{constructor(e,i){super(e,Tf,i),this.gradientVersion=0,ju||(ju=new B0(Tf.paint.properties["line-width"].specification),ju.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if(e==="line-gradient"){let i=this.gradientExpression();this.stepInterpolant=!!(function(o){return o._styleExpression!==void 0})(i)&&i._styleExpression.expression instanceof Qn,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,i){super.recalculate(e,i),this.paint._values["line-floorwidth"]=ju.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new hd(e)}queryRadius(e){let i=e,o=Sf(ws("line-width",this,i),ws("line-gap-width",this,i)),a=ws("line-offset",this,i);return o/2+Math.abs(a)+Cu(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:o,geometry:a,transform:l,pixelsToTileUnits:u}){let p=Au(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-l.bearingInRadians,u),g=u/2*Sf(this.paint.get("line-width").evaluate(i,o),this.paint.get("line-gap-width").evaluate(i,o)),m=this.paint.get("line-offset").evaluate(i,o);return m&&(a=(function(x,_){let T=[];for(let b of x){let M=I_(b),I=[];for(let A=0;A=3){for(let M of b)if(bs(x,M))return!0}if(S_(x,b,T))return!0}return!1})(p,a,g)}isTileClipped(){return!0}}function Sf(r,e){return e>0?e+2*r:r}let V0=yt([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),j0=yt([{name:"a_projected_pos",components:3,type:"Float32"}],4);yt([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let N0=yt([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);yt([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let Pf=yt([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),U0=yt([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function G0(r,e,i){let o=e.layout.get("text-transform").evaluate(i,{});return o==="uppercase"?r=r.toLocaleUpperCase():o==="lowercase"&&(r=r.toLocaleLowerCase()),Pr.applyArabicShaping&&(r=Pr.applyArabicShaping(r)),r}function $0(r,e,i){for(let o of r.sections)o.text=G0(o.text,e,i);return r}yt([{name:"triangle",components:3,type:"Uint16"}]),yt([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),yt([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),yt([{type:"Float32",name:"offsetX"}]),yt([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),yt([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var Yt=24;let pc={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u22EF":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"},Z0={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},q0={40:!0};function Mf(r,e,i,o,a,l){if("fontStack"in e){let u=i[e.fontStack],p=u?.[r];return p?p.metrics.advance*e.scale+a:0}{let u=o[e.imageName];return u?u.displaySize[0]*e.scale*Yt/l+a:0}}function If(r,e,i,o){let a=Math.pow(r-e,2);return o?rMath.max(e,this.sections[i].scale)),0)}getMaxImageSize(e){let i=0,o=0;for(let a=0;ao)))}addImageSection(e){let i=e.image?e.image.name:"";if(i.length===0)return void ti("Can't add FormattedSection with an empty image.");let o=this.getNextImageSectionCharCode();o?(this.text+=String.fromCharCode(o),this.sections.push({scale:1,verticalAlign:e.verticalAlign||"bottom",imageName:i}),this.sectionIndex.push(this.sections.length-1)):ti("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(e,i,o,a,l){let u=[],p=this.determineAverageLineWidth(e,i,o,a,l),g=this.hasZeroWidthSpaces(),m=0,x=0,_=this.text[Symbol.iterator](),T=_.next(),b=this.text[Symbol.iterator]();b.next();let M=b.next(),I=this.text[Symbol.iterator]();I.next(),I.next();let A=I.next();for(;!T.done;){let D=this.getSection(x),L=T.value.codePointAt(0);if(yu(L)||(m+=Mf(L,D,o,a,e,l)),!M.done){let R=zh(L),F=M.value.codePointAt(0);(Z0[L]||R||"imageName"in D||!A.done&&q0[F])&&u.push(Ef(x+1,m,p,u,W0(L,F,R&&g),!1))}x++,T=_.next(),M=b.next(),A=I.next()}return Cf(Ef(this.length(),m,p,u,0,!0))}determineAverageLineWidth(e,i,o,a,l){let u=0,p=0;for(let g of this.text){let m=this.getSection(p);u+=Mf(g.codePointAt(0),m,o,a,e,l),p++}return u/Math.max(1,Math.ceil(u/i))}}let dd=4294967296,Af=1/dd,Df=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");class Nu{constructor(e=new Uint8Array(16)){this.buf=ArrayBuffer.isView(e)?e:new Uint8Array(e),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(e,i,o=this.length){for(;this.pos>3,u=this.pos;this.type=7&a,e(l,i,this),this.pos===u&&this.skip(a)}return i}readMessage(e,i){return this.readFields(e,i,this.readVarint()+this.pos)}readFixed32(){let e=this.dataView.getUint32(this.pos,!0);return this.pos+=4,e}readSFixed32(){let e=this.dataView.getInt32(this.pos,!0);return this.pos+=4,e}readFixed64(){let e=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*dd;return this.pos+=8,e}readSFixed64(){let e=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*dd;return this.pos+=8,e}readFloat(){let e=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,e}readDouble(){let e=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,e}readVarint(e){let i=this.buf,o,a;return a=i[this.pos++],o=127&a,a<128?o:(a=i[this.pos++],o|=(127&a)<<7,a<128?o:(a=i[this.pos++],o|=(127&a)<<14,a<128?o:(a=i[this.pos++],o|=(127&a)<<21,a<128?o:(a=i[this.pos],o|=(15&a)<<28,(function(l,u,p){let g=p.buf,m,x;if(x=g[p.pos++],m=(112&x)>>4,x<128||(x=g[p.pos++],m|=(127&x)<<3,x<128)||(x=g[p.pos++],m|=(127&x)<<10,x<128)||(x=g[p.pos++],m|=(127&x)<<17,x<128)||(x=g[p.pos++],m|=(127&x)<<24,x<128)||(x=g[p.pos++],m|=(1&x)<<31,x<128))return As(l,m,u);throw new Error("Expected varint not more than 10 bytes")})(o,e,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){let e=this.readVarint();return e%2==1?(e+1)/-2:e/2}readBoolean(){return!!this.readVarint()}readString(){let e=this.readVarint()+this.pos,i=this.pos;return this.pos=e,e-i>=12&&Df?Df.decode(this.buf.subarray(i,e)):(function(o,a,l){let u="",p=a;for(;p239?4:g>223?3:g>191?2:1;if(p+b>l)break;b===1?g<128&&(T=g):b===2?(m=o[p+1],(192&m)==128&&(T=(31&g)<<6|63&m,T<=127&&(T=null))):b===3?(m=o[p+1],x=o[p+2],(192&m)==128&&(192&x)==128&&(T=(15&g)<<12|(63&m)<<6|63&x,(T<=2047||T>=55296&&T<=57343)&&(T=null))):b===4&&(m=o[p+1],x=o[p+2],_=o[p+3],(192&m)==128&&(192&x)==128&&(192&_)==128&&(T=(15&g)<<18|(63&m)<<12|(63&x)<<6|63&_,(T<=65535||T>=1114112)&&(T=null))),T===null?(T=65533,b=1):T>65535&&(T-=65536,u+=String.fromCharCode(T>>>10&1023|55296),T=56320|1023&T),u+=String.fromCharCode(T),p+=b}return u})(this.buf,i,e)}readBytes(){let e=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,e);return this.pos=e,i}readPackedVarint(e=[],i){let o=this.readPackedEnd();for(;this.pos127;);else if(i===2)this.pos=this.readVarint()+this.pos;else if(i===5)this.pos+=4;else{if(i!==1)throw new Error(`Unimplemented type: ${i}`);this.pos+=8}}writeTag(e,i){this.writeVarint(e<<3|i)}realloc(e){let i=this.length||16;for(;i268435455||e<0?(function(i,o){let a,l;if(i>=0?(a=i%4294967296|0,l=i/4294967296|0):(a=~(-i%4294967296),l=~(-i/4294967296),4294967295^a?a=a+1|0:(a=0,l=l+1|0)),i>=18446744073709552e3||i<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");o.realloc(10),(function(u,p,g){g.buf[g.pos++]=127&u|128,u>>>=7,g.buf[g.pos++]=127&u|128,u>>>=7,g.buf[g.pos++]=127&u|128,u>>>=7,g.buf[g.pos++]=127&u|128,g.buf[g.pos]=127&(u>>>=7)})(a,0,o),(function(u,p){let g=(7&u)<<4;p.buf[p.pos++]|=g|((u>>>=3)?128:0),u&&(p.buf[p.pos++]=127&u|((u>>>=7)?128:0),u&&(p.buf[p.pos++]=127&u|((u>>>=7)?128:0),u&&(p.buf[p.pos++]=127&u|((u>>>=7)?128:0),u&&(p.buf[p.pos++]=127&u|((u>>>=7)?128:0),u&&(p.buf[p.pos++]=127&u)))))})(l,o)})(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))}writeSVarint(e){this.writeVarint(e<0?2*-e-1:2*e)}writeBoolean(e){this.writeVarint(+e)}writeString(e){e=String(e),this.realloc(4*e.length),this.pos++;let i=this.pos;this.pos=(function(a,l,u){for(let p,g,m=0;m55295&&p<57344){if(!g){p>56319||m+1===l.length?(a[u++]=239,a[u++]=191,a[u++]=189):g=p;continue}if(p<56320){a[u++]=239,a[u++]=191,a[u++]=189,g=p;continue}p=g-55296<<10|p-56320|65536,g=null}else g&&(a[u++]=239,a[u++]=191,a[u++]=189,g=null);p<128?a[u++]=p:(p<2048?a[u++]=p>>6|192:(p<65536?a[u++]=p>>12|224:(a[u++]=p>>18|240,a[u++]=p>>12&63|128),a[u++]=p>>6&63|128),a[u++]=63&p|128)}return u})(this.buf,e,this.pos);let o=this.pos-i;o>=128&&zf(i,o,this),this.pos=i-1,this.writeVarint(o),this.pos+=o}writeFloat(e){this.realloc(4),this.dataView.setFloat32(this.pos,e,!0),this.pos+=4}writeDouble(e){this.realloc(8),this.dataView.setFloat64(this.pos,e,!0),this.pos+=8}writeBytes(e){let i=e.length;this.writeVarint(i),this.realloc(i);for(let o=0;o=128&&zf(o,a,this),this.pos=o-1,this.writeVarint(a),this.pos+=a}writeMessage(e,i,o){this.writeTag(e,2),this.writeRawMessage(i,o)}writePackedVarint(e,i){i.length&&this.writeMessage(e,H0,i)}writePackedSVarint(e,i){i.length&&this.writeMessage(e,X0,i)}writePackedBoolean(e,i){i.length&&this.writeMessage(e,J0,i)}writePackedFloat(e,i){i.length&&this.writeMessage(e,Y0,i)}writePackedDouble(e,i){i.length&&this.writeMessage(e,K0,i)}writePackedFixed32(e,i){i.length&&this.writeMessage(e,Q0,i)}writePackedSFixed32(e,i){i.length&&this.writeMessage(e,ey,i)}writePackedFixed64(e,i){i.length&&this.writeMessage(e,ty,i)}writePackedSFixed64(e,i){i.length&&this.writeMessage(e,iy,i)}writeBytesField(e,i){this.writeTag(e,2),this.writeBytes(i)}writeFixed32Field(e,i){this.writeTag(e,5),this.writeFixed32(i)}writeSFixed32Field(e,i){this.writeTag(e,5),this.writeSFixed32(i)}writeFixed64Field(e,i){this.writeTag(e,1),this.writeFixed64(i)}writeSFixed64Field(e,i){this.writeTag(e,1),this.writeSFixed64(i)}writeVarintField(e,i){this.writeTag(e,0),this.writeVarint(i)}writeSVarintField(e,i){this.writeTag(e,0),this.writeSVarint(i)}writeStringField(e,i){this.writeTag(e,2),this.writeString(i)}writeFloatField(e,i){this.writeTag(e,5),this.writeFloat(i)}writeDoubleField(e,i){this.writeTag(e,1),this.writeDouble(i)}writeBooleanField(e,i){this.writeVarintField(e,+i)}}function As(r,e,i){return i?4294967296*e+(r>>>0):4294967296*(e>>>0)+(r>>>0)}function zf(r,e,i){let o=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));i.realloc(o);for(let a=i.pos-1;a>=r;a--)i.buf[a+o]=i.buf[a]}function H0(r,e){for(let i=0;ip.h-u.h));let o=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),i),h:1/0}],a=0,l=0;for(let u of r)for(let p=o.length-1;p>=0;p--){let g=o[p];if(!(u.w>g.w||u.h>g.h)){if(u.x=g.x,u.y=g.y,l=Math.max(l,u.y+u.h),a=Math.max(a,u.x+u.w),u.w===g.w&&u.h===g.h){let m=o.pop();m&&pI.toCodeUnitIndex(K)));let N=L(I.toString(),D);for(let K of N){let Q=[...K].map((()=>0));A.push(new Cs(K,I.sections,Q))}}else if(R){A=[],D=D.map((oe=>I.toCodeUnitIndex(oe)));let N=0,K=[];for(let oe of I.text)K.push(...Array(oe.length).fill(I.sectionIndex[N])),N++;let Q=R(I.text,K,D);for(let oe of Q){let re=[],ce="";for(let ue of oe[0])re.push(oe[1][ce.length]),ce+=ue;A.push(new Cs(oe[0],I.sections,re))}}else A=(function(N,K){let Q=[],oe=0;for(let re of K)Q.push(N.substring(oe,re)),oe=re;return oem){let x=Math.ceil(l/m);a*=x/u,u=x}return{x1:o,y1:a,x2:o+l,y2:a+u}}function Bf(r,e,i,o,a,l){let u=r.image,p;if(u.content){let A=u.content,D=u.pixelRatio||1;p=[A[0]/D,A[1]/D,u.displaySize[0]-A[2]/D,u.displaySize[1]-A[3]/D]}let g=e.left*l,m=e.right*l,x,_,T,b;i==="width"||i==="both"?(b=a[0]+g-o[3],_=a[0]+m+o[1]):(b=a[0]+(g+m-u.displaySize[0])/2,_=b+u.displaySize[0]);let M=e.top*l,I=e.bottom*l;return i==="height"||i==="both"?(x=a[1]+M-o[0],T=a[1]+I+o[2]):(x=a[1]+(M+I-u.displaySize[1])/2,T=x+u.displaySize[1]),{image:u,top:x,right:_,bottom:T,left:b,collisionPadding:p}}Ee("ImagePosition",pd),Ee("ImageAtlas",Rf),k.ax=void 0,(mo=k.ax||(k.ax={}))[mo.none=0]="none",mo[mo.horizontal=1]="horizontal",mo[mo.vertical=2]="vertical",mo[mo.horizontalOnly=3]="horizontalOnly";let kn=128,go=32640;function Of(r,e){let{expression:i}=e;if(i.kind==="constant")return{kind:"constant",layoutSize:i.evaluate(new _t(r+1))};if(i.kind==="source")return{kind:"source"};{let{zoomStops:o,interpolationType:a}=i,l=0;for(;lu.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];let i=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Of(this.zoom,i["text-size"]),this.iconSizeData=Of(this.zoom,i["icon-size"]);let o=this.layers[0].layout,a=o.get("symbol-sort-key"),l=o.get("symbol-z-order");this.canOverlap=md(o,"text-overlap","text-allow-overlap")!=="never"||md(o,"icon-overlap","icon-allow-overlap")!=="never"||o.get("text-ignore-placement")||o.get("icon-ignore-placement"),this.sortFeaturesByKey=l!=="viewport-y"&&!a.isConstant(),this.sortFeaturesByY=(l==="viewport-y"||l==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,o.get("symbol-placement")==="point"&&(this.writingModes=o.get("text-writing-mode").map((u=>k.ax[u]))),this.stateDependentLayerIds=this.layers.filter((u=>u.isStateDependent())).map((u=>u.id)),this.sourceID=e.sourceID}createArrays(){this.text=new _d(new Er(this.layers,this.zoom,(e=>e.startsWith("text")))),this.icon=new _d(new Er(this.layers,this.zoom,(e=>e.startsWith("icon")))),this.glyphOffsetArray=new S,this.lineVertexArray=new P,this.symbolInstances=new w,this.textAnchorOffsets=new C}calculateGlyphDependencies(e,i,o,a,l){for(let u of e)if(i[u.codePointAt(0)]=!0,(o||a)&&l){let p=pc[u];p&&(i[p.codePointAt(0)]=!0)}}populate(e,i,o){var a;let l=this.layers[0],u=l.layout,p=u.get("text-font"),g=u.get("text-field"),m=u.get("icon-image"),x=(g.value.kind!=="constant"||g.value.value instanceof Ci&&!g.value.value.isEmpty()||g.value.value.toString().length>0)&&(p.value.kind!=="constant"||p.value.value.length>0),_=m.value.kind!=="constant"||!!m.value.value||Object.keys(m.parameters).length>0,T=u.get("symbol-sort-key");if(this.features=[],!x&&!_)return;let b=i.iconDependencies,M=i.glyphDependencies,I=i.availableImages,A=new _t(this.zoom);for(let{feature:D,id:L,index:R,sourceLayerIndex:F}of e){let O=l._featureFilter.needGeometry,N=Qr(D,O);if(!l._featureFilter.filter(A,N,o))continue;let K,Q;if(O||(N.geometry=Jr(D)),x){let re=l.getValueAndResolveTokens("text-field",N,o,I),ce=Ci.factory(re);this.hasRTLText||(this.hasRTLText=py(ce)),(!this.hasRTLText||Pr.getRTLTextPluginStatus()==="unavailable"||this.hasRTLText&&Pr.isParsed())&&(K=$0(ce,l,N))}if(_){let re=l.getValueAndResolveTokens("icon-image",N,o,I);Q=re instanceof Bi?re:Bi.fromString(re)}if(!K&&!Q)continue;let oe=this.sortFeaturesByKey?T.evaluate(N,{},o):void 0;if(this.features.push({id:L,text:K,icon:Q,index:R,sourceLayerIndex:F,geometry:N.geometry,properties:D.properties,type:lc.types[D.type],sortKey:oe}),Q&&(b[Q.name]=!0),K){let re=p.evaluate(N,{},o).join(","),ce=u.get("text-rotation-alignment")!=="viewport"&&u.get("symbol-placement")!=="point";this.allowVerticalPlacement=(a=this.writingModes)===null||a===void 0?void 0:a.includes(k.ax.vertical);for(let ue of K.sections)if(ue.image)b[ue.image.name]=!0;else{let ae=Bl(K.toString()),ne=ue.fontStack||re;M[ne]||(M[ne]={}),this.calculateGlyphDependencies(ue.text,M[ne],ce,this.allowVerticalPlacement,ae)}}}u.get("symbol-placement")==="line"&&(this.features=(function(D){let L={},R={},F=[],O=0;function N(re){F.push(D[re]),O++}function K(re,ce,ue){let ae=R[re];return delete R[re],R[ce]=ae,F[ae].geometry[0].pop(),F[ae].geometry[0]=F[ae].geometry[0].concat(ue[0]),ae}function Q(re,ce,ue){let ae=L[ce];return delete L[ce],L[re]=ae,F[ae].geometry[0].shift(),F[ae].geometry[0]=ue[0].concat(F[ae].geometry[0]),ae}function oe(re,ce,ue){let ae=ue?ce[0][ce[0].length-1]:ce[0][0];return`${re}:${ae.x}:${ae.y}`}for(let re=0;rere.geometry))})(this.features)),this.sortFeaturesByKey&&this.features.sort(((D,L)=>D.sortKey-L.sortKey))}update(e,i,o){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,i,this.layers,{imagePositions:o}),this.icon.programConfigurations.updatePaintArrays(e,i,this.layers,{imagePositions:o}))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,i){let o=this.lineVertexArray.length;if(e.segment!==void 0){let a=e.dist(i[e.segment+1]),l=e.dist(i[e.segment]),u={};for(let p=e.segment+1;p=0;p--)u[p]={x:i[p].x,y:i[p].y,tileUnitDistanceFromAnchor:l},p>0&&(l+=i[p-1].dist(i[p]));for(let p=0;p0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,i){let o=e.placedSymbolArray.get(i),a=o.vertexStartIndex+4*o.numGlyphs;for(let l=o.vertexStartIndex;la[p]-a[g]||l[g]-l[p])),u}addToSortKeyRanges(e,i){let o=this.sortKeyRanges[this.sortKeyRanges.length-1];o?.sortKey===i?o.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:i,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let i of this.symbolInstanceIndexes){let o=this.symbolInstances.get(i);this.featureSortOrder.push(o.featureIndex);let a=[o.rightJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.leftJustifiedTextSymbolIndex];for(let l=0;l=0&&a.indexOf(u)===l&&this.addIndicesForPlacedSymbol(this.text,u)}o.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,o.verticalPlacedTextSymbolIndex),o.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,o.placedIconSymbolIndex),o.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,o.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let Vf,jf;Ee("SymbolBucket",Ds,{omit:["layers","collisionBoxArray","features","compareText"]}),Ds.MAX_GLYPHS=65535,Ds.addDynamicAttributes=gd;var xd={get paint(){return jf=jf||new xi({"icon-opacity":new Re(he.paint_symbol["icon-opacity"]),"icon-color":new Re(he.paint_symbol["icon-color"]),"icon-halo-color":new Re(he.paint_symbol["icon-halo-color"]),"icon-halo-width":new Re(he.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Re(he.paint_symbol["icon-halo-blur"]),"icon-translate":new De(he.paint_symbol["icon-translate"]),"icon-translate-anchor":new De(he.paint_symbol["icon-translate-anchor"]),"text-opacity":new Re(he.paint_symbol["text-opacity"]),"text-color":new Re(he.paint_symbol["text-color"],{runtimeType:Fi,getOverride:r=>r.textColor,hasOverride:r=>!!r.textColor}),"text-halo-color":new Re(he.paint_symbol["text-halo-color"]),"text-halo-width":new Re(he.paint_symbol["text-halo-width"]),"text-halo-blur":new Re(he.paint_symbol["text-halo-blur"]),"text-translate":new De(he.paint_symbol["text-translate"]),"text-translate-anchor":new De(he.paint_symbol["text-translate-anchor"])})},get layout(){return Vf=Vf||new xi({"symbol-placement":new De(he.layout_symbol["symbol-placement"]),"symbol-spacing":new De(he.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new De(he.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Re(he.layout_symbol["symbol-sort-key"]),"symbol-z-order":new De(he.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new De(he.layout_symbol["icon-allow-overlap"]),"icon-overlap":new De(he.layout_symbol["icon-overlap"]),"icon-ignore-placement":new De(he.layout_symbol["icon-ignore-placement"]),"icon-optional":new De(he.layout_symbol["icon-optional"]),"icon-rotation-alignment":new De(he.layout_symbol["icon-rotation-alignment"]),"icon-size":new Re(he.layout_symbol["icon-size"]),"icon-text-fit":new De(he.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new De(he.layout_symbol["icon-text-fit-padding"]),"icon-image":new Re(he.layout_symbol["icon-image"]),"icon-rotate":new Re(he.layout_symbol["icon-rotate"]),"icon-padding":new Re(he.layout_symbol["icon-padding"]),"icon-keep-upright":new De(he.layout_symbol["icon-keep-upright"]),"icon-offset":new Re(he.layout_symbol["icon-offset"]),"icon-anchor":new Re(he.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new De(he.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new De(he.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new De(he.layout_symbol["text-rotation-alignment"]),"text-field":new Re(he.layout_symbol["text-field"]),"text-font":new Re(he.layout_symbol["text-font"]),"text-size":new Re(he.layout_symbol["text-size"]),"text-max-width":new Re(he.layout_symbol["text-max-width"]),"text-line-height":new De(he.layout_symbol["text-line-height"]),"text-letter-spacing":new Re(he.layout_symbol["text-letter-spacing"]),"text-justify":new Re(he.layout_symbol["text-justify"]),"text-radial-offset":new Re(he.layout_symbol["text-radial-offset"]),"text-variable-anchor":new De(he.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Re(he.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Re(he.layout_symbol["text-anchor"]),"text-max-angle":new De(he.layout_symbol["text-max-angle"]),"text-writing-mode":new De(he.layout_symbol["text-writing-mode"]),"text-rotate":new Re(he.layout_symbol["text-rotate"]),"text-padding":new De(he.layout_symbol["text-padding"]),"text-keep-upright":new De(he.layout_symbol["text-keep-upright"]),"text-transform":new Re(he.layout_symbol["text-transform"]),"text-offset":new Re(he.layout_symbol["text-offset"]),"text-allow-overlap":new De(he.layout_symbol["text-allow-overlap"]),"text-overlap":new De(he.layout_symbol["text-overlap"]),"text-ignore-placement":new De(he.layout_symbol["text-ignore-placement"]),"text-optional":new De(he.layout_symbol["text-optional"])})}};class Nf{constructor(e){if(e.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:jr,this.defaultValue=e}evaluate(e){if(e.formattedSection){let i=this.defaultValue.property.overrides;if(i?.hasOverride(e.formattedSection))return i.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ee("FormatSectionOverride",Nf,{omit:["defaultValue"]});class $u extends Ki{constructor(e,i){super(e,xd,i)}recalculate(e,i){if(super.recalculate(e,i),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let o=this.layout.get("text-writing-mode");if(o){let a=[];for(let l of o)a.includes(l)||a.push(l);this.layout._values["text-writing-mode"]=a}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,i,o,a){let l=this.layout.get(e).evaluate(i,{},o,a),u=this._unevaluatedLayout._values[e];return u.isDataDriven()||Qa(u.value)||!l?l:(function(p,g){return g.replace(/{([^{}]+)}/g,((m,x)=>p&&x in p?String(p[x]):""))})(i.properties,l)}createBucket(e){return new Ds(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let e of xd.paint.overridableProperties){if(!$u.hasPaintOverride(this.layout,e))continue;let i=this.paint.get(e),o=new Nf(i),a=new qo(o,i.property.specification),l=null;l=i.value.kind==="constant"||i.value.kind==="source"?new es("source",a):new ts("composite",a,i.value.zoomStops),this.paint._values[e]=new cr(i.property,l,i.parameters)}}_handleOverridablePaintPropertyUpdate(e,i,o){return!(!this.layout||i.isDataDriven()||o.isDataDriven())&&$u.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,i){let o=e.get("text-field"),a=xd.paint.properties[i],l=!1,u=p=>{var g;for(let m of p)if(!((g=a.overrides)===null||g===void 0)&&g.hasOverride(m))return void(l=!0)};if(o.value.kind==="constant"&&o.value.value instanceof Ci)u(o.value.value.sections);else if(o.value.kind==="source"||o.value.kind==="composite"){let p=m=>{l||(m instanceof dr&&Rt(m.value)===zo?u(m.value.sections):m instanceof xn?u(m.sections):m.eachChild(p))},g=o.value;g._styleExpression&&p(g._styleExpression.expression)}return l}}let Uf;var fy={get paint(){return Uf=Uf||new xi({"background-color":new De(he.paint_background["background-color"]),"background-pattern":new Su(he.paint_background["background-pattern"]),"background-opacity":new De(he.paint_background["background-opacity"])})}};class my extends Ki{constructor(e,i){super(e,fy,i)}}class gy extends Ki{constructor(e,i){super(e,{},i),this.onAdd=o=>{this.implementation.onAdd&&this.implementation.onAdd(o,o.painter.context.gl)},this.onRemove=o=>{this.implementation.onRemove&&this.implementation.onRemove(o,o.painter.context.gl)},this.implementation=e}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class _y{constructor(e){this._methodToThrottle=e,this._triggered=!1,this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()}}trigger(){var e;this._triggered||(this._triggered=!0,(e=this._channel)===null||e===void 0||e.port1.postMessage(!0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let yy={once:!0},vd=63710088e-1;class _o{constructor(e,i){if(isNaN(e)||isNaN(i))throw new Error(`Invalid LngLat object: (${e}, ${i})`);if(this.lng=+e,this.lat=+i,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new _o(Vn(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){let i=Math.PI/180,o=this.lat*i,a=e.lat*i,l=Math.sin(o)*Math.sin(a)+Math.cos(o)*Math.cos(a)*Math.cos((e.lng-this.lng)*i);return vd*Math.acos(Math.min(l,1))}static convert(e){if(e instanceof _o)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new _o(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new _o(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let Gf=2*Math.PI*vd;function $f(r){return Gf*Math.cos(r*Math.PI/180)}function Zf(r){return(180+r)/360}function qf(r){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360}function Wf(r,e){return r/$f(e)}function Hf(r){return 360*r-180}function Zu(r){return 360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90}function Xf(r,e){return r*$f(Zu(e))}class fc{constructor(e,i,o=0){this.x=+e,this.y=+i,this.z=+o}static fromLngLat(e,i=0){let o=_o.convert(e);return new fc(Zf(o.lng),qf(o.lat),Wf(i,o.lat))}toLngLat(){return new _o(Hf(this.x),Zu(this.y))}toAltitude(){return Xf(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Gf*(e=Zu(this.y),1/Math.cos(e*Math.PI/180));var e}}function Yf(r,e,i){var o=2*Math.PI*6378137/256/Math.pow(2,i);return[r*o-2*Math.PI*6378137/2,e*o-2*Math.PI*6378137/2]}class bd{constructor(e,i,o){if(!(function(a,l,u){return!(a<0||a>25||u<0||u>=Math.pow(2,a)||l<0||l>=Math.pow(2,a))})(e,i,o))throw new Error(`x=${i}, y=${o}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);this.z=e,this.x=i,this.y=o,this.key=zs(0,e,e,i,o)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,i,o){let a=(u=this.y,p=this.z,g=Yf(256*(l=this.x),256*(u=Math.pow(2,p)-u-1),p),m=Yf(256*(l+1),256*(u+1),p),g[0]+","+g[1]+","+m[0]+","+m[1]);var l,u,p,g,m;let x=(function(_,T,b){let M="";for(let I=_;I>0;I--){let A=1<1?"@2x":"").replace(/{quadkey}/g,x).replace(/{bbox-epsg-3857}/g,a)}isChildOf(e){let i=this.z-e.z;return i>0&&e.x===this.x>>i&&e.y===this.y>>i}getTilePoint(e){let i=Math.pow(2,this.z);return new fe((e.x*i-this.x)*Fe,(e.y*i-this.y)*Fe)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Kf{constructor(e,i){this.wrap=e,this.canonical=i,this.key=zs(e,i.z,i.z,i.x,i.y)}}class Qi{constructor(e,i,o,a,l){if(this.terrainRttPosMatrix32f=null,e= z; overscaledZ = ${e}; z = ${o}`);this.overscaledZ=e,this.wrap=i,this.canonical=new bd(o,+a,+l),this.key=zs(i,e,o,a,l)}clone(){return new Qi(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);let i=this.canonical.z-e;return e>this.canonical.z?new Qi(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Qi(e,this.wrap,e,this.canonical.x>>i,this.canonical.y>>i)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(e,i){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);let o=this.canonical.z-e;return e>this.canonical.z?zs(this.wrap*+i,e,this.canonical.z,this.canonical.x,this.canonical.y):zs(this.wrap*+i,e,e,this.canonical.x>>o,this.canonical.y>>o)}isChildOf(e){if(e.wrap!==this.wrap||this.overscaledZ-e.overscaledZ<=0)return!1;if(e.overscaledZ===0)return this.overscaledZ>0;let i=this.canonical.z-e.canonical.z;return!(i<0)&&e.canonical.x===this.canonical.x>>i&&e.canonical.y===this.canonical.y>>i}children(e){if(this.overscaledZ>=e)return[new Qi(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let i=this.canonical.z+1,o=2*this.canonical.x,a=2*this.canonical.y;return[new Qi(i,this.wrap,i,o,a),new Qi(i,this.wrap,i,o+1,a),new Qi(i,this.wrap,i,o,a+1),new Qi(i,this.wrap,i,o+1,a+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.y=0&&e=0&&i=m)return null;let _=this.canonical.x+a,T=this.wrap;return _<0?(T-=Math.ceil(-_/m),_=(_%m+m)%m):_>=m&&(T+=Math.floor(_/m),_%=m),{tileID:new Qi(this.overscaledZ,T,g,_,x),x:u,y:p}}}function zs(r,e,i,o,a){(r*=2)<0&&(r=-1*r-1);let l=1<this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(e){return this.expandBy(-e)}map(e){let i=new ma;return i.extend(e(new fe(this.minX,this.minY))),i.extend(e(new fe(this.maxX,this.minY))),i.extend(e(new fe(this.minX,this.maxY))),i.extend(e(new fe(this.maxX,this.maxY))),i}static fromPoints(e){let i=new ma;for(let o of e)i.extend(o);return i}contains(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(e){return!this.empty()&&!e.empty()&&e.minX>=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY}intersects(e){return!this.empty()&&!e.empty()&&e.minX<=this.maxX&&e.maxX>=this.minX&&e.minY<=this.maxY&&e.maxY>=this.minY}}class Jf{constructor(e){this._stringToNumber={},this._numberToString=[];for(let i=0;i=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}}class Qf{constructor(e,i,o,a,l){this.type="Feature",this._vectorTileFeature=e,this._x=o,this._y=a,this._z=i,this.properties=e.properties,this.id=l}projectPoint(e,i,o,a){return[360*(e.x+i)/a-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+o)/a)*Math.PI))-90]}projectLine(e,i,o,a){return e.map((l=>this.projectPoint(l,i,o,a)))}get geometry(){if(this._geometry)return this._geometry;let e=this._vectorTileFeature,i=e.extent*Math.pow(2,this._z),o=e.extent*this._x,a=e.extent*this._y,l=e.loadGeometry();switch(e.type){case 1:{let u=[];for(let g of l)u.push(g[0]);let p=this.projectLine(u,o,a,i);this._geometry=u.length===1?{type:"Point",coordinates:p[0]}:{type:"MultiPoint",coordinates:p};break}case 2:{let u=l.map((p=>this.projectLine(p,o,a,i)));this._geometry=u.length===1?{type:"LineString",coordinates:u[0]}:{type:"MultiLineString",coordinates:u};break}case 3:{let u=tf(l),p=[];for(let g of u)p.push(g.map((m=>this.projectLine(m,o,a,i))));this._geometry=p.length===1?{type:"Polygon",coordinates:p[0]}:{type:"MultiPolygon",coordinates:p};break}default:throw new Error(`unknown feature type: ${e.type}`)}return this._geometry}set geometry(e){this._geometry=e}toJSON(){let e={geometry:this.geometry};for(let i in this)i!=="_geometry"&&i!=="_vectorTileFeature"&&i!=="_x"&&i!=="_y"&&i!=="_z"&&(e[i]=this[i]);return e}}class ks{constructor(e,i,o){this._name=e,this.dataBuffer=i,typeof o=="number"?this._size=o:(this.nullabilityBuffer=o,this._size=o.size())}getValue(e){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(e)?null:this.getValueFromBuffer(e)}has(e){return this.nullabilityBuffer?.get(e)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class qu extends ks{}class wd extends qu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Td extends qu{getValueFromBuffer(e){return this.dataBuffer[e]}}class em extends ks{constructor(e,i,o,a){super(e,i,a),this.delta=o}}class Sd extends em{constructor(e,i,o,a){super(e,Int32Array.of(i),o,a)}getValueFromBuffer(e){return this.dataBuffer[0]+e*this.delta}}class Pd extends ks{constructor(e,i,o,a){super(e,a?Int32Array.of(i):Uint32Array.of(i),o)}getValueFromBuffer(e){return this.dataBuffer[0]}}class xy{constructor(e,i,o,a,l=4096){this._name=e,this._geometryVector=i,this._idVector=o,this._propertyVectors=a,this._extent=l}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(e){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map((i=>[i.name,i])))),this.propertyVectorsMap.get(e)}get numFeatures(){return this.geometryVector.numGeometries}get extent(){return this._extent}getFeatures(){let e=[],i=this.geometryVector.getGeometries();for(let o=0;o>>32-r;let Id=Md,Rn=256;function Ed(r,e){return r-r%e}function vy(r){let e=r>>>0;return((255&e)<<24|(65280&e)<<8|e>>>8&65280|e>>>24&255)>>>0}let Cd=(function(){if(!Number.isFinite(65536))return 65536;let r=Ed(Math.floor(65536),Rn);return r===0?Rn:r})(),by=3*Cd/Rn+Cd|0;function im(){let r=new Uint8Array(by);return{dataToBePacked:new Array(33),dataPointers:new Int32Array(33),byteContainer:r,byteContainerI32:new Int32Array(r.buffer,r.byteOffset,r.byteLength>>>2),exceptionSizes:new Int32Array(33)}}function wy(r,e,i,o,a){switch(a){case 1:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0;p[m++]=T>>>0&1,p[m++]=T>>>1&1,p[m++]=T>>>2&1,p[m++]=T>>>3&1,p[m++]=T>>>4&1,p[m++]=T>>>5&1,p[m++]=T>>>6&1,p[m++]=T>>>7&1,p[m++]=T>>>8&1,p[m++]=T>>>9&1,p[m++]=T>>>10&1,p[m++]=T>>>11&1,p[m++]=T>>>12&1,p[m++]=T>>>13&1,p[m++]=T>>>14&1,p[m++]=T>>>15&1,p[m++]=T>>>16&1,p[m++]=T>>>17&1,p[m++]=T>>>18&1,p[m++]=T>>>19&1,p[m++]=T>>>20&1,p[m++]=T>>>21&1,p[m++]=T>>>22&1,p[m++]=T>>>23&1,p[m++]=T>>>24&1,p[m++]=T>>>25&1,p[m++]=T>>>26&1,p[m++]=T>>>27&1,p[m++]=T>>>28&1,p[m++]=T>>>29&1,p[m++]=T>>>30&1,p[m++]=T>>>31&1}})(r,e,i,o);break;case 2:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0;p[m++]=T>>>0&3,p[m++]=T>>>2&3,p[m++]=T>>>4&3,p[m++]=T>>>6&3,p[m++]=T>>>8&3,p[m++]=T>>>10&3,p[m++]=T>>>12&3,p[m++]=T>>>14&3,p[m++]=T>>>16&3,p[m++]=T>>>18&3,p[m++]=T>>>20&3,p[m++]=T>>>22&3,p[m++]=T>>>24&3,p[m++]=T>>>26&3,p[m++]=T>>>28&3,p[m++]=T>>>30&3,p[m++]=b>>>0&3,p[m++]=b>>>2&3,p[m++]=b>>>4&3,p[m++]=b>>>6&3,p[m++]=b>>>8&3,p[m++]=b>>>10&3,p[m++]=b>>>12&3,p[m++]=b>>>14&3,p[m++]=b>>>16&3,p[m++]=b>>>18&3,p[m++]=b>>>20&3,p[m++]=b>>>22&3,p[m++]=b>>>24&3,p[m++]=b>>>26&3,p[m++]=b>>>28&3,p[m++]=b>>>30&3}})(r,e,i,o);break;case 3:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0;p[m++]=T>>>0&7,p[m++]=T>>>3&7,p[m++]=T>>>6&7,p[m++]=T>>>9&7,p[m++]=T>>>12&7,p[m++]=T>>>15&7,p[m++]=T>>>18&7,p[m++]=T>>>21&7,p[m++]=T>>>24&7,p[m++]=T>>>27&7,p[m++]=7&(T>>>30|(1&b)<<2),p[m++]=b>>>1&7,p[m++]=b>>>4&7,p[m++]=b>>>7&7,p[m++]=b>>>10&7,p[m++]=b>>>13&7,p[m++]=b>>>16&7,p[m++]=b>>>19&7,p[m++]=b>>>22&7,p[m++]=b>>>25&7,p[m++]=b>>>28&7,p[m++]=7&(b>>>31|(3&M)<<1),p[m++]=M>>>2&7,p[m++]=M>>>5&7,p[m++]=M>>>8&7,p[m++]=M>>>11&7,p[m++]=M>>>14&7,p[m++]=M>>>17&7,p[m++]=M>>>20&7,p[m++]=M>>>23&7,p[m++]=M>>>26&7,p[m++]=M>>>29&7}})(r,e,i,o);break;case 4:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0,I=l[x++]>>>0;p[m++]=T>>>0&15,p[m++]=T>>>4&15,p[m++]=T>>>8&15,p[m++]=T>>>12&15,p[m++]=T>>>16&15,p[m++]=T>>>20&15,p[m++]=T>>>24&15,p[m++]=T>>>28&15,p[m++]=b>>>0&15,p[m++]=b>>>4&15,p[m++]=b>>>8&15,p[m++]=b>>>12&15,p[m++]=b>>>16&15,p[m++]=b>>>20&15,p[m++]=b>>>24&15,p[m++]=b>>>28&15,p[m++]=M>>>0&15,p[m++]=M>>>4&15,p[m++]=M>>>8&15,p[m++]=M>>>12&15,p[m++]=M>>>16&15,p[m++]=M>>>20&15,p[m++]=M>>>24&15,p[m++]=M>>>28&15,p[m++]=I>>>0&15,p[m++]=I>>>4&15,p[m++]=I>>>8&15,p[m++]=I>>>12&15,p[m++]=I>>>16&15,p[m++]=I>>>20&15,p[m++]=I>>>24&15,p[m++]=I>>>28&15}})(r,e,i,o);break;case 5:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0,I=l[x++]>>>0,A=l[x++]>>>0;p[m++]=T>>>0&31,p[m++]=T>>>5&31,p[m++]=T>>>10&31,p[m++]=T>>>15&31,p[m++]=T>>>20&31,p[m++]=T>>>25&31,p[m++]=31&(T>>>30|(7&b)<<2),p[m++]=b>>>3&31,p[m++]=b>>>8&31,p[m++]=b>>>13&31,p[m++]=b>>>18&31,p[m++]=b>>>23&31,p[m++]=31&(b>>>28|(1&M)<<4),p[m++]=M>>>1&31,p[m++]=M>>>6&31,p[m++]=M>>>11&31,p[m++]=M>>>16&31,p[m++]=M>>>21&31,p[m++]=M>>>26&31,p[m++]=31&(M>>>31|(15&I)<<1),p[m++]=I>>>4&31,p[m++]=I>>>9&31,p[m++]=I>>>14&31,p[m++]=I>>>19&31,p[m++]=I>>>24&31,p[m++]=31&(I>>>29|(3&A)<<3),p[m++]=A>>>2&31,p[m++]=A>>>7&31,p[m++]=A>>>12&31,p[m++]=A>>>17&31,p[m++]=A>>>22&31,p[m++]=A>>>27&31}})(r,e,i,o);break;case 6:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0,I=l[x++]>>>0,A=l[x++]>>>0,D=l[x++]>>>0;p[m++]=T>>>0&63,p[m++]=T>>>6&63,p[m++]=T>>>12&63,p[m++]=T>>>18&63,p[m++]=T>>>24&63,p[m++]=63&(T>>>30|(15&b)<<2),p[m++]=b>>>4&63,p[m++]=b>>>10&63,p[m++]=b>>>16&63,p[m++]=b>>>22&63,p[m++]=63&(b>>>28|(3&M)<<4),p[m++]=M>>>2&63,p[m++]=M>>>8&63,p[m++]=M>>>14&63,p[m++]=M>>>20&63,p[m++]=M>>>26&63,p[m++]=I>>>0&63,p[m++]=I>>>6&63,p[m++]=I>>>12&63,p[m++]=I>>>18&63,p[m++]=I>>>24&63,p[m++]=63&(I>>>30|(15&A)<<2),p[m++]=A>>>4&63,p[m++]=A>>>10&63,p[m++]=A>>>16&63,p[m++]=A>>>22&63,p[m++]=63&(A>>>28|(3&D)<<4),p[m++]=D>>>2&63,p[m++]=D>>>8&63,p[m++]=D>>>14&63,p[m++]=D>>>20&63,p[m++]=D>>>26&63}})(r,e,i,o);break;case 7:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0,I=l[x++]>>>0,A=l[x++]>>>0,D=l[x++]>>>0,L=l[x++]>>>0;p[m++]=T>>>0&127,p[m++]=T>>>7&127,p[m++]=T>>>14&127,p[m++]=T>>>21&127,p[m++]=127&(T>>>28|(7&b)<<4),p[m++]=b>>>3&127,p[m++]=b>>>10&127,p[m++]=b>>>17&127,p[m++]=b>>>24&127,p[m++]=127&(b>>>31|(63&M)<<1),p[m++]=M>>>6&127,p[m++]=M>>>13&127,p[m++]=M>>>20&127,p[m++]=127&(M>>>27|(3&I)<<5),p[m++]=I>>>2&127,p[m++]=I>>>9&127,p[m++]=I>>>16&127,p[m++]=I>>>23&127,p[m++]=127&(I>>>30|(31&A)<<2),p[m++]=A>>>5&127,p[m++]=A>>>12&127,p[m++]=A>>>19&127,p[m++]=127&(A>>>26|(1&D)<<6),p[m++]=D>>>1&127,p[m++]=D>>>8&127,p[m++]=D>>>15&127,p[m++]=D>>>22&127,p[m++]=127&(D>>>29|(15&L)<<3),p[m++]=L>>>4&127,p[m++]=L>>>11&127,p[m++]=L>>>18&127,p[m++]=L>>>25&127}})(r,e,i,o);break;case 8:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<8;_++){let T=l[x++]>>>0,b=l[x++]>>>0,M=l[x++]>>>0,I=l[x++]>>>0,A=l[x++]>>>0,D=l[x++]>>>0,L=l[x++]>>>0,R=l[x++]>>>0;p[m++]=T>>>0&255,p[m++]=T>>>8&255,p[m++]=T>>>16&255,p[m++]=T>>>24&255,p[m++]=b>>>0&255,p[m++]=b>>>8&255,p[m++]=b>>>16&255,p[m++]=b>>>24&255,p[m++]=M>>>0&255,p[m++]=M>>>8&255,p[m++]=M>>>16&255,p[m++]=M>>>24&255,p[m++]=I>>>0&255,p[m++]=I>>>8&255,p[m++]=I>>>16&255,p[m++]=I>>>24&255,p[m++]=A>>>0&255,p[m++]=A>>>8&255,p[m++]=A>>>16&255,p[m++]=A>>>24&255,p[m++]=D>>>0&255,p[m++]=D>>>8&255,p[m++]=D>>>16&255,p[m++]=D>>>24&255,p[m++]=L>>>0&255,p[m++]=L>>>8&255,p[m++]=L>>>16&255,p[m++]=L>>>24&255,p[m++]=R>>>0&255,p[m++]=R>>>8&255,p[m++]=R>>>16&255,p[m++]=R>>>24&255}})(r,e,i,o);break;case 16:(function(l,u,p,g){let m=g,x=u;for(let _=0;_<128;_++){let T=l[x++]>>>0;p[m++]=65535&T,p[m++]=T>>>16&65535}})(r,e,i,o);break;default:(function(l,u,p,g,m){let x=Id[m]>>>0,_=u,T=0,b=l[_]>>>0,M=g;for(let I=0;I<8;I++){for(let A=0;A<32;A++)if(T+m<=32)p[M+A]=b>>>T&x,T+=m,T===32&&(T=0,_++,A!==31&&(b=l[_]>>>0));else{let D=32-T,L=b>>>T;_++,b=l[_]>>>0;let R=m-D;p[M+A]=(L|(b&-1>>>32-R>>>0)<>>0)}})(r,e,i,o,a)}return e+(a<<3)|0}function Ty(r,e,i,o){if(i+2>e)throw new Error(`FastPFOR decode: byteContainer underflow at block=${o} (need 2 bytes for [bitWidth, exceptionCount], bytePos=${i}, byteSize=${e})`);let a=r[i++],l=r[i++];if(a>32)throw new Error(`FastPFOR decode: invalid bitWidth=${a} at block=${o} (expected 0..32). This likely indicates corrupted or truncated input.`);return{bitWidth:a,exceptionCount:l,bytePosIn:i}}function Sy(r,e,i,o,a,l,u,p,g){let{maxBits:m,exceptionBitWidth:x,bytePosIn:_}=(function(A,D,L,R,F,O){if(L+1>D)throw new Error(`FastPFOR decode: exception header underflow at block=${O} (need 1 byte for maxBits, bytePos=${L}, byteSize=${D})`);let N=A[L++];if(N32)throw new Error(`FastPFOR decode: invalid maxBits=${N} at block=${O} (bitWidth=${R}, expected ${R}..32)`);let K=N-R|0;if(K<1||K>32)throw new Error(`FastPFOR decode: invalid exceptionBitWidth=${K} at block=${O} (bitWidth=${R}, maxBits=${N})`);if(L+F>D)throw new Error(`FastPFOR decode: exception positions underflow at block=${O} (need=${F}, have=${D-L})`);return{maxBits:N,exceptionBitWidth:K,bytePosIn:L}})(a,l,u,i,o,g);if(u=_,x===1){let A=1<I)throw new Error(`FastPFOR decode: exception stream overflow for exceptionBitWidth=${x} (ptr=${M}, need ${o}, size=${I}) at block ${g}`);for(let A=0;Ar.length-1)throw new Error(`FastPFOR decode: invalid whereMeta=${p} at pageStart=${u} (expected > 0 and pageStart+whereMeta < encoded.length=${r.length})`);let g=u+1|0,m=u+p|0,x=r[m]>>>0,_=x+3>>>2,T=m+1,b=T+_;if(b>=r.length)throw new Error(`FastPFOR decode: invalid byteSize=${x} (metaInts=${_}, pageStart=${u}, packedEnd=${m}, byteContainerStart=${T}) causes bitmapPos=${b} out of bounds (encoded.length=${r.length})`);let M=(function(D,L,R,F){F.byteContainer.length>>2;if(3&O.byteOffset)for(let Q=0;Q>>8&255,O[re+2|0]=oe>>>16&255,O[re+3|0]=oe>>>24&255}else{let Q=F.byteContainerI32;(!Q||Q.buffer!==O.buffer||Q.byteOffset!==O.byteOffset||Q.length>>2)),Q.set(D.subarray(L,L+N))}let K=3&R;if(K>0){let Q=0|D[L+N|0],oe=N<<2;for(let re=0;re>>(re<<3)&255}return O})(r,T,x,l),I=x,A=(function(D,L,R){let F=0|D[L++],O=R.dataToBePacked;for(let N=2;N<=32;N=N+1|0){if(!(F>>>N-1&1))continue;if(L>=D.length)throw new Error(`FastPFOR decode: truncated exception stream header (bitWidth=${N}, streamWordIndex=${L}, needWords=1, availableWords=${D.length-L}, encodedWords=${D.length})`);let K=D[L++]>>>0,Q=Ed(K+31,32),oe=K*N+31>>>5;if(L+oe>D.length)throw new Error(`FastPFOR decode: truncated exception stream (bitWidth=${N}, size=${K}, streamWordIndex=${L}, needWords=${oe}, availableWords=${D.length-L}, encodedWords=${D.length})`);let re=O[N];(!re||re.length>>5)|0,R.exceptionSizes[N]=K}return L})(r,b,l);return l.dataPointers.fill(0),(function(D,L,R,F,O,N,K,Q,oe,re){let ce=0|R,ue=0;for(let ae=0;ae0&&(ue=Sy(O,we,ye,Pe,Q,oe,ue,re,ae))}if(ce!==F)throw new Error(`FastPFOR decode: packed region mismatch (pageStart=${L}, packedStart=${R}, consumedPackedEnd=${ce}, expectedPackedEnd=${F}, packedWords=${F-R}, encoded.length=${D.length})`)})(r,u,g,m,e,0|o,a/Rn|0,M,I,l),A}function My(r,e,i,o,a){switch(a){case 2:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0;_[b++]=M>>>0&3,_[b++]=M>>>2&3,_[b++]=M>>>4&3,_[b++]=M>>>6&3,_[b++]=M>>>8&3,_[b++]=M>>>10&3,_[b++]=M>>>12&3,_[b++]=M>>>14&3,_[b++]=M>>>16&3,_[b++]=M>>>18&3,_[b++]=M>>>20&3,_[b++]=M>>>22&3,_[b++]=M>>>24&3,_[b++]=M>>>26&3,_[b++]=M>>>28&3,_[b++]=M>>>30&3,_[b++]=I>>>0&3,_[b++]=I>>>2&3,_[b++]=I>>>4&3,_[b++]=I>>>6&3,_[b++]=I>>>8&3,_[b++]=I>>>10&3,_[b++]=I>>>12&3,_[b++]=I>>>14&3,_[b++]=I>>>16&3,_[b++]=I>>>18&3,_[b++]=I>>>20&3,_[b++]=I>>>22&3,_[b++]=I>>>24&3,_[b++]=I>>>26&3,_[b++]=I>>>28&3,_[b]=I>>>30&3})(r,e,i,o);case 3:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0;_[b++]=M>>>0&7,_[b++]=M>>>3&7,_[b++]=M>>>6&7,_[b++]=M>>>9&7,_[b++]=M>>>12&7,_[b++]=M>>>15&7,_[b++]=M>>>18&7,_[b++]=M>>>21&7,_[b++]=M>>>24&7,_[b++]=M>>>27&7,_[b++]=7&(M>>>30|(1&I)<<2),_[b++]=I>>>1&7,_[b++]=I>>>4&7,_[b++]=I>>>7&7,_[b++]=I>>>10&7,_[b++]=I>>>13&7,_[b++]=I>>>16&7,_[b++]=I>>>19&7,_[b++]=I>>>22&7,_[b++]=I>>>25&7,_[b++]=I>>>28&7,_[b++]=7&(I>>>31|(3&A)<<1),_[b++]=A>>>2&7,_[b++]=A>>>5&7,_[b++]=A>>>8&7,_[b++]=A>>>11&7,_[b++]=A>>>14&7,_[b++]=A>>>17&7,_[b++]=A>>>20&7,_[b++]=A>>>23&7,_[b++]=A>>>26&7,_[b]=A>>>29&7})(r,e,i,o);case 4:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0;_[b++]=M>>>0&15,_[b++]=M>>>4&15,_[b++]=M>>>8&15,_[b++]=M>>>12&15,_[b++]=M>>>16&15,_[b++]=M>>>20&15,_[b++]=M>>>24&15,_[b++]=M>>>28&15,_[b++]=I>>>0&15,_[b++]=I>>>4&15,_[b++]=I>>>8&15,_[b++]=I>>>12&15,_[b++]=I>>>16&15,_[b++]=I>>>20&15,_[b++]=I>>>24&15,_[b++]=I>>>28&15,_[b++]=A>>>0&15,_[b++]=A>>>4&15,_[b++]=A>>>8&15,_[b++]=A>>>12&15,_[b++]=A>>>16&15,_[b++]=A>>>20&15,_[b++]=A>>>24&15,_[b++]=A>>>28&15,_[b++]=D>>>0&15,_[b++]=D>>>4&15,_[b++]=D>>>8&15,_[b++]=D>>>12&15,_[b++]=D>>>16&15,_[b++]=D>>>20&15,_[b++]=D>>>24&15,_[b]=D>>>28&15})(r,e,i,o);case 5:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0;_[b++]=M>>>0&31,_[b++]=M>>>5&31,_[b++]=M>>>10&31,_[b++]=M>>>15&31,_[b++]=M>>>20&31,_[b++]=M>>>25&31,_[b++]=31&(M>>>30|(7&I)<<2),_[b++]=I>>>3&31,_[b++]=I>>>8&31,_[b++]=I>>>13&31,_[b++]=I>>>18&31,_[b++]=I>>>23&31,_[b++]=31&(I>>>28|(1&A)<<4),_[b++]=A>>>1&31,_[b++]=A>>>6&31,_[b++]=A>>>11&31,_[b++]=A>>>16&31,_[b++]=A>>>21&31,_[b++]=A>>>26&31,_[b++]=31&(A>>>31|(15&D)<<1),_[b++]=D>>>4&31,_[b++]=D>>>9&31,_[b++]=D>>>14&31,_[b++]=D>>>19&31,_[b++]=D>>>24&31,_[b++]=31&(D>>>29|(3&L)<<3),_[b++]=L>>>2&31,_[b++]=L>>>7&31,_[b++]=L>>>12&31,_[b++]=L>>>17&31,_[b++]=L>>>22&31,_[b]=L>>>27&31})(r,e,i,o);case 6:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0;_[b++]=M>>>0&63,_[b++]=M>>>6&63,_[b++]=M>>>12&63,_[b++]=M>>>18&63,_[b++]=M>>>24&63,_[b++]=63&(M>>>30|(15&I)<<2),_[b++]=I>>>4&63,_[b++]=I>>>10&63,_[b++]=I>>>16&63,_[b++]=I>>>22&63,_[b++]=63&(I>>>28|(3&A)<<4),_[b++]=A>>>2&63,_[b++]=A>>>8&63,_[b++]=A>>>14&63,_[b++]=A>>>20&63,_[b++]=A>>>26&63,_[b++]=D>>>0&63,_[b++]=D>>>6&63,_[b++]=D>>>12&63,_[b++]=D>>>18&63,_[b++]=D>>>24&63,_[b++]=63&(D>>>30|(15&L)<<2),_[b++]=L>>>4&63,_[b++]=L>>>10&63,_[b++]=L>>>16&63,_[b++]=L>>>22&63,_[b++]=63&(L>>>28|(3&R)<<4),_[b++]=R>>>2&63,_[b++]=R>>>8&63,_[b++]=R>>>14&63,_[b++]=R>>>20&63,_[b]=R>>>26&63})(r,e,i,o);case 7:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0;_[b++]=M>>>0&127,_[b++]=M>>>7&127,_[b++]=M>>>14&127,_[b++]=M>>>21&127,_[b++]=127&(M>>>28|(7&I)<<4),_[b++]=I>>>3&127,_[b++]=I>>>10&127,_[b++]=I>>>17&127,_[b++]=I>>>24&127,_[b++]=127&(I>>>31|(63&A)<<1),_[b++]=A>>>6&127,_[b++]=A>>>13&127,_[b++]=A>>>20&127,_[b++]=127&(A>>>27|(3&D)<<5),_[b++]=D>>>2&127,_[b++]=D>>>9&127,_[b++]=D>>>16&127,_[b++]=D>>>23&127,_[b++]=127&(D>>>30|(31&L)<<2),_[b++]=L>>>5&127,_[b++]=L>>>12&127,_[b++]=L>>>19&127,_[b++]=127&(L>>>26|(1&R)<<6),_[b++]=R>>>1&127,_[b++]=R>>>8&127,_[b++]=R>>>15&127,_[b++]=R>>>22&127,_[b++]=127&(R>>>29|(15&F)<<3),_[b++]=F>>>4&127,_[b++]=F>>>11&127,_[b++]=F>>>18&127,_[b]=F>>>25&127})(r,e,i,o);case 8:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0;_[b++]=M>>>0&255,_[b++]=M>>>8&255,_[b++]=M>>>16&255,_[b++]=M>>>24&255,_[b++]=I>>>0&255,_[b++]=I>>>8&255,_[b++]=I>>>16&255,_[b++]=I>>>24&255,_[b++]=A>>>0&255,_[b++]=A>>>8&255,_[b++]=A>>>16&255,_[b++]=A>>>24&255,_[b++]=D>>>0&255,_[b++]=D>>>8&255,_[b++]=D>>>16&255,_[b++]=D>>>24&255,_[b++]=L>>>0&255,_[b++]=L>>>8&255,_[b++]=L>>>16&255,_[b++]=L>>>24&255,_[b++]=R>>>0&255,_[b++]=R>>>8&255,_[b++]=R>>>16&255,_[b++]=R>>>24&255,_[b++]=F>>>0&255,_[b++]=F>>>8&255,_[b++]=F>>>16&255,_[b++]=F>>>24&255,_[b++]=O>>>0&255,_[b++]=O>>>8&255,_[b++]=O>>>16&255,_[b]=O>>>24&255})(r,e,i,o);case 9:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0,N=m[x+8]>>>0;_[b++]=M>>>0&511,_[b++]=M>>>9&511,_[b++]=M>>>18&511,_[b++]=511&(M>>>27|(15&I)<<5),_[b++]=I>>>4&511,_[b++]=I>>>13&511,_[b++]=I>>>22&511,_[b++]=511&(I>>>31|(255&A)<<1),_[b++]=A>>>8&511,_[b++]=A>>>17&511,_[b++]=511&(A>>>26|(7&D)<<6),_[b++]=D>>>3&511,_[b++]=D>>>12&511,_[b++]=D>>>21&511,_[b++]=511&(D>>>30|(127&L)<<2),_[b++]=L>>>7&511,_[b++]=L>>>16&511,_[b++]=511&(L>>>25|(3&R)<<7),_[b++]=R>>>2&511,_[b++]=R>>>11&511,_[b++]=R>>>20&511,_[b++]=511&(R>>>29|(63&F)<<3),_[b++]=F>>>6&511,_[b++]=F>>>15&511,_[b++]=511&(F>>>24|(1&O)<<8),_[b++]=O>>>1&511,_[b++]=O>>>10&511,_[b++]=O>>>19&511,_[b++]=511&(O>>>28|(31&N)<<4),_[b++]=N>>>5&511,_[b++]=N>>>14&511,_[b]=N>>>23&511})(r,e,i,o);case 10:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0,N=m[x+8]>>>0,K=m[x+9]>>>0;_[b++]=M>>>0&1023,_[b++]=M>>>10&1023,_[b++]=M>>>20&1023,_[b++]=1023&(M>>>30|(255&I)<<2),_[b++]=I>>>8&1023,_[b++]=I>>>18&1023,_[b++]=1023&(I>>>28|(63&A)<<4),_[b++]=A>>>6&1023,_[b++]=A>>>16&1023,_[b++]=1023&(A>>>26|(15&D)<<6),_[b++]=D>>>4&1023,_[b++]=D>>>14&1023,_[b++]=1023&(D>>>24|(3&L)<<8),_[b++]=L>>>2&1023,_[b++]=L>>>12&1023,_[b++]=L>>>22&1023,_[b++]=R>>>0&1023,_[b++]=R>>>10&1023,_[b++]=R>>>20&1023,_[b++]=1023&(R>>>30|(255&F)<<2),_[b++]=F>>>8&1023,_[b++]=F>>>18&1023,_[b++]=1023&(F>>>28|(63&O)<<4),_[b++]=O>>>6&1023,_[b++]=O>>>16&1023,_[b++]=1023&(O>>>26|(15&N)<<6),_[b++]=N>>>4&1023,_[b++]=N>>>14&1023,_[b++]=1023&(N>>>24|(3&K)<<8),_[b++]=K>>>2&1023,_[b++]=K>>>12&1023,_[b]=K>>>22&1023})(r,e,i,o);case 11:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0,N=m[x+8]>>>0,K=m[x+9]>>>0,Q=m[x+10]>>>0;_[b++]=M>>>0&2047,_[b++]=M>>>11&2047,_[b++]=2047&(M>>>22|(1&I)<<10),_[b++]=I>>>1&2047,_[b++]=I>>>12&2047,_[b++]=2047&(I>>>23|(3&A)<<9),_[b++]=A>>>2&2047,_[b++]=A>>>13&2047,_[b++]=2047&(A>>>24|(7&D)<<8),_[b++]=D>>>3&2047,_[b++]=D>>>14&2047,_[b++]=2047&(D>>>25|(15&L)<<7),_[b++]=L>>>4&2047,_[b++]=L>>>15&2047,_[b++]=2047&(L>>>26|(31&R)<<6),_[b++]=R>>>5&2047,_[b++]=R>>>16&2047,_[b++]=2047&(R>>>27|(63&F)<<5),_[b++]=F>>>6&2047,_[b++]=F>>>17&2047,_[b++]=2047&(F>>>28|(127&O)<<4),_[b++]=O>>>7&2047,_[b++]=O>>>18&2047,_[b++]=2047&(O>>>29|(255&N)<<3),_[b++]=N>>>8&2047,_[b++]=N>>>19&2047,_[b++]=2047&(N>>>30|(511&K)<<2),_[b++]=K>>>9&2047,_[b++]=K>>>20&2047,_[b++]=2047&(K>>>31|(1023&Q)<<1),_[b++]=Q>>>10&2047,_[b]=Q>>>21&2047})(r,e,i,o);case 12:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0,N=m[x+8]>>>0,K=m[x+9]>>>0,Q=m[x+10]>>>0,oe=m[x+11]>>>0;_[b++]=M>>>0&4095,_[b++]=M>>>12&4095,_[b++]=4095&(M>>>24|(15&I)<<8),_[b++]=I>>>4&4095,_[b++]=I>>>16&4095,_[b++]=4095&(I>>>28|(255&A)<<4),_[b++]=A>>>8&4095,_[b++]=A>>>20&4095,_[b++]=D>>>0&4095,_[b++]=D>>>12&4095,_[b++]=4095&(D>>>24|(15&L)<<8),_[b++]=L>>>4&4095,_[b++]=L>>>16&4095,_[b++]=4095&(L>>>28|(255&R)<<4),_[b++]=R>>>8&4095,_[b++]=R>>>20&4095,_[b++]=F>>>0&4095,_[b++]=F>>>12&4095,_[b++]=4095&(F>>>24|(15&O)<<8),_[b++]=O>>>4&4095,_[b++]=O>>>16&4095,_[b++]=4095&(O>>>28|(255&N)<<4),_[b++]=N>>>8&4095,_[b++]=N>>>20&4095,_[b++]=K>>>0&4095,_[b++]=K>>>12&4095,_[b++]=4095&(K>>>24|(15&Q)<<8),_[b++]=Q>>>4&4095,_[b++]=Q>>>16&4095,_[b++]=4095&(Q>>>28|(255&oe)<<4),_[b++]=oe>>>8&4095,_[b]=oe>>>20&4095})(r,e,i,o);case 16:return void(function(m,x,_,T){let b=T,M=m[x]>>>0,I=m[x+1]>>>0,A=m[x+2]>>>0,D=m[x+3]>>>0,L=m[x+4]>>>0,R=m[x+5]>>>0,F=m[x+6]>>>0,O=m[x+7]>>>0,N=m[x+8]>>>0,K=m[x+9]>>>0,Q=m[x+10]>>>0,oe=m[x+11]>>>0,re=m[x+12]>>>0,ce=m[x+13]>>>0,ue=m[x+14]>>>0,ae=m[x+15]>>>0;_[b++]=M>>>0&65535,_[b++]=M>>>16&65535,_[b++]=I>>>0&65535,_[b++]=I>>>16&65535,_[b++]=A>>>0&65535,_[b++]=A>>>16&65535,_[b++]=D>>>0&65535,_[b++]=D>>>16&65535,_[b++]=L>>>0&65535,_[b++]=L>>>16&65535,_[b++]=R>>>0&65535,_[b++]=R>>>16&65535,_[b++]=F>>>0&65535,_[b++]=F>>>16&65535,_[b++]=O>>>0&65535,_[b++]=O>>>16&65535,_[b++]=N>>>0&65535,_[b++]=N>>>16&65535,_[b++]=K>>>0&65535,_[b++]=K>>>16&65535,_[b++]=Q>>>0&65535,_[b++]=Q>>>16&65535,_[b++]=oe>>>0&65535,_[b++]=oe>>>16&65535,_[b++]=re>>>0&65535,_[b++]=re>>>16&65535,_[b++]=ce>>>0&65535,_[b++]=ce>>>16&65535,_[b++]=ue>>>0&65535,_[b++]=ue>>>16&65535,_[b++]=ae>>>0&65535,_[b]=ae>>>16&65535})(r,e,i,o);case 32:for(let m=0;m<32;m=m+1|0)i[o+m|0]=0|r[e+m|0];return}let l=Id[a]>>>0,u=e,p=0,g=r[u]>>>0;for(let m=0;m<32;m++)if(p+a<=32)i[o+m]=g>>>p&l,p+=a,p===32&&(p=0,u++,m!==31&&(g=r[u]>>>0));else{let x=32-p,_=g>>>p;u++,g=r[u]>>>0,i[o+m]=(_|(g&Id[a-x]>>>0)<=64)throw new Error("Varint too long")}return e.set(a),i}function Ey(r,e){let i,o;return o=r[e.get()],e.increment(),i=127&o,o<128?i:(o=r[e.get()],e.increment(),i|=(127&o)<<7,o<128?i:(o=r[e.get()],e.increment(),i|=(127&o)<<14,o<128?i:(o=r[e.get()],e.increment(),i|=(127&o)<<21,o<128?i:(o=r[e.get()],i|=(15&o)<<28,(function(a,l,u){let p,g;if(g=l[u.get()],u.increment(),p=(112&g)>>4,g<128||(g=l[u.get()],u.increment(),p|=(127&g)<<3,g<128)||(g=l[u.get()],u.increment(),p|=(127&g)<<10,g<128)||(g=l[u.get()],u.increment(),p|=(127&g)<<17,g<128)||(g=l[u.get()],u.increment(),p|=(127&g)<<24,g<128)||(g=l[u.get()],u.increment(),p|=(1&g)<<31,g<128))return 4294967296*p+(a>>>0);throw new Error("Expected varint not more than 10 bytes")})(i,r,e)))))}function ft(r){return r>>>1^-(1&r)}function zi(r){return r>>1n^-(1n&r)}function Ls(r){return r%2==1?(r+1)/-2:r/2}function Ad(r,e,i){if(i===void 0){i=0;for(let l=0;l=4)for(;o=4)for(;o=4)for(let o=r[0];i>4],p=null;switch(u){case di.DATA:p={dictionaryType:Object.values(Cr)[15&l]};break;case di.OFFSET:p={offsetType:Object.values(ga)[15&l]};break;case di.LENGTH:p={lengthType:Object.values(er)[15&l]}}a.increment();let g=o[a.get()],m=Object.values(Je)[g>>5],x=Object.values(Je)[g>>2&7],_=Object.values(yo)[3&g];a.increment();let T=wi(o,a,2),b=T[0];return{physicalStreamType:u,logicalStreamType:p,logicalLevelTechnique1:m,logicalLevelTechnique2:x,physicalLevelTechnique:_,numValues:b,byteLength:T[1],decompressedCount:b}})(r,e);return i.logicalLevelTechnique1===Je.MORTON?(function(o,a,l){let u=wi(a,l,2);return{physicalStreamType:o.physicalStreamType,logicalStreamType:o.logicalStreamType,logicalLevelTechnique1:o.logicalLevelTechnique1,logicalLevelTechnique2:o.logicalLevelTechnique2,physicalLevelTechnique:o.physicalLevelTechnique,numValues:o.numValues,byteLength:o.byteLength,decompressedCount:o.decompressedCount,numBits:u[0],coordinateShift:u[1]}})(i,r,e):Je.RLE!==i.logicalLevelTechnique1&&Je.RLE!==i.logicalLevelTechnique2||yo.NONE===i.physicalLevelTechnique?i:(function(o,a,l){let u=wi(a,l,2);return{physicalStreamType:o.physicalStreamType,logicalStreamType:o.logicalStreamType,logicalLevelTechnique1:o.logicalLevelTechnique1,logicalLevelTechnique2:o.logicalLevelTechnique2,physicalLevelTechnique:o.physicalLevelTechnique,numValues:o.numValues,byteLength:o.byteLength,decompressedCount:u[1],runs:u[0],numRleValues:u[1]}})(i,r,e)}(function(r){r.PRESENT="PRESENT",r.DATA="DATA",r.OFFSET="OFFSET",r.LENGTH="LENGTH"})(di||(di={})),(function(r){r.NONE="NONE",r.SINGLE="SINGLE",r.SHARED="SHARED",r.VERTEX="VERTEX",r.MORTON="MORTON",r.FSST="FSST"})(Cr||(Cr={})),(function(r){r.VERTEX="VERTEX",r.INDEX="INDEX",r.STRING="STRING",r.KEY="KEY"})(ga||(ga={})),(function(r){r.VAR_BINARY="VAR_BINARY",r.GEOMETRIES="GEOMETRIES",r.PARTS="PARTS",r.RINGS="RINGS",r.TRIANGLES="TRIANGLES",r.SYMBOL="SYMBOL",r.DICTIONARY="DICTIONARY"})(er||(er={})),(function(r){r[r.FLAT=0]="FLAT",r[r.CONST=1]="CONST",r[r.SEQUENCE=2]="SEQUENCE",r[r.DICTIONARY=3]="DICTIONARY",r[r.FSST_DICTIONARY=4]="FSST_DICTIONARY"})(vt||(vt={}));class Ar{constructor(e,i){this.values=e,this._size=i}get(e){let i=Math.floor(e/8);return(this.values[i]>>e%8&1)==1}set(e,i){let o=Math.floor(e/8);this.values[o]=this.values[o]|(i?1:0)<>e%8&1}size(){return this._size}getBuffer(){return this.values}}function Fs(r,e,i){if(!e)return r;let o=e.size(),a=new r.constructor(o),l=0;for(let u=0;u=4)for(;b>>0;for(let T=1;T>>0;return _})(u.logicalLevelTechnique2===Je.RLE?Ad(l,u.runs,u.numRleValues):l);break;case Je.RLE:m=Ad(l,u.runs,u.numRleValues);break;case Je.MORTON:zd(l),m=l;break;case Je.COMPONENTWISE_DELTA:m=(function(x){if(x.length<2)return new Uint32Array(x);let _=new Uint32Array(x.length);_[0]=ft(x[0])>>>0,_[1]=ft(x[1])>>>0;for(let T=2;T>>0,_[T+1]=_[T-1]+ft(x[T+1])>>>0;return _})(l);break;case Je.NONE:m=l;break;default:throw new Error(`The specified Logical level technique is not supported: ${u.logicalLevelTechnique1}`)}return g?Fs(m,g,0):m})(Bs(r,e,i),i,0,a)}function vo(r,e,i){return(function(o,a){if(a.logicalLevelTechnique1===Je.DELTA&&a.logicalLevelTechnique2===Je.NONE)return(function(l){let u=new Int32Array(l.length+1);u[0]=0,u[1]=ft(l[0]);let p=u[1];for(let g=2;g!==u.length;++g)p+=ft(l[g-1]),u[g]=u[g-1]+p;return new Uint32Array(u)})(o);if(a.logicalLevelTechnique1===Je.RLE&&a.logicalLevelTechnique2===Je.NONE)return(function(l,u,p){let g=new Uint32Array(p+1);g[0]=0;let m=1,x=g[0];for(let _=0;_>>2,I=(function(D,L){if(L<=D.encodedWords.length)return D.encodedWords;let R=new Uint32Array(Math.max(16,2*L));return D.encodedWords=R,R})(T,M);(function(D,L,R,F){if(L<0||R<0||L+R>D.length)throw new RangeError(`decodeBigEndianInt32sInto: out of bounds (offset=${L}, byteLength=${R}, bytes.length=${D.length})`);let O=Math.floor(R/4),N=R%4!=0,K=N?O+1:O;if(F.length0){let Q=D.byteOffset+L;if(3&Q)for(let oe=0;oe0){let Q=0|D[F];if(F=F+1|0,255&Q)throw new Error(`FastPFOR decode: invalid alignedLength=${Q} (expected multiple of 256)`);if(O+Q>N.length)throw new Error(`FastPFOR decode: output buffer too small (outPos=${O}, alignedLength=${Q}, out.length=${N.length})`);F=(function(oe,re,ce,ue,ae,ne){let ye=ue+Ed(ae,Rn),Pe=ue,we=ce;for(;Pe!==ye;){let xe=Math.min(Cd,ye-Pe);we=Py(oe,re,we,Pe,xe,ne),Pe=Pe+xe|0}return we})(D,N,F,O,Q,K),O=O+Q|0}return(function(Q,oe,re,ce,ue,ae){if(ae===0)return oe;let ne=0,ye=oe,Pe=oe+re,we=ue,xe=ue,Le=ue+ae,ot=0,st=0;for(;ye>>ne&255;if(ne+=8,ye+=ne>>>5,ne&=31,ot|=(127&dt)<28)throw new Error(`FastPFOR VByte: unterminated value (expected MSB=1 terminator within 5 bytes; shift=${st}, partial=${ot}, decoded=${xe-we}/${ae}, inPos=${ye}, inEnd=${Pe})`)}if(xe!==Le)throw new Error(`FastPFOR VByte: truncated stream (decoded=${xe-we}, expected=${ae}, consumedWords=${ye-oe}/${re}, vbyteStart=${oe}, vbyteEnd=${Pe})`)})(D,F,D.length-F|0,N,O,L-O|0),N})(I.subarray(0,M),m,T.decoderWorkspace);return _.add(x),A})(a,l,u,p,(function(g=16){if(g<0)throw new RangeError(`initialEncodedWordCapacity must be >= 0, got ${g}`);let m=Math.max(16,0|g);return{encodedWords:new Uint32Array(m),decoderWorkspace:im()}})(u>>>2))})(r,i.numValues,i.byteLength,e);case yo.VARINT:return wi(r,e,i.numValues);case yo.NONE:{let a=e.get();e.add(i.byteLength);let l=r.subarray(a,e.get());return new Uint32Array(l)}default:throw new Error(`Specified physicalLevelTechnique ${o} is not supported (yet).`)}}function Rd(r,e,i){let o=Bs(r,e,i);return o.length===1?o[0]:(function(a){return a[1]})(o)}function sm(r,e,i){return(function(o){if(o.length===2){let a=ft(o[1]);return[a,a]}return[ft(o[2]),ft(o[3])]})(Bs(r,e,i))}function lm(r,e,i){return(function(o){if(o.length===2){let a=zi(o[1]);return[a,a]}return[zi(o[2]),zi(o[3])]})(Rs(r,e,i.numValues))}function cm(r,e,i,o){return(function(a,l,u){let p;switch(l.logicalLevelTechnique1){case Je.DELTA:p=(function(g){let m=new BigUint64Array(g.length);m[0]=BigInt.asUintN(64,zi(g[0]));for(let x=1;x>1,e)-i}}function pm(r,e){let i=0;for(let o=0;o>o;return i}function Os(r,e,i,o,a,l,u){return r===xo.MORTON?(function(p,g,m,x,_,T){let b=new Array(_?x+1:x);for(let M=0;M[O])),o+=R,a+=R}break;case Kt.LINESTRING:{let R,F;A?(R=b[a]-b[a-1],a++):R=T[o]-T[o-1],o++,I?(F=Vs(D,p,R,!1),p+=2*R):(F=Os(e.vertexBufferType,D,M,g,R,!1,m),g+=R),i[u++]=[F],_&&l++}break;case Kt.POLYGON:{let R=T[o]-T[o-1];o++;let F=new Array(R-1),O,N=b[a]-b[a-1];if(a++,I){O=Vs(D,p,N,!0),p+=2*N;for(let K=0;K0&&I.push(I[0]),T.push(I)}e[x]=T,l&&m++}break;case Kt.MULTIPOLYGON:{let _=l[m]-l[m-1];m++;let T=[];for(let b=0;b<_;b++){let M=o[p]-o[p-1];p++;for(let I=0;I0&&D.push(D[0]),T.push(D)}}e[x]=T}}return e}[Symbol.iterator](){return null}}function ym(r,e,i,o,a,l){return new Cy(r,e,i,o,a,l)}class Cy extends _m{constructor(e,i,o,a,l,u){super(o,a,l,u),this._numGeometries=e,this._geometryType=i}geometryType(e){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return!0}}function xm(r,e,i,o,a){return new Ay(r,e,i,o,a)}class Ay extends _m{constructor(e,i,o,a,l){super(i,o,a,l),this._geometryTypes=e}geometryType(e){return this._geometryTypes[e]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return!1}}function Dy(r,e,i,o,a){let l=ki(r,i),u,p,g,m;if(Wu(l,o,r,i)===vt.CONST){let L=Rd(r,i,l),R,F,O,N;for(let K=0;Ki?e[l++]:1);return o}function vm(r,e,i,o){let a=new Uint32Array(e[e.length-1]+1),l=0;a[0]=l;let u=1,p=0;for(let g=0;g=T);){let b=u[m.increment()];if(b<=127){let M=b+3,I=u[m.increment()],A=Math.min(_+M,p);x.fill(I,_,A),_=A}else{let M=256-b;for(let I=0;I=12?Ry.decode(r.subarray(e,i)):(function(o,a,l){let u="",p=a;for(;p239?4:g>223?3:g>191?2:1;if(p+b>l)break;b===1?g<128&&(T=g):b===2?(m=o[p+1],(192&m)==128&&(T=(31&g)<<6|63&m,T<=127&&(T=null))):b===3?(m=o[p+1],x=o[p+2],(192&m)==128&&(192&x)==128&&(T=(15&g)<<12|(63&m)<<6|63&x,(T<=2047||T>=55296&&T<=57343)&&(T=null))):b===4&&(m=o[p+1],x=o[p+2],_=o[p+3],(192&m)==128&&(192&x)==128&&(192&_)==128&&(T=(15&g)<<18|(63&m)<<12|(63&x)<<6|63&_,(T<=65535||T>=1114112)&&(T=null))),T===null?(T=65533,b=1):T>65535&&(T-=65536,u+=String.fromCharCode(T>>>10&1023|55296),T=56320|1023&T),u+=String.fromCharCode(T),p+=b}return u})(r,e,i)}class Od extends ks{constructor(e,i,o,a){super(e,o,a),this.offsetBuffer=i}}class wm extends Od{constructor(e,i,o,a){super(e,i,o,a??i.length-1)}getValueFromBuffer(e){return Bd(this.dataBuffer,this.offsetBuffer[e],this.offsetBuffer[e+1])}}class js extends Od{constructor(e,i,o,a,l){super(e,o,a,l??i.length),this.indexBuffer=i,this.indexBuffer=i}getValueFromBuffer(e){let i=this.indexBuffer[e];return Bd(this.dataBuffer,this.offsetBuffer[i],this.offsetBuffer[i+1])}}class Tm extends Od{constructor(e,i,o,a,l,u,p){super(e,o,a,p),this.indexBuffer=i,this.symbolOffsetBuffer=l,this.symbolTableBuffer=u}getValueFromBuffer(e){this.decodedDictionary==null&&(this.symbolLengthBuffer==null&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer)),this.decodedDictionary=(function(o,a,l){let u=[],p=new Array(a.length).fill(0);for(let g=1;g=10}function Mm(r){return r===30}function Fy(r){if(r.type==="scalarType"){let e=r.scalarType;if(e.type==="physicalType")switch(e.physicalType){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:default:return!1;case 9:return!0}if(e.type==="logicalType")return!1}else if(r.type==="complexType"){let e=r.complexType;if(e.type==="physicalType")switch(e.physicalType){case 0:case 1:return!0;default:return!1}}return console.warn("Unexpected column type in hasStreamCount",r),!1}function By(r){return r.type==="complexType"&&r.complexType?.type==="physicalType"&&r.complexType.physicalType===0}let Oy=new TextDecoder;function Vd(r,e){let i=wi(r,e,1)[0];if(i===0)return"";let o=e.get(),a=r.subarray(o,o+i);return e.add(i),Oy.decode(a)}function Im(r,e){let i=wi(r,e,1)[0]>>>0;if(i<10||i>30)throw new Error(`Unsupported field type code ${i}. Supported: 10-29(scalars), 30(STRUCT)`);let o=Sm(i);if(Pm(i)&&(o.name=Vd(r,e)),Mm(i)){let a=wi(r,e,1)[0]>>>0;o.complexType.children=new Array(a);for(let l=0;l>>0,o=Sm(i);if(!o)throw new Error(`Unsupported column type code ${i}. Supported: 0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)`);if(Pm(i)?o.name=Vd(r,e):i>=0&&i<=3?o.name="id":i===4&&(o.name="geometry"),Mm(i)){let a=wi(r,e,1)[0]>>>0,l=o.complexType;l.children=new Array(a);for(let u=0;u>>0,l=wi(r,e,1)[0]>>>0;o.columns=new Array(l);for(let u=0;u=4)for(;O>>0,x=u.get()+m;if(x>o.length)throw new Error(`Block overruns tile: ${x} > ${o.length}`);if(wi(o,u,1)[0]>>>0!=1){u.set(x);continue}let[_,T]=jy(o,u),b=_.featureTables[0],M=null,I=null,A=[],D=0;for(let R of b.columns){let F=R.name;if((g=R).type==="scalarType"&&g.scalarType?.type==="logicalType"&&g.scalarType.logicalType===0){let O=null;if(R.nullable){let K=ki(o,u),Q=u.get(),oe=mc(o,K.numValues,K.byteLength,u);u.set(Q+K.byteLength),O=new Ar(oe,K.numValues)}let N=ki(o,u);D=O?O.size():N.decompressedCount,M=Ny(o,R,u,F,N,O??D,l)}else if(By(R)){let O=wi(o,u,1)[0];if(D===0){let N=u.get();D=ki(o,u).decompressedCount,u.set(N)}I=Dy(o,O,u,D)}else{let O=Fy(R)?wi(o,u,1)[0]:1;if(O===0)continue;let N=Ly(o,u,R,O,D);if(N)if(Array.isArray(N))for(let K of N)A.push(K);else A.push(N)}}let L=new xy(b.name,I,M,A,T);p.push(L),u.set(x)}var g;return p})(new Uint8Array(e));this.layers=i.reduce(((o,a)=>Object.assign(Object.assign({},o),{[a.name]:new Gy(a)})),{})}}class $y{constructor(e,i){this.feature=e,this.type=e.type,this.properties=e.tags?e.tags:{},this.extent=i,"id"in e&&(typeof e.id=="string"?this.id=parseInt(e.id,10):typeof e.id!="number"||isNaN(e.id)||(this.id=e.id))}loadGeometry(){let e=[],i=this.feature.type===1?[this.feature.geometry]:this.feature.geometry;for(let o of i){let a=[];for(let l of o)a.push(new fe(l[0],l[1]));e.push(a)}return e}}let _c="_geojsonTileLayer";function Zy(r,e,i=""){e.writeVarintField(15,r.version||1),e.writeStringField(1,r.name||""),e.writeVarintField(5,r.extent||4096);let o={jsonPrefix:i,keys:[],values:[],keycache:{},valuecache:{}};for(let u=0;u>31}function Hy(r,e){let i=r.loadGeometry(),o=r.type,a=0,l=0;for(let u of i){let p=1;o===1&&(p=u.length),e.writeVarint(jd(1,p));let g=o===3?u.length-1:u.length;for(let m=0;m=0&&x[3]>=0&&g.insert(p,x[0],x[1],x[2],x[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=this.encoding!=="mlt"?new rf(new Nu(this.rawTileData)).layers:new Em(this.rawTileData).layers,this.sourceLayerCoder=new Jf(this.vtLayers?Object.keys(this.vtLayers).sort():[_c])),this.vtLayers}query(e,i,o,a){this.loadVTLayers();let l=e.params,u=Fe/e.tileSize/e.scale,p=Ho(l.filter,l.globalState),g=e.queryGeometry,m=e.queryPadding*u,x=ma.fromPoints(g),_=this.grid.query(x.minX-m,x.minY-m,x.maxX+m,x.maxY+m),T=ma.fromPoints(e.cameraQueryGeometry).expandBy(m),b=this.grid3D.query(T.minX,T.minY,T.maxX,T.maxY,((A,D,L,R)=>(function(F,O,N,K,Q){for(let re of F)if(O<=re.x&&N<=re.y&&K>=re.x&&Q>=re.y)return!0;let oe=[new fe(O,N),new fe(O,Q),new fe(K,Q),new fe(K,N)];if(F.length>2){for(let re of oe)if(bs(F,re))return!0}for(let re=0;re(L||(L=Jr(R)),F.queryIntersectsFeature({queryGeometry:g,feature:R,featureState:O,geometry:L,zoom:this.z,transform:e.transform,pixelsToTileUnits:u,pixelPosMatrix:e.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:e.getElevation}))))}return M}loadMatchingFeature(e,i,o,a,l,u,p,g,m,x,_){let T=this.bucketLayerIDs[i];if(u&&!T.some((A=>u.has(A))))return;let b=this.sourceLayerCoder.decode(o),M=this.vtLayers[b].feature(a);if(l.needGeometry){let A=Qr(M,!0);if(!l.filter(new _t(this.tileID.overscaledZ),A,this.tileID.canonical))return}else if(!l.filter(new _t(this.tileID.overscaledZ),M))return;let I=this.getId(M,b);for(let A of T){if(u&&!u.has(A))continue;let D=g[A];if(!D)continue;let L={};I&&x&&(L=x.getState(D.sourceLayer||_c,I));let R=Wi({},m[A]);R.paint=Dm(R.paint,D.paint,M,L,p),R.layout=Dm(R.layout,D.layout,M,L,p);let F=!_||_(M,D,L);if(!F)continue;let O=new Qf(M,this.z,this.x,this.y,I);O.layer=R;let N=e[A];N===void 0&&(N=e[A]=[]),N.push({featureIndex:a,feature:O,intersectionZ:F})}}lookupSymbolFeatures(e,i,o,a,l,u,p,g){let m={};this.loadVTLayers();let x=Ho(l.filterSpec,l.globalState);for(let _ of e)this.loadMatchingFeature(m,o,a,_,x,u,p,g,i);return m}hasLayer(e){for(let i of this.bucketLayerIDs)for(let o of i)if(e===o)return!0;return!1}getId(e,i){var o;let a=e.id;return this.promoteId&&(a=e.properties[typeof this.promoteId=="string"?this.promoteId:this.promoteId[i]],typeof a=="boolean"&&(a=Number(a)),a===void 0&&(!((o=e.properties)===null||o===void 0)&&o.cluster)&&this.promoteId&&(a=Number(e.properties.cluster_id))),a}}function Dm(r,e,i,o,a){return Fr(r,((l,u)=>{let p=e instanceof aa?e.get(u):null;return p?.evaluate?p.evaluate(i,o,a):p}))}function Yy(r,e){return e-r}function zm(r,e,i,o,a){let l=[];for(let u of r){let p;for(let g=0;g=o&&x.x>=o||(m.x>=o?m=new fe(o,m.y+(o-m.x)/(x.x-m.x)*(x.y-m.y))._round():x.x>=o&&(x=new fe(o,m.y+(o-m.x)/(x.x-m.x)*(x.y-m.y))._round()),m.y>=a&&x.y>=a||(m.y>=a?m=new fe(m.x+(a-m.y)/(x.y-m.y)*(x.x-m.x),a)._round():x.y>=a&&(x=new fe(m.x+(a-m.y)/(x.y-m.y)*(x.x-m.x),a)._round()),p&&m.equals(p[p.length-1])||(p=[m],l.push(p)),p.push(x)))))}}return l}function km(r,e,i,o,a){switch(e){case 1:return(function(l,u,p,g){let m=[];for(let x of l)for(let _ of x){let T=g===0?_.x:_.y;T>=u&&T<=p&&m.push([_])}return m})(r,i,o,a);case 2:return Rm(r,i,o,a,!1);case 3:return Rm(r,i,o,a,!0)}return[]}function Ky(r,e,i,o,a){let l=o===0?Jy:Qy,u=[],p=[];for(let x=0;xe&&u.push(l(_,T,e)):b>i?M=e&&(u.push(l(_,T,e)),I=!0),M>i&&b<=i&&(u.push(l(_,T,i)),I=!0),!a&&I&&(p.push(u),u=[])}let g=r.length-1,m=o===0?r[g].x:r[g].y;return m>=e&&m<=i&&u.push(r[g]),a&&u.length>0&&!u[0].equals(u[u.length-1])&&u.push(new fe(u[0].x,u[0].y)),u.length>0&&p.push(u),p}function Rm(r,e,i,o,a){let l=[];for(let u of r){let p=Ky(u,e,i,o,a);p.length>0&&l.push(...p)}return l}function Jy(r,e,i){return new fe(i,r.y+(i-r.x)/(e.x-r.x)*(e.y-r.y))}function Qy(r,e,i){return new fe(r.x+(i-r.y)/(e.y-r.y)*(e.x-r.x),i)}Ee("FeatureIndex",Am,{omit:["rawTileData","sourceLayerCoder"]});class bo extends fe{constructor(e,i,o,a){super(e,i),this.angle=o,a!==void 0&&(this.segment=a)}clone(){return new bo(this.x,this.y,this.angle,this.segment)}}function Lm(r,e,i,o,a){if(e.segment===void 0||i===0)return!0;let l=e,u=e.segment+1,p=0;for(;p>-i/2;){if(u--,u<0)return!1;p-=r[u].dist(l),l=r[u]}p+=r[u].dist(r[u+1]),u++;let g=[],m=0;for(;po;)m-=g.shift().angleDelta;if(m>a)return!1;u++,p+=x.dist(_)}return!0}function Fm(r){let e=0;for(let i=0;im){let M=(m-g)/b,I=Oi.number(_.x,T.x,M),A=Oi.number(_.y,T.y,M),D=new bo(I,A,T.angleTo(_),x);return D._round(),!u||Lm(r,D,p,u,e)?D:void 0}g+=b}}function tx(r,e,i,o,a,l,u,p,g){let m=Bm(o,l,u),x=Om(o,a),_=x*u,T=r[0].x===0||r[0].x===g||r[0].y===0||r[0].y===g;return e-_=0&&F=0&&O=0&&T+m<=x){let N=new bo(F,O,L,M);N._round(),o&&!Lm(r,N,l,o,a)||b.push(N)}}_+=D}return p||b.length||u||(b=Vm(r,_/2,i,o,a,l,u,!0,g)),b}function jm(r,e,i,o){let a=[],l=r.image,u=l.pixelRatio,p=l.paddedRect.w-2,g=l.paddedRect.h-2,m={x1:r.left,y1:r.top,x2:r.right,y2:r.bottom},x=l.stretchX||[[0,p]],_=l.stretchY||[[0,g]],T=(ne,ye)=>ne+ye[1]-ye[0],b=x.reduce(T,0),M=_.reduce(T,0),I=p-b,A=g-M,D=0,L=b,R=0,F=M,O=0,N=I,K=0,Q=A;if(l.content&&o){let ne=l.content,ye=ne[2]-ne[0],Pe=ne[3]-ne[1];(l.textFitWidth||l.textFitHeight)&&(m=Ff(r)),D=Hu(x,0,ne[0]),R=Hu(_,0,ne[1]),L=Hu(x,ne[0],ne[2]),F=Hu(_,ne[1],ne[3]),O=ne[0]-D,K=ne[1]-R,N=ye-L,Q=Pe-F}let oe=m.x1,re=m.y1,ce=m.x2-oe,ue=m.y2-re,ae=(ne,ye,Pe,we)=>{let xe=Xu(ne.stretch-D,L,ce,oe),Le=Yu(ne.fixed-O,N,ne.stretch,b),ot=Xu(ye.stretch-R,F,ue,re),st=Yu(ye.fixed-K,Q,ye.stretch,M),dt=Xu(Pe.stretch-D,L,ce,oe),fi=Yu(Pe.fixed-O,N,Pe.stretch,b),zt=Xu(we.stretch-R,F,ue,re),qt=Yu(we.fixed-K,Q,we.stretch,M),Jt=new fe(xe,ot),bt=new fe(dt,ot),si=new fe(dt,zt),Ti=new fe(xe,zt),Si=new fe(Le/u,st/u),Gi=new fe(fi/u,qt/u),mi=e*Math.PI/180;if(mi){let Qt=Math.sin(mi),Mt=Math.cos(mi),Ut=[Mt,-Qt,Qt,Mt];Jt._matMult(Ut),bt._matMult(Ut),Ti._matMult(Ut),si._matMult(Ut)}let $i=ne.stretch+ne.fixed,yr=ye.stretch+ye.fixed;return{tl:Jt,tr:bt,bl:Ti,br:si,tex:{x:l.paddedRect.x+1+$i,y:l.paddedRect.y+1+yr,w:Pe.stretch+Pe.fixed-$i,h:we.stretch+we.fixed-yr},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Si,pixelOffsetBR:Gi,minFontScaleX:N/u/ce,minFontScaleY:Q/u/ue,isSDF:i}};if(o&&(l.stretchX||l.stretchY)){let ne=Nm(x,I,b),ye=Nm(_,A,M);for(let Pe=0;Pe0&&(I=Math.max(10,I),this.circleDiameter=I)}else{let T=!((_=u.image)===null||_===void 0)&&_.content&&(u.image.textFitWidth||u.image.textFitHeight)?Ff(u):{x1:u.left,y1:u.top,x2:u.right,y2:u.bottom};T.y1=T.y1*p-g[0],T.y2=T.y2*p+g[2],T.x1=T.x1*p-g[3],T.x2=T.x2*p+g[1];let b=u.collisionPadding;if(b&&(T.x1-=b[0]*p,T.y1-=b[1]*p,T.x2+=b[2]*p,T.y2+=b[3]*p),x){let M=new fe(T.x1,T.y1),I=new fe(T.x2,T.y1),A=new fe(T.x1,T.y2),D=new fe(T.x2,T.y2),L=x*Math.PI/180;M._rotate(L),I._rotate(L),A._rotate(L),D._rotate(L),T.x1=Math.min(M.x,I.x,A.x,D.x),T.x2=Math.max(M.x,I.x,A.x,D.x),T.y1=Math.min(M.y,I.y,A.y,D.y),T.y2=Math.max(M.y,I.y,A.y,D.y)}e.emplaceBack(i.x,i.y,T.x1,T.y1,T.x2,T.y2,o,a,l)}this.boxEndIndex=e.length}}class ix{constructor(e=[],i=(o,a)=>oa?1:0){if(this.data=e,this.length=this.data.length,this.compare=i,this.length>0)for(let o=(this.length>>1)-1;o>=0;o--)this._down(o)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;let e=this.data[0],i=this.data.pop();return--this.length>0&&(this.data[0]=i,this._down(0)),e}peek(){return this.data[0]}_up(e){let{data:i,compare:o}=this,a=i[e];for(;e>0;){let l=e-1>>1,u=i[l];if(o(a,u)>=0)break;i[e]=u,e=l}i[e]=a}_down(e){let{data:i,compare:o}=this,a=this.length>>1,l=i[e];for(;e=0)break;i[e]=i[u],e=u}i[e]=l}}function rx(r,e=1){let i=ma.fromPoints(r[0]),o=Math.min(i.width(),i.height()),a=o/2,l=new ix([],nx),{minX:u,minY:p,maxX:g,maxY:m}=i;if(o===0)return new fe(u,p);for(let T=u;T_.d||!_.d)&&(_=T),T.max-_.d<=e||(a=T.h/2,l.push(new Ns(T.p.x-a,T.p.y-a,a,r)),l.push(new Ns(T.p.x+a,T.p.y-a,a,r)),l.push(new Ns(T.p.x-a,T.p.y+a,a,r)),l.push(new Ns(T.p.x+a,T.p.y+a,a,r)))}return x.d>0&&_.d-x.d<=e?x.p:_.p}function nx(r,e){return e.max-r.max}class Ns{constructor(e,i,o,a){this.p=new fe(e,i),this.h=o,this.d=(function(l,u){let p=!1,g=1/0;for(let m of u)for(let x=0,_=m.length,T=_-1;x<_;T=x++){let b=m[x],M=m[T];b.y>l.y!=M.y>l.y&&l.x<(M.x-b.x)*(l.y-b.y)/(M.y-b.y)+b.x&&(p=!p),g=Math.min(g,Dp(l,b,M))}return(p?1:-1)*Math.sqrt(g)})(this.p,a),this.max=this.d+this.h*Math.SQRT2}}var pi;k.aM=void 0,(pi=k.aM||(k.aM={}))[pi.center=1]="center",pi[pi.left=2]="left",pi[pi.right=3]="right",pi[pi.top=4]="top",pi[pi.bottom=5]="bottom",pi[pi["top-left"]=6]="top-left",pi[pi["top-right"]=7]="top-right",pi[pi["bottom-left"]=8]="bottom-left",pi[pi["bottom-right"]=9]="bottom-right";let Nd=Number.POSITIVE_INFINITY;function Um(r,e){return e[1]!==Nd?(function(i,o,a){let l=0,u=0;switch(o=Math.abs(o),a=Math.abs(a),i){case"top-right":case"top-left":case"top":u=a-7;break;case"bottom-right":case"bottom-left":case"bottom":u=7-a}switch(i){case"top-right":case"bottom-right":case"right":l=-o;break;case"top-left":case"bottom-left":case"left":l=o}return[l,u]})(r,e[0],e[1]):(function(i,o){let a=0,l=0;o<0&&(o=0);let u=o/Math.SQRT2;switch(i){case"top-right":case"top-left":l=u-7;break;case"bottom-right":case"bottom-left":l=7-u;break;case"bottom":l=7-o;break;case"top":l=o-7}switch(i){case"top-right":case"bottom-right":a=-u;break;case"top-left":case"bottom-left":a=u;break;case"left":a=o;break;case"right":a=-o}return[a,l]})(r,e[0])}function Gm(r,e,i){var o;let a=r.layout,l=(o=a.get("text-variable-anchor-offset"))===null||o===void 0?void 0:o.evaluate(e,{},i);if(l){let p=l.values,g=[];for(let m=0;mT*Yt));x.startsWith("top")?_[1]-=7:x.startsWith("bottom")&&(_[1]+=7),g[m+1]=_}return new _i(g)}let u=a.get("text-variable-anchor");if(u){let p;p=r._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[a.get("text-radial-offset").evaluate(e,{},i)*Yt,Nd]:a.get("text-offset").evaluate(e,{},i).map((m=>m*Yt));let g=[];for(let m of u)g.push(m,Um(m,p));return new _i(g)}return null}function Ud(r){switch(r){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function ox(r,e,i,o,a,l,u,p,g,m,x,_){let T=l.textMaxSize.evaluate(e,{});T===void 0&&(T=u);let b=r.layers[0].layout,M=b.get("icon-offset").evaluate(e,{},x),I=Zm(i.horizontal),A=u/24,D=r.tilePixelRatio*A,L=r.tilePixelRatio*T/24,R=r.tilePixelRatio*p,F=r.tilePixelRatio*b.get("symbol-spacing"),O=b.get("text-padding")*r.tilePixelRatio,N=(function(Pe,we,xe,Le=1){let ot=Pe.get("icon-padding").evaluate(we,{},xe),st=ot?.values;return[st[0]*Le,st[1]*Le,st[2]*Le,st[3]*Le]})(b,e,x,r.tilePixelRatio),K=b.get("text-max-angle")/180*Math.PI,Q=b.get("text-rotation-alignment")!=="viewport"&&b.get("symbol-placement")!=="point",oe=b.get("icon-rotation-alignment")==="map"&&b.get("symbol-placement")!=="point",re=b.get("symbol-placement"),ce=F/2,ue=b.get("icon-text-fit"),ae;o&&ue!=="none"&&(r.allowVerticalPlacement&&i.vertical&&(ae=Bf(o,i.vertical,ue,b.get("icon-text-fit-padding"),M,A)),I&&(o=Bf(o,I,ue,b.get("icon-text-fit-padding"),M,A)));let ne=x?_.line.getGranularityForZoomLevel(x.z):1,ye=(Pe,we)=>{we.x<0||we.x>=Fe||we.y<0||we.y>=Fe||(function(xe,Le,ot,st,dt,fi,zt,qt,Jt,bt,si,Ti,Si,Gi,mi,$i,yr,Qt,Mt,Ut,kt,ei,Ln,Dr,yc){let wo=xe.addToLineVertexArray(Le,ot),_a,Us,Gs,$s,qm=0,Wm=0,Hm=0,Xm=0,Gd=-1,$d=-1,Fn={},Ym=Xt("");if(xe.allowVerticalPlacement&&st.vertical){let Pi=qt.layout.get("text-rotate").evaluate(kt,{},Dr)+90;Gs=new Ku(Jt,Le,bt,si,Ti,st.vertical,Si,Gi,mi,Pi),zt&&($s=new Ku(Jt,Le,bt,si,Ti,zt,yr,Qt,mi,Pi))}if(dt){let Pi=qt.layout.get("icon-rotate").evaluate(kt,{}),ur=qt.layout.get("icon-text-fit")!=="none",ya=jm(dt,Pi,Ln,ur),kr=zt?jm(zt,Pi,Ln,ur):void 0;Us=new Ku(Jt,Le,bt,si,Ti,dt,yr,Qt,!1,Pi),qm=4*ya.length;let xa=xe.iconSizeData,en=null;xa.kind==="source"?(en=[kn*qt.layout.get("icon-size").evaluate(kt,{})],en[0]>go&&ti(`${xe.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):xa.kind==="composite"&&(en=[kn*ei.compositeIconSizes[0].evaluate(kt,{},Dr),kn*ei.compositeIconSizes[1].evaluate(kt,{},Dr)],(en[0]>go||en[1]>go)&&ti(`${xe.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),xe.addSymbols(xe.icon,ya,en,Ut,Mt,kt,k.ax.none,Le,wo.lineStartIndex,wo.lineLength,-1,Dr),Gd=xe.icon.placedSymbolArray.length-1,kr&&(Wm=4*kr.length,xe.addSymbols(xe.icon,kr,en,Ut,Mt,kt,k.ax.vertical,Le,wo.lineStartIndex,wo.lineLength,-1,Dr),$d=xe.icon.placedSymbolArray.length-1)}let Km=Object.keys(st.horizontal);for(let Pi of Km){let ur=st.horizontal[Pi];if(!_a){Ym=Xt(ur.text);let kr=qt.layout.get("text-rotate").evaluate(kt,{},Dr);_a=new Ku(Jt,Le,bt,si,Ti,ur,Si,Gi,mi,kr)}let ya=ur.positionedLines.length===1;if(Hm+=$m(xe,Le,ur,fi,qt,mi,kt,$i,wo,st.vertical?k.ax.horizontal:k.ax.horizontalOnly,ya?Km:[Pi],Fn,Gd,ei,Dr),ya)break}st.vertical&&(Xm+=$m(xe,Le,st.vertical,fi,qt,mi,kt,$i,wo,k.ax.vertical,["vertical"],Fn,$d,ei,Dr));let sx=_a?_a.boxStartIndex:xe.collisionBoxArray.length,lx=_a?_a.boxEndIndex:xe.collisionBoxArray.length,cx=Gs?Gs.boxStartIndex:xe.collisionBoxArray.length,ux=Gs?Gs.boxEndIndex:xe.collisionBoxArray.length,hx=Us?Us.boxStartIndex:xe.collisionBoxArray.length,dx=Us?Us.boxEndIndex:xe.collisionBoxArray.length,px=$s?$s.boxStartIndex:xe.collisionBoxArray.length,fx=$s?$s.boxEndIndex:xe.collisionBoxArray.length,zr=-1,Ju=(Pi,ur)=>Pi?.circleDiameter?Math.max(Pi.circleDiameter,ur):ur;zr=Ju(_a,zr),zr=Ju(Gs,zr),zr=Ju(Us,zr),zr=Ju($s,zr);let Jm=zr>-1?1:0;Jm&&(zr*=yc/Yt),xe.glyphOffsetArray.length>=Ds.MAX_GLYPHS&&ti("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),kt.sortKey!==void 0&&xe.addToSortKeyRanges(xe.symbolInstances.length,kt.sortKey);let mx=Gm(qt,kt,Dr),[gx,_x]=(function(Pi,ur){let ya=Pi.length,kr=ur?.values;if(kr?.length>0)for(let xa=0;xa=0?Fn.right:-1,Fn.center>=0?Fn.center:-1,Fn.left>=0?Fn.left:-1,Fn.vertical||-1,Gd,$d,Ym,sx,lx,cx,ux,hx,dx,px,fx,bt,Hm,Xm,qm,Wm,Jm,0,Si,zr,gx,_x)})(r,we,Pe,i,o,a,ae,r.layers[0],r.collisionBoxArray,e.index,e.sourceLayerIndex,r.index,D,[O,O,O,O],Q,g,R,N,oe,M,e,l,m,x,u)};if(re==="line")for(let Pe of zm(e.geometry,0,0,Fe,Fe)){let we=fa(Pe,ne),xe=tx(we,F,K,i.vertical||I,o,24,L,r.overscaling,Fe);for(let Le of xe)I&&ax(r,I.text,ce,Le)||ye(we,Le)}else if(re==="line-center"){for(let Pe of e.geometry)if(Pe.length>1){let we=fa(Pe,ne),xe=ex(we,K,i.vertical||I,o,24,L);xe&&ye(we,xe)}}else if(e.type==="Polygon")for(let Pe of $a(e.geometry,0)){let we=rx(Pe,16);ye(fa(Pe[0],ne,!0),new bo(we.x,we.y,0))}else if(e.type==="LineString")for(let Pe of e.geometry){let we=fa(Pe,ne);ye(we,new bo(we[0].x,we[0].y,0))}else if(e.type==="Point")for(let Pe of e.geometry)for(let we of Pe)ye([we],new bo(we.x,we.y,0))}function $m(r,e,i,o,a,l,u,p,g,m,x,_,T,b,M){let I=(function(L,R,F,O,N,K,Q,oe){let re=O.layout.get("text-rotate").evaluate(K,{})*Math.PI/180,ce=[];for(let ue of R.positionedLines)for(let ae of ue.positionedGlyphs){if(!ae.rect)continue;let ne=ae.rect||{},ye=4,Pe=!0,we=1,xe=0,Le=(N||oe)&&ae.vertical,ot=ae.metrics.advance*ae.scale/2;if(oe&&R.verticalizable&&(xe=ue.lineOffset/2-(ae.imageName?-(Yt-ae.metrics.width*ae.scale)/2:(ae.scale-1)*Yt)),ae.imageName){let Qt=Q[ae.imageName];Pe=Qt.sdf,we=Qt.pixelRatio,ye=1/we}let st=N?[ae.x+ot,ae.y]:[0,0],dt=N?[0,0]:[ae.x+ot+F[0],ae.y+F[1]-xe],fi=[0,0];Le&&(fi=dt,dt=[0,0]);let zt=ae.metrics.isDoubleResolution?2:1,qt=(ae.metrics.left-ye)*ae.scale-ot+dt[0],Jt=(-ae.metrics.top-ye)*ae.scale+dt[1],bt=qt+ne.w/zt*ae.scale/we,si=Jt+ne.h/zt*ae.scale/we,Ti=new fe(qt,Jt),Si=new fe(bt,Jt),Gi=new fe(qt,si),mi=new fe(bt,si);if(Le){let Qt=new fe(-ot,ot- -17),Mt=-Math.PI/2,Ut=12-ot,kt=new fe(22-Ut,-(ae.imageName?Ut:0)),ei=new fe(...fi);Ti._rotateAround(Mt,Qt)._add(kt)._add(ei),Si._rotateAround(Mt,Qt)._add(kt)._add(ei),Gi._rotateAround(Mt,Qt)._add(kt)._add(ei),mi._rotateAround(Mt,Qt)._add(kt)._add(ei)}if(re){let Qt=Math.sin(re),Mt=Math.cos(re),Ut=[Mt,-Qt,Qt,Mt];Ti._matMult(Ut),Si._matMult(Ut),Gi._matMult(Ut),mi._matMult(Ut)}let $i=new fe(0,0),yr=new fe(0,0);ce.push({tl:Ti,tr:Si,bl:Gi,br:mi,tex:ne,writingMode:R.writingMode,glyphOffset:st,sectionIndex:ae.sectionIndex,isSDF:Pe,pixelOffsetTL:$i,pixelOffsetBR:yr,minFontScaleX:0,minFontScaleY:0})}return ce})(0,i,p,a,l,u,o,r.allowVerticalPlacement),A=r.textSizeData,D=null;A.kind==="source"?(D=[kn*a.layout.get("text-size").evaluate(u,{})],D[0]>go&&ti(`${r.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):A.kind==="composite"&&(D=[kn*b.compositeTextSizes[0].evaluate(u,{},M),kn*b.compositeTextSizes[1].evaluate(u,{},M)],(D[0]>go||D[1]>go)&&ti(`${r.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),r.addSymbols(r.text,I,D,p,l,u,m,e,g.lineStartIndex,g.lineLength,T,M);for(let L of x)_[L]=r.text.placedSymbolArray.length-1;return 4*I.length}function Zm(r){for(let e in r)return r[e];return null}function ax(r,e,i,o){let a=r.compareText;if(e in a){let l=a[e];for(let u=l.length-1;u>=0;u--)if(o.dist(l[u])this.process())),this.subscription=Pa(this.target,"message",(i=>this.receive(i)),!1),this.globalScope=ii(self)?r:window}registerMessageHandler(r,e){this.messageHandlers[r]=e}unregisterMessageHandler(r){delete this.messageHandlers[r]}sendAsync(r,e){return new Promise(((i,o)=>{let a=Math.round(1e18*Math.random()).toString(36).substring(0,10),l=e?Pa(e.signal,"abort",(()=>{l?.unsubscribe(),delete this.resolveRejects[a];let g={id:a,type:"",origin:location.origin,targetMapId:r.targetMapId,sourceMapId:this.mapId};this.target.postMessage(g)}),yy):null;this.resolveRejects[a]={resolve:g=>{l?.unsubscribe(),i(g)},reject:g=>{l?.unsubscribe(),o(g)}};let u=[],p=Object.assign(Object.assign({},r),{id:a,sourceMapId:this.mapId,origin:location.origin,data:Sr(r.data,u)});this.target.postMessage(p,{transfer:u})}))}receive(r){let e=r.data,i=e.id,o=["file://","resource://android","null"],a=[e.origin,location.origin],l=e.origin===location.origin,u=a.some((p=>o.includes(p)));if((l||u)&&(!e.targetMapId||this.mapId===e.targetMapId)){if(e.type===""){delete this.tasks[i];let p=this.abortControllers[i];return delete this.abortControllers[i],void(p&&p.abort())}if(ii(self)||e.mustQueue)return this.tasks[i]=e,this.taskQueue.push(i),void this.invoker.trigger();this.processTask(i,e)}}process(){if(this.taskQueue.length===0)return;let r=this.taskQueue.shift(),e=this.tasks[r];delete this.tasks[r],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(r,e)}processTask(r,e){return h(this,void 0,void 0,(function*(){if(e.type===""){let a=this.resolveRejects[r];return delete this.resolveRejects[r],a?void(e.error?a.reject(Ct(na(e.error))):a.resolve(na(e.data))):void 0}if(!this.messageHandlers[e.type])return void this.completeTask(r,new Error(`Could not find a registered handler for ${e.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let i=na(e.data),o=new AbortController;this.abortControllers[r]=o;try{let a=yield this.messageHandlers[e.type](e.sourceMapId,i,o);this.completeTask(r,null,a)}catch(a){this.completeTask(r,Ct(a))}}))}completeTask(r,e,i){let o=[];delete this.abortControllers[r];let a={id:r,type:"",sourceMapId:this.mapId,origin:location.origin,error:e?Sr(e):null,data:Sr(i,o)};this.target.postMessage(a,{transfer:o})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},k.O=function(){var r=new $t(16);return $t!=Float32Array&&(r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=0,r[12]=0,r[13]=0,r[14]=0),r[0]=1,r[5]=1,r[10]=1,r[15]=1,r},k.P=fe,k.Q=function(r,e,i){var o,a,l,u,p,g,m,x,_,T,b,M,I=i[0],A=i[1],D=i[2];return e===r?(r[12]=e[0]*I+e[4]*A+e[8]*D+e[12],r[13]=e[1]*I+e[5]*A+e[9]*D+e[13],r[14]=e[2]*I+e[6]*A+e[10]*D+e[14],r[15]=e[3]*I+e[7]*A+e[11]*D+e[15]):(a=e[1],l=e[2],u=e[3],p=e[4],g=e[5],m=e[6],x=e[7],_=e[8],T=e[9],b=e[10],M=e[11],r[0]=o=e[0],r[1]=a,r[2]=l,r[3]=u,r[4]=p,r[5]=g,r[6]=m,r[7]=x,r[8]=_,r[9]=T,r[10]=b,r[11]=M,r[12]=o*I+p*A+_*D+e[12],r[13]=a*I+g*A+T*D+e[13],r[14]=l*I+m*A+b*D+e[14],r[15]=u*I+x*A+M*D+e[15]),r},k.R=Ui,k.S=function(r,e,i){var o=i[0],a=i[1],l=i[2];return r[0]=e[0]*o,r[1]=e[1]*o,r[2]=e[2]*o,r[3]=e[3]*o,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*l,r[9]=e[9]*l,r[10]=e[10]*l,r[11]=e[11]*l,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},k.T=Gh,k.U=function(r,e,i){var o=e[0],a=e[1],l=e[2],u=e[3],p=e[4],g=e[5],m=e[6],x=e[7],_=e[8],T=e[9],b=e[10],M=e[11],I=e[12],A=e[13],D=e[14],L=e[15],R=i[0],F=i[1],O=i[2],N=i[3];return r[0]=R*o+F*p+O*_+N*I,r[1]=R*a+F*g+O*T+N*A,r[2]=R*l+F*m+O*b+N*D,r[3]=R*u+F*x+O*M+N*L,r[4]=(R=i[4])*o+(F=i[5])*p+(O=i[6])*_+(N=i[7])*I,r[5]=R*a+F*g+O*T+N*A,r[6]=R*l+F*m+O*b+N*D,r[7]=R*u+F*x+O*M+N*L,r[8]=(R=i[8])*o+(F=i[9])*p+(O=i[10])*_+(N=i[11])*I,r[9]=R*a+F*g+O*T+N*A,r[10]=R*l+F*m+O*b+N*D,r[11]=R*u+F*x+O*M+N*L,r[12]=(R=i[12])*o+(F=i[13])*p+(O=i[14])*_+(N=i[15])*I,r[13]=R*a+F*g+O*T+N*A,r[14]=R*l+F*m+O*b+N*D,r[15]=R*u+F*x+O*M+N*L,r},k.V=function(r,e){let i={};for(let o of e)o in r&&(i[o]=r[o]);return i},k.W=_o,k.X=Vn,k.Y=qf,k.Z=Zf,k._=h,k.a=Co,k.a$=function(r){var e=new $t(3);return e[0]=r[0],e[1]=r[1],e[2]=r[2],e},k.a0=hr,k.a1=Ri,k.a2=Xs,k.a3=Qi,k.a4=Hf,k.a5=Zu,k.a6=Fe,k.a7=fc,k.a8=ma,k.a9=25,k.aA=function(r){var e=r[0],i=r[1];return Math.sqrt(e*e+i*i)},k.aB=function(r){return r[0]=0,r[1]=0,r},k.aC=function(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r},k.aD=gd,k.aE=et,k.aF=function(r,e,i,o){let a=e.y-r.y,l=e.x-r.x,u=o.y-i.y,p=o.x-i.x,g=u*l-p*a;if(g===0)return null;let m=(p*(r.y-i.y)-u*(r.x-i.x))/g;return new fe(r.x+m*l,r.y+m*a)},k.aG=zm,k.aH=vs,k.aI=function(r){let e=1/0,i=1/0,o=-1/0,a=-1/0;for(let l of r)e=Math.min(e,l.x),i=Math.min(i,l.y),o=Math.max(o,l.x),a=Math.max(a,l.y);return[e,i,o,a]},k.aJ=Yt,k.aK=Et,k.aL=function(r,e,i,o,a=!1){if(!i[0]&&!i[1])return[0,0];let l=a?o==="map"?-r.bearingInRadians:0:o==="viewport"?r.bearingInRadians:0;if(l){let u=Math.sin(l),p=Math.cos(l);i=[i[0]*p-i[1]*u,i[0]*u+i[1]*p]}return[a?i[0]:Et(e,i[0],r.zoom),a?i[1]:Et(e,i[1],r.zoom)]},k.aN=md,k.aO=Ud,k.aP=fd,k.aQ=r=>r.type==="symbol",k.aR=Lu,k.aS=yt,k.aT=Ru,k.aU=j,k.aV=Ie,k.aW=me,k.aX=sn,k.aY=Xf,k.aZ=J,k.a_=H,k.aa=bd,k.ab=r=>{let e=window.document.createElement("video");return e.muted=!0,new Promise((i=>{e.onloadstart=()=>{i(e)};for(let o of r){let a=window.document.createElement("source");rr(o)||(e.crossOrigin="Anonymous"),a.src=o,e.appendChild(a)}}))},k.ac=be,k.ad=function(){return Eo++},k.ae=c,k.af=Ds,k.ag=_c,k.ah=Ho,k.ai=Qr,k.aj=Qf,k.ak=function(r){let e={};if(r.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((i,o,a,l)=>{let u=a||l;return e[o]=!u||u.toLowerCase(),""})),e["max-age"]){let i=parseInt(e["max-age"],10);isNaN(i)?delete e["max-age"]:e["max-age"]=i}return e},k.al=gi,k.am=85.051129,k.an=Or,k.ao=function(r){return Math.pow(2,r)},k.ap=On,k.aq=Wf,k.ar=function(r){return Math.log(r)/Math.LN2},k.as=function(r){var e=r[0],i=r[1];return e*e+i*i},k.at=function(r){if(!r.length)return new Set;let e=Math.max(...r.map((g=>g.canonical.z))),i=1/0,o=-1/0,a=1/0,l=-1/0,u=[];for(let g of r){let{x:m,y:x,z:_}=g.canonical,T=Math.pow(2,e-_),b=m*T,M=x*T;u.push({id:g,x:b,y:M}),bo&&(o=b),Ml&&(l=M)}let p=new Set;for(let g of u)g.x!==i&&g.x!==o&&g.y!==a&&g.y!==l||p.add(g.id);return p},k.au=function(r,e){let i=Math.abs(2*r.wrap)-+(r.wrap<0),o=Math.abs(2*e.wrap)-+(e.wrap<0);return r.overscaledZ-e.overscaledZ||o-i||e.canonical.y-r.canonical.y||e.canonical.x-r.canonical.x},k.av=class{constructor(r,e){this.max=r,this.onRemove=e,this.reset()}reset(){for(let r in this.data)for(let e of this.data[r])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(r,e,i){let o=r.wrapped().key;this.data[o]===void 0&&(this.data[o]=[]);let a={value:e,timeout:void 0};if(i!==void 0&&(a.timeout=setTimeout((()=>{this.remove(r,a)}),i)),this.data[o].push(a),this.order.push(o),this.order.length>this.max){let l=this._getAndRemoveByKey(this.order[0]);l&&this.onRemove(l)}return this}has(r){return r.wrapped().key in this.data}getAndRemove(r){return this.has(r)?this._getAndRemoveByKey(r.wrapped().key):null}_getAndRemoveByKey(r){let e=this.data[r].shift();return e.timeout&&clearTimeout(e.timeout),this.data[r].length===0&&delete this.data[r],this.order.splice(this.order.indexOf(r),1),e.value}getByKey(r){let e=this.data[r];return e?e[0].value:null}get(r){return this.has(r)?this.data[r.wrapped().key][0].value:null}remove(r,e){if(!this.has(r))return this;let i=r.wrapped().key,o=e===void 0?0:this.data[i].indexOf(e),a=this.data[i][o];return this.data[i].splice(o,1),a.timeout&&clearTimeout(a.timeout),this.data[i].length===0&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(r){for(this.max=r;this.order.length>this.max;){let e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(r){let e=[];for(let i in this.data)for(let o of this.data[i])r(o.value)||e.push(o);for(let i of e)this.remove(i.value.tileID,i)}},k.aw=function(r,e){let i=0,o=0;if(r.kind==="constant")o=r.layoutSize;else if(r.kind!=="source"){let{interpolationType:a,minZoom:l,maxZoom:u}=r,p=a?gi(Bt.interpolationFactor(a,e,l,u),0,1):0;r.kind==="camera"?o=Oi.number(r.minSize,r.maxSize,p):i=p}return{uSizeT:i,uSize:o}},k.ay=function(r,{uSize:e,uSizeT:i},{lowerSize:o,upperSize:a}){return r.kind==="source"?o/kn:r.kind==="composite"?Oi.number(o/kn,a/kn,i):e},k.az=Ue,k.b=an,k.b$=_s,k.b0=function(r,e,i){return r[0]=e[0]-i[0],r[1]=e[1]-i[1],r[2]=e[2]-i[2],r},k.b1=function(r,e){var i=e[0],o=e[1],a=e[2],l=i*i+o*o+a*a;return l>0&&(l=1/Math.sqrt(l)),r[0]=e[0]*l,r[1]=e[1]*l,r[2]=e[2]*l,r},k.b2=ie,k.b3=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},k.b4=function(r,e,i){return r[0]=e[0]*i[0],r[1]=e[1]*i[1],r[2]=e[2]*i[2],r[3]=e[3]*i[3],r},k.b5=Mo,k.b6=function(r,e,i){let o=e[0]*i[0]+e[1]*i[1]+e[2]*i[2];return o===0?null:(-(r[0]*i[0]+r[1]*i[1]+r[2]*i[2])-i[3])/o},k.b7=ze,k.b8=function(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r[2]=e[2]*i,r[3]=e[3]*i,r},k.b9=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]+r[3]},k.bA=Qe,k.bB=function(r,e,i){var o=i[0],a=i[1],l=i[2],u=i[3],p=e[0],g=e[1],m=e[2],x=a*m-l*g,_=l*p-o*m,T=o*g-a*p;return r[0]=p+u*(x+=x)+a*(T+=T)-l*(_+=_),r[1]=g+u*_+l*x-o*T,r[2]=m+u*T+o*_-a*x,r},k.bC=function(r,e,i){let o=(a=[r[0],r[1],r[2],e[0],e[1],e[2],i[0],i[1],i[2]])[0]*((x=a[8])*(u=a[4])-(p=a[5])*(m=a[7]))+a[1]*(-x*(l=a[3])+p*(g=a[6]))+a[2]*(m*l-u*g);var a,l,u,p,g,m,x;if(o===0)return null;let _=ie([],[e[0],e[1],e[2]],[i[0],i[1],i[2]]),T=ie([],[i[0],i[1],i[2]],[r[0],r[1],r[2]]),b=ie([],[r[0],r[1],r[2]],[e[0],e[1],e[2]]),M=J([],_,-r[3]);return H(M,M,J([],T,-e[3])),H(M,M,J([],b,-i[3])),J(M,M,1/o),M},k.bD=vd,k.bE=function(){return new Float64Array(4)},k.bF=function(r,e,i,o){var a=[],l=[];return a[0]=e[0]-i[0],a[1]=e[1]-i[1],a[2]=e[2]-i[2],l[0]=a[0]*Math.cos(o)-a[1]*Math.sin(o),l[1]=a[0]*Math.sin(o)+a[1]*Math.cos(o),l[2]=a[2],r[0]=l[0]+i[0],r[1]=l[1]+i[1],r[2]=l[2]+i[2],r},k.bG=function(r,e,i,o){var a=[],l=[];return a[0]=e[0]-i[0],a[1]=e[1]-i[1],a[2]=e[2]-i[2],l[0]=a[0],l[1]=a[1]*Math.cos(o)-a[2]*Math.sin(o),l[2]=a[1]*Math.sin(o)+a[2]*Math.cos(o),r[0]=l[0]+i[0],r[1]=l[1]+i[1],r[2]=l[2]+i[2],r},k.bH=function(r,e,i,o){var a=[],l=[];return a[0]=e[0]-i[0],a[1]=e[1]-i[1],a[2]=e[2]-i[2],l[0]=a[2]*Math.sin(o)+a[0]*Math.cos(o),l[1]=a[1],l[2]=a[2]*Math.cos(o)-a[0]*Math.sin(o),r[0]=l[0]+i[0],r[1]=l[1]+i[1],r[2]=l[2]+i[2],r},k.bI=function(r,e,i){var o=Math.sin(i),a=Math.cos(i),l=e[0],u=e[1],p=e[2],g=e[3],m=e[8],x=e[9],_=e[10],T=e[11];return e!==r&&(r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=l*a-m*o,r[1]=u*a-x*o,r[2]=p*a-_*o,r[3]=g*a-T*o,r[8]=l*o+m*a,r[9]=u*o+x*a,r[10]=p*o+_*a,r[11]=g*o+T*a,r},k.bJ=function(r,e){let i=ir(r,360),o=ir(e,360),a=o-i,l=o>i?a-360:a+360;return Math.abs(a)0?u:-u},k.bM=function(r,e){let i=ir(r,2*Math.PI),o=ir(e,2*Math.PI);return Math.min(Math.abs(i-o),Math.abs(i-o+2*Math.PI),Math.abs(i-o-2*Math.PI))},k.bN=function(){let r={},e=he.$version;for(let i in he.$root){let o=he.$root[i];if(o.required){let a=null;a=i==="version"?e:o.type==="array"?[]:{},a!=null&&(r[i]=a)}}return r},k.bO=Js,k.bP=Fl,k.bQ=function r(e,i){if(Array.isArray(e)){if(!Array.isArray(i)||e.length!==i.length)return!1;for(let o=0;or.type==="raster",k.bV=Oe,k.bW=function(r,e){if(!r)return[{command:"setStyle",args:[e]}];let i=[];try{if(!ut(r.version,e.version))return[{command:"setStyle",args:[e]}];ut(r.center,e.center)||i.push({command:"setCenter",args:[e.center]}),ut(r.state,e.state)||i.push({command:"setGlobalState",args:[e.state]}),ut(r.centerAltitude,e.centerAltitude)||i.push({command:"setCenterAltitude",args:[e.centerAltitude]}),ut(r.zoom,e.zoom)||i.push({command:"setZoom",args:[e.zoom]}),ut(r.bearing,e.bearing)||i.push({command:"setBearing",args:[e.bearing]}),ut(r.pitch,e.pitch)||i.push({command:"setPitch",args:[e.pitch]}),ut(r.roll,e.roll)||i.push({command:"setRoll",args:[e.roll]}),ut(r.sprite,e.sprite)||i.push({command:"setSprite",args:[e.sprite]}),ut(r.glyphs,e.glyphs)||i.push({command:"setGlyphs",args:[e.glyphs]}),ut(r.transition,e.transition)||i.push({command:"setTransition",args:[e.transition]}),ut(r.light,e.light)||i.push({command:"setLight",args:[e.light]}),ut(r.terrain,e.terrain)||i.push({command:"setTerrain",args:[e.terrain]}),ut(r.sky,e.sky)||i.push({command:"setSky",args:[e.sky]}),ut(r.projection,e.projection)||i.push({command:"setProjection",args:[e.projection]});let o={},a=[];(function(u,p,g,m){let x;for(x in p=p||{},u=u||{})Object.prototype.hasOwnProperty.call(u,x)&&(Object.prototype.hasOwnProperty.call(p,x)||Sc(x,g,m));for(x in p)Object.prototype.hasOwnProperty.call(p,x)&&(Object.prototype.hasOwnProperty.call(u,x)?ut(u[x],p[x])||(u[x].type==="geojson"&&p[x].type==="geojson"&&ch(u,p,x)?Ei(g,{command:"setGeoJSONSourceData",args:[x,p[x].data]}):Pc(x,p,g,m)):un(x,p,g))})(r.sources,e.sources,a,o);let l=[];r.layers&&r.layers.forEach((u=>{"source"in u&&o[u.source]?i.push({command:"removeLayer",args:[u.id]}):l.push(u)})),i=i.concat(a),(function(u,p,g){p=p||[];let m=(u=u||[]).map(tl),x=p.map(tl),_=u.reduce(Mc,{}),T=p.reduce(Mc,{}),b=m.slice(),M=Object.create(null),I,A,D,L,R;for(let F=0,O=0;F_e?(a=Math.acos(l),u=Math.sin(a),p=Math.sin((1-o)*a)/u,g=Math.sin(o*a)/u):(p=1-o,g=o),r[0]=p*m+g*b,r[1]=p*x+g*M,r[2]=p*_+g*I,r[3]=p*T+g*A,r},k.bm=function(r){let e=new Float64Array(9);var i,o,a,l,u,p,g,m,x,_,T,b,M,I,A,D,L,R;_=(a=(o=r)[0])*(g=a+a),T=(l=o[1])*g,M=(u=o[2])*g,I=u*(m=l+l),D=(p=o[3])*g,L=p*m,R=p*(x=u+u),(i=e)[0]=1-(b=l*m)-(A=u*x),i[3]=T-R,i[6]=M+L,i[1]=T+R,i[4]=1-_-A,i[7]=I-D,i[2]=M-L,i[5]=I+D,i[8]=1-_-b;let F=sn(-Math.asin(gi(e[2],-1,1))),O,N;return Math.hypot(e[5],e[8])<.001?(O=0,N=-sn(Math.atan2(e[3],e[4]))):(O=sn(e[5]===0&&e[8]===0?0:Math.atan2(e[5],e[8])),N=sn(e[1]===0&&e[0]===0?0:Math.atan2(e[1],e[0]))),{roll:O,pitch:F+90,bearing:N}},k.bn=function(r,e){return r.roll==e.roll&&r.pitch==e.pitch&&r.bearing==e.bearing},k.bo=qe,k.bp=Ir,k.bq=Ps,k.br=ac,k.bs=Ss,k.bt=qi,k.bu=Lr,k.bv=yi,k.bw=function(r,e,i,o,a){return qi(o,a,gi((r-e)/(i-e),0,1))},k.bx=function(r,e,i,o){return r[0]=e[0]+i[0]*o,r[1]=e[1]+i[1]*o,r[2]=e[2]+i[2]*o,r},k.by=ir,k.bz=function(){return new Float64Array(3)},k.c=Vr,k.c$=Wo,k.c0=class extends hi{constructor(r,e){super(r,e),this.current=gr}set(r){if(r[12]!==this.current[12]||r[0]!==this.current[0])return this.current=r,void this.gl.uniformMatrix4fv(this.location,!1,r);for(let e=1;e<16;e++)if(r[e]!==this.current[e]){this.current=r,this.gl.uniformMatrix4fv(this.location,!1,r);break}}},k.c1=Yr,k.c2=class extends hi{constructor(r,e){super(r,e),this.current=[0,0,0]}set(r){r[0]===this.current[0]&&r[1]===this.current[1]&&r[2]===this.current[2]||(this.current=r,this.gl.uniform3f(this.location,r[0],r[1],r[2]))}},k.c3=class extends hi{constructor(r,e){super(r,e),this.current=[0,0]}set(r){r[0]===this.current[0]&&r[1]===this.current[1]||(this.current=r,this.gl.uniform2f(this.location,r[0],r[1]))}},k.c4=rn,k.c5=function(r,e){var i=Math.sin(e),o=Math.cos(e);return r[0]=o,r[1]=i,r[2]=0,r[3]=-i,r[4]=o,r[5]=0,r[6]=0,r[7]=0,r[8]=1,r},k.c6=function(r,e,i){var o=e[0],a=e[1],l=e[2];return r[0]=o*i[0]+a*i[3]+l*i[6],r[1]=o*i[1]+a*i[4]+l*i[7],r[2]=o*i[2]+a*i[5]+l*i[8],r},k.c7=function(r,e,i,o,a,l,u){var p=1/(e-i),g=1/(o-a),m=1/(l-u);return r[0]=-2*p,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=-2*g,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=2*m,r[11]=0,r[12]=(e+i)*p,r[13]=(a+o)*g,r[14]=(u+l)*m,r[15]=1,r},k.c8=class extends hi{constructor(r,e){super(r,e),this.current=new Array}set(r){if(r!=this.current){this.current=r;let e=new Float32Array(4*r.length);for(let i=0;i25||o<0||o>=1||i<0||i>=1)},k.cE=function(r,e){return r[0]=e[0],r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=e[1],r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=e[2],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},k.cF=class extends us{},k.cG=Nn,k.cH=function(r,e){Vr.REGISTERED_PROTOCOLS[r]=e},k.cI=function(r){delete Vr.REGISTERED_PROTOCOLS[r]},k.cJ=function(r,e){let i={};for(let a=0;aye*Yt))}let ce=g?"center":a.get("text-justify").evaluate(_,{},r.canonical),ue=a.get("symbol-placement")==="point"?a.get("text-max-width").evaluate(_,{},r.canonical)*Yt:1/0,ae=()=>{r.bucket.allowVerticalPlacement&&Bl(N)&&(A.vertical=Uu(D,r.glyphMap,r.glyphPositions,r.imagePositions,T,ue,p,oe,"left",Q,R,k.ax.vertical,!0,M,b))};if(!g&&re){let ne=new Set;if(ce==="auto")for(let Pe=0;PeZy(p,g,l)),o.layers[u])})(r,i,e),i.finish()},k.cT=function(r,e,i,o,a,l){let u=km(r,e,i,a,0);return u=km(u,e,o,l,1),u},k.cU=class{constructor(r){this.maxEntries=r,this.map=new Map}get(r){let e=this.map.get(r);return e!==void 0&&(this.map.delete(r),this.map.set(r,e)),e}set(r,e){if(this.map.has(r))this.map.delete(r);else if(this.map.size>=this.maxEntries){let i=this.map.keys().next().value;this.map.delete(i)}this.map.set(r,e)}clear(){this.map.clear()}},k.cV=rf,k.cW=Nu,k.cX=Em,k.cY=function(r,e,i,o,a){return h(this,void 0,void 0,(function*(){if(Ri())try{return yield Xs(r,e,i,o,a)}catch{}return(function(l,u,p,g,m){let x=l.width,_=l.height;Br&&jn||(Br=new OffscreenCanvas(x,_),jn=Br.getContext("2d",{willReadFrequently:!0})),Br.width=x,Br.height=_,jn.drawImage(l,0,0,x,_);let T=jn.getImageData(u,p,g,m);return jn.clearRect(0,0,x,_),T.data})(r,e,i,o,a)}))},k.cZ=$p,k.c_=class{constructor(r,e){this.layers={[_c]:this},this.name=_c,this.version=e?e.version:1,this.extent=e?e.extent:4096,this.length=r.length,this.features=r}feature(r){return new $y(this.features[r],this.extent)}},k.ca=class extends Cn{},k.cb=U0,k.cc=class extends da{},k.cd=Uh,k.ce=function(r){return r<=1?1:Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))},k.cf=jp,k.cg=function(r,e,i){var o=e[0],a=e[1],l=e[2],u=i[3]*o+i[7]*a+i[11]*l+i[15];return r[0]=(i[0]*o+i[4]*a+i[8]*l+i[12])/(u=u||1),r[1]=(i[1]*o+i[5]*a+i[9]*l+i[13])/u,r[2]=(i[2]*o+i[6]*a+i[10]*l+i[14])/u,r},k.ch=class extends hs{},k.ci=class extends t{},k.cj=function(r,e){return r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]&&r[3]===e[3]&&r[4]===e[4]&&r[5]===e[5]&&r[6]===e[6]&&r[7]===e[7]&&r[8]===e[8]&&r[9]===e[9]&&r[10]===e[10]&&r[11]===e[11]&&r[12]===e[12]&&r[13]===e[13]&&r[14]===e[14]&&r[15]===e[15]},k.ck=function(r,e){var i=r[0],o=r[1],a=r[2],l=r[3],u=r[4],p=r[5],g=r[6],m=r[7],x=r[8],_=r[9],T=r[10],b=r[11],M=r[12],I=r[13],A=r[14],D=r[15],L=e[0],R=e[1],F=e[2],O=e[3],N=e[4],K=e[5],Q=e[6],oe=e[7],re=e[8],ce=e[9],ue=e[10],ae=e[11],ne=e[12],ye=e[13],Pe=e[14],we=e[15];return Math.abs(i-L)<=_e*Math.max(1,Math.abs(i),Math.abs(L))&&Math.abs(o-R)<=_e*Math.max(1,Math.abs(o),Math.abs(R))&&Math.abs(a-F)<=_e*Math.max(1,Math.abs(a),Math.abs(F))&&Math.abs(l-O)<=_e*Math.max(1,Math.abs(l),Math.abs(O))&&Math.abs(u-N)<=_e*Math.max(1,Math.abs(u),Math.abs(N))&&Math.abs(p-K)<=_e*Math.max(1,Math.abs(p),Math.abs(K))&&Math.abs(g-Q)<=_e*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(m-oe)<=_e*Math.max(1,Math.abs(m),Math.abs(oe))&&Math.abs(x-re)<=_e*Math.max(1,Math.abs(x),Math.abs(re))&&Math.abs(_-ce)<=_e*Math.max(1,Math.abs(_),Math.abs(ce))&&Math.abs(T-ue)<=_e*Math.max(1,Math.abs(T),Math.abs(ue))&&Math.abs(b-ae)<=_e*Math.max(1,Math.abs(b),Math.abs(ae))&&Math.abs(M-ne)<=_e*Math.max(1,Math.abs(M),Math.abs(ne))&&Math.abs(I-ye)<=_e*Math.max(1,Math.abs(I),Math.abs(ye))&&Math.abs(A-Pe)<=_e*Math.max(1,Math.abs(A),Math.abs(Pe))&&Math.abs(D-we)<=_e*Math.max(1,Math.abs(D),Math.abs(we))},k.cl=function(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},k.cm=r=>r.type==="circle",k.cn=r=>r.type==="heatmap",k.co=r=>r.type==="line",k.cp=r=>r.type==="fill",k.cq=r=>r.type==="fill-extrusion",k.cr=r=>r.type==="hillshade",k.cs=r=>r.type==="color-relief",k.ct=r=>r.type==="background",k.cu=r=>r.type==="custom",k.cv=nn,k.cw=function(r,e,i){if(e<=0)return r;let o=1/e;return i===void 0||Math.abs(i)<1e-10?Math.round(r*o)/o:(i>0?Math.ceil(r*o-1e-9):Math.floor(r*o+1e-10))/o},k.cx=function(r,e,i){let o=at(e.x-i.x,e.y-i.y),a=at(r.x-i.x,r.y-i.y);var l,u;return sn(Math.atan2(o[0]*a[1]-o[1]*a[0],(l=o)[0]*(u=a)[0]+l[1]*u[1]))},k.cy=Io,k.cz=function(r,e){var i;if(!Ks[e])return!1;let o=r?.target,a=((i=o?.ownerDocument)===null||i===void 0?void 0:i.defaultView)||window;return r instanceof a.MouseEvent||r instanceof a.WheelEvent},k.d=Ct,k.d0=class{constructor(r,e){let i=(e=this.options=Object.assign({},D0,e)).debug;if(i&&console.time("preprocess data"),e.maxZoom<0||e.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");let o=ed(r,e);i&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",e.indexMaxZoom,e.indexMaxPoints),console.time("generate tiles")),o=nd(o,e),e.updateable&&(this.source=o),this.initializeIndex(o,e)}initializeIndex(r,e){this.tileIndex=e.cluster?new S0(e.clusterOptions):new A0(e),r.length&&this.tileIndex.initialize(r)}getTile(r,e,i){return e=+e,i=+i,(r=+r)<0||r>24?null:this.tileIndex.getTile(r,e,i)}updateData(r,e){let i=this.options;if(!i.updateable)throw new Error("to update tile geojson `updateable` option must be set to true");let{affected:o,source:a}=(function(l,u,p){let g=(function(x,_){return x?{removeAll:x.removeAll,remove:new Set(x.remove||[]),add:new Map(x.add?.map((T=>[_.promoteId?T.properties[_.promoteId]:T.id,T]))),update:new Map(x.update?.map((T=>[T.id,T])))}:{remove:new Set,add:new Map,update:new Map}})(u,p),m=[];if(g.removeAll&&(m=l,l=[]),g.remove.size||g.add.size){let x=[];for(let _ of l)(g.remove.has(_.id)||g.add.has(_.id))&&x.push(_);if(x.length){m.push(...x);let _=new Set(x.map((T=>T.id)));l=l.filter((T=>!_.has(T.id)))}if(g.add.size){let _=ed({type:"FeatureCollection",features:Array.from(g.add.values())},p);_=nd(_,p),m.push(..._),l.push(..._)}}if(g.update.size){let x=new Map,_=[];for(let T of l)g.update.has(T.id)?x.set(T.id,[...x.get(T.id)||[],T]):_.push(T);for(let[T,b]of g.update){let M=x.get(T);if(!M||M.length===0)continue;let I=T0(M,b,p);m.push(...M,...I),_.push(...I)}l=_}return{affected:m,source:l}})(this.source,r,i);e&&({affected:o,source:a}=this.filterUpdate(a,o,e)),o.length&&(this.source=a,this.tileIndex.updateIndex(a,o,i))}filterUpdate(r,e,i){let o=new Set;for(let a of r)a.id!=null&&(i(Bu(a))||(e.push(a),o.add(a.id)));return{affected:e,source:r=r.filter((a=>!o.has(a.id)))}}getData(){if(!this.options.updateable)throw new Error("to retrieve data the `updateable` option must be set to true");return{type:"FeatureCollection",features:this.source.map((r=>Bu(r)))}}updateClusterOptions(r,e){let i=this.options.cluster;this.options.cluster=r,this.options.clusterOptions=e,i!=r?this.initializeIndex(this.source,this.options):this.tileIndex.updateIndex(this.source,[],this.options)}getClusterExpansionZoom(r){return this.tileIndex.getClusterExpansionZoom(r)}getClusterChildren(r){return this.tileIndex.getChildren(r)}getClusterLeaves(r,e,i){return this.tileIndex.getLeaves(r,e,i)}},k.d1=Pr,k.e=Wi,k.f=rr,k.g=xr,k.h=r=>h(void 0,void 0,void 0,(function*(){if(r.byteLength===0)return createImageBitmap(new ImageData(1,1));let e=new Blob([new Uint8Array(r)],{type:"image/png"});try{return createImageBitmap(e)}catch(i){throw new Error(`Could not load image because of ${Ct(i).message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}})),k.i=ii,k.j=r=>new Promise(((e,i)=>{let o=new Image;o.onload=()=>{e(o),URL.revokeObjectURL(o.src),o.onload=null,window.requestAnimationFrame((()=>o.src=Hs))},o.onerror=()=>i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let a=new Blob([new Uint8Array(r)],{type:"image/png"});o.src=r.byteLength?URL.createObjectURL(a):Hs})),k.k=(r,e)=>ln(Wi(r,{type:"json"}),e),k.l=Gn,k.m=ln,k.n=Ao,k.o=(r,e)=>ln(Wi(r,{type:"arrayBuffer"}),e),k.p=kf,k.q=function(r){return new Nu(r).readFields(ry,[])},k.r=function(r){return/[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(r))},k.s=Pa,k.t=tc,k.u=xi,k.v=ta,k.w=ti,k.x=he,k.y=Gl,k.z=ji})),de("worker",["./shared"],(function(k){"use strict";class h{constructor(H,J){this.keyCache={},H&&this.replace(H,J)}replace(H,J){this._layerConfigs={},this._layers={},this.update(H,[],J)}update(H,J,ie){for(let ze of H){this._layerConfigs[ze.id]=ze;let et=this._layers[ze.id]=k.bT(ze,ie);et._featureFilter=k.ah(et.filter,ie),this.keyCache[ze.id]&&delete this.keyCache[ze.id]}for(let ze of J)delete this.keyCache[ze],delete this._layerConfigs[ze],delete this._layers[ze];this.familiesBySource={};let ve=k.cJ(Object.values(this._layerConfigs),this.keyCache);for(let ze of ve){let et=ze.map((Et=>this._layers[Et.id])),Be=et[0];if(Be.isHidden())continue;let Qe=Be.source||"",Ue=this.familiesBySource[Qe];Ue||(Ue=this.familiesBySource[Qe]={});let at=Be.sourceLayer||k.ag,Fe=Ue[at];Fe||(Fe=Ue[at]=[]),Fe.push(et)}}}class fe{constructor(H){let J={},ie=[];for(let Be in H){let Qe=H[Be],Ue=J[Be]={};for(let at in Qe){let Fe=Qe[+at];if(!Fe||Fe.bitmap.width===0||Fe.bitmap.height===0)continue;let Et={x:0,y:0,w:Fe.bitmap.width+2,h:Fe.bitmap.height+2};ie.push(Et),Ue[at]={rect:Et,metrics:Fe.metrics}}}let{w:ve,h:ze}=k.p(ie),et=new k.t({width:ve||1,height:ze||1});for(let Be in H){let Qe=H[Be];for(let Ue in Qe){let at=Qe[+Ue];if(!at||at.bitmap.width===0||at.bitmap.height===0)continue;let Fe=J[Be][Ue].rect;k.t.copy(at.bitmap,et,{x:0,y:0},{x:Fe.x+1,y:Fe.y+1},at.bitmap)}}this.image=et,this.positions=J}}k.cK("GlyphAtlas",fe);class Ze{constructor(H){this.tileID=new k.a3(H.tileID.overscaledZ,H.tileID.wrap,H.tileID.canonical.z,H.tileID.canonical.x,H.tileID.canonical.y),this.uid=H.uid,this.zoom=H.zoom,this.pixelRatio=H.pixelRatio,this.tileSize=H.tileSize,this.source=H.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=H.showCollisionBoxes,this.collectResourceTiming=!!H.collectResourceTiming,this.returnDependencies=!!H.returnDependencies,this.promoteId=H.promoteId,this.inFlightDependencies=[]}parse(H,J,ie,ve,ze){return k._(this,void 0,void 0,(function*(){this.status="parsing",this.data=H,this.collisionBoxArray=new k.ae;let et=new k.cL(Object.keys(H.layers).sort()),Be=new k.cM(this.tileID,this.promoteId);Be.bucketLayerIDs=[];let Qe={},Ue={featureIndex:Be,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:ie,subdivisionGranularity:ze},at=J.familiesBySource[this.source];for(let Oe in at){let Wt=H.layers[Oe];if(!Wt)continue;Wt.version===1&&k.w(`Vector tile source "${this.source}" layer "${Oe}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let ti=et.encode(Oe),Li=[];for(let ii=0;iian.id))))}}let Fe=k.bY(Ue.glyphDependencies,(Oe=>Object.keys(Oe).map(Number)));for(let Oe of this.inFlightDependencies)Oe?.abort();this.inFlightDependencies=[];let Et=Promise.resolve({});if(Object.keys(Fe).length){let Oe=new AbortController;this.inFlightDependencies.push(Oe),Et=ve.sendAsync({type:"GG",data:{stacks:Fe,source:this.source,tileID:this.tileID,type:"glyphs"}},Oe)}let Ct=Object.keys(Ue.iconDependencies),ir=Promise.resolve({});if(Ct.length){let Oe=new AbortController;this.inFlightDependencies.push(Oe),ir=ve.sendAsync({type:"GI",data:{icons:Ct,source:this.source,tileID:this.tileID,type:"icons"}},Oe)}let qi=Object.keys(Ue.patternDependencies),Lr=Promise.resolve({});if(qi.length){let Oe=new AbortController;this.inFlightDependencies.push(Oe),Lr=ve.sendAsync({type:"GI",data:{icons:qi,source:this.source,tileID:this.tileID,type:"patterns"}},Oe)}let nn=Ue.dashDependencies,Io=Promise.resolve({});if(Object.keys(nn).length){let Oe=new AbortController;this.inFlightDependencies.push(Oe),Io=ve.sendAsync({type:"GDA",data:{dashes:nn}},Oe)}let[gi,Vn,Wi,Eo]=yield Promise.all([Et,ir,Lr,Io]),Fr=new fe(gi),on=new k.cN(Vn,Wi);for(let Oe in Qe){let Wt=Qe[Oe];Wt instanceof k.af?(nt(Wt.layers,this.zoom,ie),k.cO({bucket:Wt,glyphMap:gi,glyphPositions:Fr.positions,imageMap:Vn,imagePositions:on.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:Ue.subdivisionGranularity})):Wt.hasDependencies&&(Wt instanceof k.cP||Wt instanceof k.cQ||Wt instanceof k.cR)&&(nt(Wt.layers,this.zoom,ie),Wt.addFeatures(Ue,this.tileID.canonical,on.patternPositions,Eo))}return this.status="done",{buckets:Object.values(Qe).filter((Oe=>!Oe.isEmpty())),featureIndex:Be,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Fr.image,imageAtlas:on,dashPositions:Eo,glyphMap:this.returnDependencies?gi:null,iconMap:this.returnDependencies?Vn:null,glyphPositions:this.returnDependencies?Fr.positions:null}}))}}function nt(it,H,J){let ie=new k.J(H);for(let ve of it)ve.recalculate(ie,J)}class Gt{constructor(){this.loading={},this.loaded={},this.parsing={}}startLoading(H,J){this.loading[H]=J}finishLoading(H){delete this.loading[H]}abort(H){let J=this.loading[H];J?.abort&&(J.abort.abort(),delete this.loading[H])}setParsing(H,J){this.parsing[H]=J}consumeParsing(H){let J=this.parsing[H];if(J)return delete this.parsing[H],J}clearParsing(H){delete this.parsing[H]}markLoaded(H,J){this.loaded[H]=J}getLoaded(H){let J=this.loaded[H];if(J)return J}removeLoaded(H){delete this.loaded[H]}clearLoaded(){this.loaded={}}}class We{constructor(H){this.start=`${H}#start`,this.end=`${H}#end`,this.measure=H,performance.mark(this.start)}finish(){performance.mark(this.end);let H=performance.getEntriesByName(this.measure);return H.length===0&&(performance.measure(this.measure,this.start,this.end),H=performance.getEntriesByName(this.measure),performance.clearMarks(this.start),performance.clearMarks(this.end),performance.clearMeasures(this.measure)),H}}class He{constructor(H,J,ie,ve,ze){this.type=H,this.properties=ie||{},this.extent=ze,this.pointsArray=J,this.id=ve}loadGeometry(){return this.pointsArray.map((H=>H.map((J=>new k.P(J.x,J.y)))))}}class It{constructor(H,J,ie){this.version=2,this._myFeatures=H,this.name=J,this.length=H.length,this.extent=ie}feature(H){return this._myFeatures[H]}}class Xe{constructor(){this.layers={}}addLayer(H){this.layers[H.name]=H}}function hr(it){let H=k.cS(it);return H.byteOffset===0&&H.byteLength===H.buffer.byteLength||(H=new Uint8Array(H)),{vectorTile:it,rawData:H.buffer}}function Ri(it,H,J){let{extent:ie}=it,ve=Math.pow(2,J.z-H.z),ze=(J.x-H.x*ve)*ie,et=(J.y-H.y*ve)*ie,Be=[];for(let Qe=0;Qe0&&at.addLayer(qi)}let Et=hr(at);return this.overzoomedTileResultCache.set(Qe,Et),Et}reloadTile(H){return k._(this,void 0,void 0,(function*(){let J=H.uid,ie=this.tileState.getLoaded(J);if(!ie)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(ie.showCollisionBoxes=H.showCollisionBoxes,ie.status==="parsing"){let ve=this.tileState.consumeParsing(J);return yield this._parseWorkerTile(ie,H,ve)}if(ie.status==="done"&&ie.vectorTile)return yield this._parseWorkerTile(ie,H)}))}abortTile(H){return k._(this,void 0,void 0,(function*(){this.tileState.abort(H.uid)}))}removeTile(H){return k._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(H.uid)}))}}class $t{constructor(){this.loaded={}}loadTile(H){return k._(this,void 0,void 0,(function*(){let{uid:J,encoding:ie,rawImageData:ve,redFactor:ze,greenFactor:et,blueFactor:Be,baseShift:Qe}=H,Ue=ve.width+2,at=ve.height+2,Fe=k.b(ve)?new k.R({width:Ue,height:at},yield k.cY(ve,-1,-1,Ue,at)):ve,Et=new k.cZ(J,Fe,ie,ze,et,Be,Qe);return this.loaded||(this.loaded={}),this.loaded[J]=Et,Et}))}removeTile(H){let J=this.loaded,ie=H.uid;J?.[ie]&&delete J[ie]}}class rn{constructor(H,J,ie,ve=On){this.actor=H,this.layerIndex=J,this.availableImages=ie,this.tileState=new Gt,this._createGeoJSONIndex=ve}loadVectorTile(H){if(!this._geoJSONIndex)throw new Error("Unable to parse the data into a cluster or geojson");let{z:J,x:ie,y:ve}=H.tileID.canonical,ze=this._geoJSONIndex.getTile(J,ie,ve);return ze?hr(new k.c_(ze.features,{version:2,extent:k.a6})):null}loadTile(H){return k._(this,void 0,void 0,(function*(){let{uid:J}=H,ie=new Ze(H);ie.abort=new AbortController;try{let ve=this.loadVectorTile(H);if(!ve)return null;let{vectorTile:ze,rawData:et}=ve;ie.vectorTile=ze,this.tileState.markLoaded(J,ie);let Be={rawData:et};this.tileState.setParsing(J,Be);try{return yield this._parseWorkerTile(ie,H,Be)}finally{this.tileState.clearParsing(J)}}catch(ve){throw ie.status="done",this.tileState.markLoaded(J,ie),ve}}))}_reloadLoadedTile(H){return k._(this,void 0,void 0,(function*(){let J=H.uid,ie=this.tileState.getLoaded(J);if(!ie)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(ie.showCollisionBoxes=H.showCollisionBoxes,ie.status==="parsing"){let ve=this.tileState.consumeParsing(J);return yield this._parseWorkerTile(ie,H,ve)}if(ie.status==="done"&&ie.vectorTile)return yield this._parseWorkerTile(ie,H)}))}_parseWorkerTile(H,J,ie){return k._(this,void 0,void 0,(function*(){let ve=yield H.parse(H.vectorTile,this.layerIndex,this.availableImages,this.actor,J.subdivisionGranularity);if(ie){let{rawData:ze}=ie;ve=k.e({rawTileData:ze.slice(0),encoding:"mvt"},ve)}return ve}))}abortTile(H){return k._(this,void 0,void 0,(function*(){this.tileState.abort(H.uid)}))}removeTile(H){return k._(this,void 0,void 0,(function*(){this.tileState.removeLoaded(H.uid)}))}loadData(H){return k._(this,void 0,void 0,(function*(){var J;(J=this._pendingRequest)===null||J===void 0||J.abort();let ie=this._startRequestTiming(H);this._pendingRequest=new AbortController;try{yield this.loadAndProcessGeoJSON(H,this._pendingRequest),delete this._pendingRequest,this.tileState.clearLoaded();let ve={};return H.request&&(ve.data=H.data),this._finishRequestTiming(ie,H,ve),ve}catch(ve){if(delete this._pendingRequest,!k.$(ve))throw ve;return{abandoned:!0}}}))}_startRequestTiming(H){var J;if(!((J=H.request)===null||J===void 0)&&J.collectResourceTiming)return new We(H.request.url)}_finishRequestTiming(H,J,ie){let ve=H?.finish();ve&&(ie.resourceTiming={[J.source]:JSON.parse(JSON.stringify(ve))})}reloadTile(H){return this.tileState.getLoaded(H.uid)?this._reloadLoadedTile(H):this.loadTile(H)}loadAndProcessGeoJSON(H,J){return k._(this,void 0,void 0,(function*(){var ie;if(H.request&&(H.data=(yield k.k(H.request,J)).data),H.data)return H.data=this._filterGeoJSON(H.data,H.filter),void(this._geoJSONIndex=this._createGeoJSONIndex(H.data,H));if(H.dataDiff)return(ie=this._geoJSONIndex)!==null&&ie!==void 0||(this._geoJSONIndex=this._createGeoJSONIndex({type:"FeatureCollection",features:[]},H)),void this._geoJSONIndex.updateData(H.dataDiff,this._getFilterPredicate(H.filter));if(H.updateCluster&&this._geoJSONIndex.updateClusterOptions(H.geojsonVtOptions.cluster,Po(H)),this._geoJSONIndex==null)throw new Error(`Input data given to '${H.source}' is not a valid GeoJSON object.`)}))}_filterGeoJSON(H,J){if(H.type!=="FeatureCollection")return H;let ie=this._getFilterPredicate(J);return ie?{type:"FeatureCollection",features:H.features.filter((ve=>ie(ve)))}:H}_getFilterPredicate(H){if(typeof H!="boolean"&&!H?.length)return;let J=k.c$(H,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(J.result==="error")throw new Error(J.value.map((ie=>`${ie.key}: ${ie.message}`)).join(", "));return ie=>J.value.evaluate({zoom:0},ie)}removeSource(H){return k._(this,void 0,void 0,(function*(){var J;(J=this._pendingRequest)===null||J===void 0||J.abort()}))}getClusterExpansionZoom(H){return this._geoJSONIndex.getClusterExpansionZoom(H.clusterId)}getClusterChildren(H){return this._geoJSONIndex.getClusterChildren(H.clusterId)}getClusterLeaves(H){return this._geoJSONIndex.getClusterLeaves(H.clusterId,H.limit,H.offset)}}function On(it,H){let J=k.e(H.geojsonVtOptions||{},{updateable:!0,clusterOptions:Po(H)});return new k.d0(it,J)}function Po({geojsonVtOptions:it,clusterProperties:H}){if(!H||!it.clusterOptions)return it.clusterOptions;let J={},ie={},ve={accumulated:null,zoom:0},ze={properties:null},et=Object.keys(H);for(let Be of et){let[Qe,Ue]=H[Be],at=k.c$(Ue),Fe=k.c$(typeof Qe=="string"?[Qe,["accumulated"],["get",Be]]:Qe);J[Be]=at.value,ie[Be]=Fe.value}return it.clusterOptions.map=Be=>{ze.properties=Be;let Qe={};for(let Ue of et)Qe[Ue]=J[Ue].evaluate(ve,ze);return Qe},it.clusterOptions.reduce=(Be,Qe)=>{ze.properties=Qe;for(let Ue of et)ve.accumulated=Be[Ue],Be[Ue]=ie[Ue].evaluate(ve,ze)},it.clusterOptions}class Mo{constructor(H){this.self=H,this.actor=new k.N(H),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(J,ie)=>{if(this.externalWorkerSourceTypes[J])throw new Error(`Worker source with name "${J}" already registered.`);this.externalWorkerSourceTypes[J]=ie},this.self.addProtocol=k.cH,this.self.removeProtocol=k.cI,this.self.registerRTLTextPlugin=J=>{k.d1.setMethods(J)},this.self.makeRequest=k.m,this.actor.registerMessageHandler("LDT",((J,ie)=>this._getDEMWorkerSource(J,ie.source).loadTile(ie))),this.actor.registerMessageHandler("RDT",((J,ie)=>k._(this,void 0,void 0,(function*(){this._getDEMWorkerSource(J,ie.source).removeTile(ie)})))),this.actor.registerMessageHandler("GCEZ",((J,ie)=>k._(this,void 0,void 0,(function*(){return this._getWorkerSource(J,ie.type,ie.source).getClusterExpansionZoom(ie)})))),this.actor.registerMessageHandler("GCC",((J,ie)=>k._(this,void 0,void 0,(function*(){return this._getWorkerSource(J,ie.type,ie.source).getClusterChildren(ie)})))),this.actor.registerMessageHandler("GCL",((J,ie)=>k._(this,void 0,void 0,(function*(){return this._getWorkerSource(J,ie.type,ie.source).getClusterLeaves(ie)})))),this.actor.registerMessageHandler("LD",((J,ie)=>this._getWorkerSource(J,ie.type,ie.source).loadData(ie))),this.actor.registerMessageHandler("LT",((J,ie)=>this._getWorkerSource(J,ie.type,ie.source).loadTile(ie))),this.actor.registerMessageHandler("RT",((J,ie)=>this._getWorkerSource(J,ie.type,ie.source).reloadTile(ie))),this.actor.registerMessageHandler("AT",((J,ie)=>this._getWorkerSource(J,ie.type,ie.source).abortTile(ie))),this.actor.registerMessageHandler("RMT",((J,ie)=>this._getWorkerSource(J,ie.type,ie.source).removeTile(ie))),this.actor.registerMessageHandler("RS",((J,ie)=>k._(this,void 0,void 0,(function*(){var ve,ze;if(!(!((ze=(ve=this.workerSources[J])===null||ve===void 0?void 0:ve[ie.type])===null||ze===void 0)&&ze[ie.source]))return;let et=this.workerSources[J][ie.type][ie.source];delete this.workerSources[J][ie.type][ie.source],et.removeSource!==void 0&&et.removeSource(ie)})))),this.actor.registerMessageHandler("RM",(J=>k._(this,void 0,void 0,(function*(){delete this.layerIndexes[J],delete this.availableImages[J],delete this.workerSources[J],delete this.demWorkerSources[J],this.globalStates.delete(J)})))),this.actor.registerMessageHandler("SR",((J,ie)=>k._(this,void 0,void 0,(function*(){this.referrer=ie})))),this.actor.registerMessageHandler("SRPS",((J,ie)=>this._syncRTLPluginState(J,ie))),this.actor.registerMessageHandler("IS",((J,ie)=>k._(this,void 0,void 0,(function*(){this.self.importScripts(ie)})))),this.actor.registerMessageHandler("SI",((J,ie)=>this._setImages(J,ie))),this.actor.registerMessageHandler("UL",((J,ie)=>k._(this,void 0,void 0,(function*(){this._getLayerIndex(J).update(ie.layers,ie.removedIds,this._getGlobalState(J))})))),this.actor.registerMessageHandler("UGS",((J,ie)=>k._(this,void 0,void 0,(function*(){let ve=this._getGlobalState(J);for(let ze in ie)ve[ze]=ie[ze]})))),this.actor.registerMessageHandler("SL",((J,ie)=>k._(this,void 0,void 0,(function*(){this._getLayerIndex(J).replace(ie,this._getGlobalState(J))}))))}_getGlobalState(H){let J=this.globalStates.get(H);return J||(J={},this.globalStates.set(H,J)),J}_setImages(H,J){return k._(this,void 0,void 0,(function*(){this.availableImages[H]=J;for(let ie in this.workerSources[H]){let ve=this.workerSources[H][ie];for(let ze in ve)ve[ze].availableImages=J}}))}_syncRTLPluginState(H,J){return k._(this,void 0,void 0,(function*(){return yield k.d1.syncState(J,this.self.importScripts)}))}_getAvailableImages(H){let J=this.availableImages[H];return J||(J=[]),J}_getLayerIndex(H){let J=this.layerIndexes[H];return J||(J=this.layerIndexes[H]=new h),J}_getWorkerSource(H,J,ie){var ve,ze;if((ve=this.workerSources)[H]||(ve[H]={}),(ze=this.workerSources[H])[J]||(ze[J]={}),!this.workerSources[H][J][ie]){let et={sendAsync:(Be,Qe)=>(Be.targetMapId=H,this.actor.sendAsync(Be,Qe))};switch(J){case"vector":this.workerSources[H][J][ie]=new _e(et,this._getLayerIndex(H),this._getAvailableImages(H));break;case"geojson":this.workerSources[H][J][ie]=new rn(et,this._getLayerIndex(H),this._getAvailableImages(H));break;default:this.workerSources[H][J][ie]=new this.externalWorkerSourceTypes[J](et,this._getLayerIndex(H),this._getAvailableImages(H))}}return this.workerSources[H][J][ie]}_getDEMWorkerSource(H,J){var ie,ve;return(ie=this.demWorkerSources)[H]||(ie[H]={}),(ve=this.demWorkerSources[H])[J]||(ve[J]=new $t),this.demWorkerSources[H][J]}}return k.i(self)&&(self.worker=new Mo(self)),Mo})),de("index",["exports","./shared"],(function(k,h){"use strict";var fe="5.24.0";function Ze(){var d=new h.A(4);return h.A!=Float32Array&&(d[1]=0,d[2]=0),d[0]=1,d[3]=1,d}let nt,Gt,We,He={frame(d,t,n,s){let c=s||window,f=c.requestAnimationFrame((v=>{y(),t(v)})),{unsubscribe:y}=h.s(d.signal,"abort",(()=>{y(),c.cancelAnimationFrame(f),n(new h.a(d.signal.reason))}),!1)},frameAsync(d,t){return new Promise(((n,s)=>{this.frame(d,n,s,t)}))},getImageData(d,t=0){return this.getImageCanvasContext(d).getImageData(-t,-t,d.width+2*t,d.height+2*t)},getImageCanvasContext(d){let t=window.document.createElement("canvas"),n=t.getContext("2d",{willReadFrequently:!0});if(!n)throw new Error("failed to create canvas 2d context");return t.width=d.width,t.height=d.height,n.drawImage(d,0,0,d.width,d.height),n},resolveURL:d=>(nt||(nt=document.createElement("a")),nt.href=d,nt.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return We!==void 0?We:!!matchMedia&&(Gt!=null||(Gt=matchMedia("(prefers-reduced-motion: reduce)")),Gt.matches)},set prefersReducedMotion(d){We=d}},It=new class{constructor(){this._frozenAt=null}getCurrentTime(){return this._frozenAt!==null?this._frozenAt:performance.now()}setNow(d){this._frozenAt=d}restoreNow(){this._frozenAt=null}isFrozen(){return this._frozenAt!==null}};function Xe(){return It.getCurrentTime()}var hr,Ri;class _e{static create(t,n,s){let c=window.document.createElement(t);return n!==void 0&&(c.className=n),s&&s.appendChild(c),c}static createNS(t,n){return window.document.createElementNS(t,n)}static disableDrag(){_e.docStyle&&_e.selectProp&&(_e.userSelect=_e.docStyle[_e.selectProp],_e.docStyle[_e.selectProp]="none")}static enableDrag(){_e.docStyle&&_e.selectProp&&(_e.docStyle[_e.selectProp]=_e.userSelect)}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",_e.suppressClickInternal,!0)}static suppressClick(){window.addEventListener("click",_e.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",_e.suppressClickInternal,!0)}),0)}static getScale(t){let n=t.getBoundingClientRect();return{x:n.width/t.offsetWidth||1,y:n.height/t.offsetHeight||1,boundingClientRect:n}}static getPoint(t,n,s){let c=n.boundingClientRect;return new h.P((s.clientX-c.left)/n.x-t.clientLeft,(s.clientY-c.top)/n.y-t.clientTop)}static mousePos(t,n){let s=_e.getScale(t);return _e.getPoint(t,s,n)}static touchPos(t,n){let s=[],c=_e.getScale(t);for(let f of n)s.push(_e.getPoint(t,c,f));return s}static sanitize(t){let n=new DOMParser().parseFromString(t,"text/html").body||document.createElement("body"),s=n.querySelectorAll("script");for(let c of s)c.remove();return _e.clean(n),n.innerHTML}static isPossiblyDangerous(t,n){let s=n.replace(/\s+/g,"").toLowerCase();return!(!["src","href","xlink:href"].includes(t)||!s.includes("javascript:")&&!s.includes("data:"))||!!t.startsWith("on")||void 0}static clean(t){let n=t.children;for(let s of n)_e.removeAttributes(s),_e.clean(s)}static removeAttributes(t){for(let{name:n,value:s}of t.attributes)_e.isPossiblyDangerous(n,s)&&t.removeAttribute(n)}}_e.docStyle=typeof window<"u"&&((hr=window.document)===null||hr===void 0?void 0:hr.documentElement.style),_e.selectProp=!_e.docStyle||"userSelect"in _e.docStyle?"userSelect":"webkitUserSelect",(function(d){let t,n,s,c;d.resetRequestQueue=()=>{t=[],n=0,s=0,c={}},d.addThrottleControl=w=>{let S=s++;return c[S]=w,S},d.removeThrottleControl=w=>{delete c[w],y()},d.getImage=(w,S,P=!0)=>new Promise(((E,C)=>{w.headers||(w.headers={}),w.headers.accept="image/webp,*/*",h.e(w,{type:"image"}),t.push({abortController:S,requestParameters:w,supportImageRefresh:P,state:"queued",onError:z=>{C(z)},onSuccess:z=>{E(z)}}),y()}));let f=w=>h._(this,void 0,void 0,(function*(){w.state="running";let{requestParameters:S,supportImageRefresh:P,onError:E,onSuccess:C,abortController:z}=w,B=P===!1&&!h.i(self)&&!h.g(S.url)&&(!S.headers||Object.keys(S.headers).reduce(((U,Z)=>U&&Z==="accept"),!0));n++;let j=B?v(S,z):h.m(S,z);try{let U=yield j;delete w.abortController,w.state="completed",U.data instanceof HTMLImageElement||h.b(U.data)?C(U):U.data&&C({data:yield($=U.data,typeof createImageBitmap=="function"?h.h($):h.j($)),cacheControl:U.cacheControl,expires:U.expires})}catch(U){delete w.abortController,E(h.d(U))}finally{n--,y()}var $})),y=()=>{let w=(()=>{for(let S of Object.keys(c))if(c[S]())return!0;return!1})()?h.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:h.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let S=n;S0;S++){let P=t.shift();P.abortController.signal.aborted?S--:f(P)}},v=(w,S)=>new Promise(((P,E)=>{let C=new Image,z=w.url,B=w.credentials;B&&B==="include"?C.crossOrigin="use-credentials":(B&&B==="same-origin"||!h.f(z))&&(C.crossOrigin="anonymous"),S.signal.addEventListener("abort",(()=>{C.src="",E(new h.a(S.signal.reason))})),C.fetchPriority="high",C.onload=()=>{C.onerror=C.onload=null,P({data:C})},C.onerror=()=>{C.onerror=C.onload=null,S.signal.aborted||E(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},C.src=z}))})(Ri||(Ri={})),Ri.resetRequestQueue();class $t{constructor(t){this._transformRequestFn=t??null}transformRequest(t,n){return this._transformRequestFn&&this._transformRequestFn(t,n)||{url:t}}setTransformRequest(t){this._transformRequestFn=t}}function rn(d){let t=[];if(typeof d=="string")t.push({id:"default",url:d});else if(d&&d.length>0){let n=[];for(let{id:s,url:c}of d){let f=`${s}${c}`;n.includes(f)||(n.push(f),t.push({id:s,url:c}))}}return t}function On(d,t,n){try{let s=new URL(d);return s.pathname+=`${t}${n}`,s.toString()}catch{throw new Error(`Invalid sprite URL "${d}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function Po(d){let{userImage:t}=d;return!(!t?.render||!t.render()||(d.data.replace(new Uint8Array(t.data.buffer)),0))}class Mo extends h.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new h.R({width:1,height:1}),this.dirty=!0}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(let t of Object.keys(this.images))this.removeImage(t);this.patterns={},this.atlasImage=new h.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(let{ids:n,promiseResolve:s}of this.requestors)s(this._getImagesForIds(n));this.requestors=[]}}getImage(t){let n=this.images[t];if(n&&!n.data&&n.spriteData){let s=n.spriteData;n.data=new h.R({width:s.width,height:s.height},s.context.getImageData(s.x,s.y,s.width,s.height).data),n.spriteData=null}return n}addImage(t,n){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,n)&&(this.images[t]=n)}_validate(t,n){let s=!0,c=n.data||n.spriteData;return this._validateStretch(n.stretchX,c?.width)||(this.fire(new h.l(new Error(`Image "${t}" has invalid "stretchX" value`))),s=!1),this._validateStretch(n.stretchY,c?.height)||(this.fire(new h.l(new Error(`Image "${t}" has invalid "stretchY" value`))),s=!1),this._validateContent(n.content,n)||(this.fire(new h.l(new Error(`Image "${t}" has invalid "content" value`))),s=!1),s}_validateStretch(t,n){if(!t)return!0;let s=0;for(let c of t){if(c[0]=t[1]))}updateImage(t,n,s=!0){let c=this.getImage(t);if(s&&(c.data.width!==n.data.width||c.data.height!==n.data.height))throw new Error(`size mismatch between old image (${c.data.width}x${c.data.height}) and new image (${n.data.width}x${n.data.height}).`);n.version=c.version+1,this.images[t]=n,this.updatedImages[t]=!0}removeImage(t){var n;let s=this.images[t];delete this.images[t],delete this.patterns[t],!((n=s.userImage)===null||n===void 0)&&n.onRemove&&s.userImage.onRemove()}listImages(){return Object.keys(this.images)}getImages(t){return new Promise(((n,s)=>{let c=!0;if(!this.isLoaded())for(let f of t)this.images[f]||(c=!1);this.isLoaded()||c?n(this._getImagesForIds(t)):this.requestors.push({ids:t,promiseResolve:n})}))}_getImagesForIds(t){var n;let s={};for(let c of t){let f=this.getImage(c);f||(this.fire(new h.n("styleimagemissing",{id:c})),f=this.getImage(c)),f?s[c]={data:f.data.clone(),pixelRatio:f.pixelRatio,sdf:f.sdf,version:f.version,stretchX:f.stretchX,stretchY:f.stretchY,content:f.content,textFitWidth:f.textFitWidth,textFitHeight:f.textFitHeight,hasRenderCallback:!!(!((n=f.userImage)===null||n===void 0)&&n.render)}:h.w(`Image "${c}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return s}getPixelSize(){let{width:t,height:n}=this.atlasImage;return{width:t,height:n}}getPattern(t){let n=this.patterns[t],s=this.getImage(t);if(!s)return null;if(n&&n.position.version===s.version)return n.position;if(n)n.position.version=s.version;else{let c={w:s.data.width+2,h:s.data.height+2,x:0,y:0},f=new h.I(c,s);this.patterns[t]={bin:c,position:f}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){let n=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new h.T(t,this.atlasImage,n.RGBA),this.atlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}_updatePatternAtlas(){let t=[];for(let f in this.patterns)t.push(this.patterns[f].bin);let{w:n,h:s}=h.p(t),c=this.atlasImage;c.resize({width:n||1,height:s||1});for(let f in this.patterns){let{bin:y}=this.patterns[f],v=y.x+1,w=y.y+1,S=this.getImage(f).data,P=S.width,E=S.height;h.R.copy(S,c,{x:0,y:0},{x:v,y:w},{width:P,height:E}),h.R.copy(S,c,{x:0,y:E-1},{x:v,y:w-1},{width:P,height:1}),h.R.copy(S,c,{x:0,y:0},{x:v,y:w+E},{width:P,height:1}),h.R.copy(S,c,{x:P-1,y:0},{x:v-1,y:w},{width:1,height:E}),h.R.copy(S,c,{x:0,y:0},{x:v+P,y:w},{width:1,height:E})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(t){for(let n of t){if(this.callbackDispatchedThisFrame[n])continue;this.callbackDispatchedThisFrame[n]=!0;let s=this.getImage(n);s||h.w(`Image with ID: "${n}" was not found`),Po(s)&&this.updateImage(n,s)}}cloneImages(){let t={};for(let n in this.images){let s=this.images[n];t[n]=Object.assign(Object.assign({},s),{data:s.data?s.data.clone():null})}return t}}let it=1e20,H=new Float64Array(256);for(let d=0;d<256;d++){let t=.5-Math.pow(d/255,.45454545454545453);H[d]=t*Math.abs(t)}function J(d,t,n,s,c,f,y,v,w){for(let S=t;S-1);w++,f[w]=v,y[w]=S,y[w+1]=it}for(let v=0,w=0;v/[-\w]+/.test(c)?c:`'${CSS.escape(c)}'`)).join(",");return new ze.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:s,fontWeight:this._fontWeight(n[0]),fontStyle:this._fontStyle(n[0]),lang:this.lang})}_fontStyle(t){return/italic/i.test(t)?"italic":/oblique/i.test(t)?"oblique":"normal"}_fontWeight(t){let n={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950},s;for(let[c,f]of Object.entries(n))new RegExp(`\\b${c}\\b`,"i").test(t)&&(s=`${f}`);return s}destroy(){for(let t in this.entries){let n=this.entries[t];n.tinySDF=null,n.ideographTinySDF=null,n.glyphs={},n.requests={},n.ranges={}}this.entries={}}}ze.loadGlyphRange=function(d,t,n,s){return h._(this,void 0,void 0,(function*(){let c=256*t,f=c+255,y=yield s.transformRequest(n.replace("{fontstack}",d).replace("{range}",`${c}-${f}`),"Glyphs"),v=yield h.o(y,new AbortController);if(!v?.data)throw new Error(`Could not load glyph range. range: ${t}, ${c}-${f}`);let w={};for(let S of h.q(v.data))w[S.id]=S;return w}))},ze.TinySDF=class{constructor({fontSize:d=24,buffer:t=3,radius:n=8,cutoff:s=.25,fontFamily:c="sans-serif",fontWeight:f="normal",fontStyle:y="normal",lang:v=null}={}){this.buffer=t,this.radius=n,this.cutoff=s,this.lang=v;let w=this.size=d+4*t,S=this._createCanvas(w),P=this.ctx=S.getContext("2d",{willReadFrequently:!0});P.font=`${y} ${f} ${d}px ${c}`,P.textBaseline="alphabetic",P.textAlign="left",P.fillStyle="black",this.gridOuter=new Float64Array(w*w),this.gridInner=new Float64Array(w*w),this.f=new Float64Array(w),this.z=new Float64Array(w+1),this.v=new Uint16Array(w)}_createCanvas(d){if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(d,d);let t=document.createElement("canvas");return t.width=t.height=d,t}draw(d){let{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:s,actualBoundingBoxLeft:c,actualBoundingBoxRight:f}=this.ctx.measureText(d),y=Math.ceil(n),v=Math.floor(c),w=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(f)-v)),S=Math.max(0,Math.min(this.size-this.buffer,y+Math.ceil(s))),P=w+2*this.buffer,E=S+2*this.buffer,C=Math.max(P*E,0),z=new Uint8ClampedArray(C),B={data:z,width:P,height:E,glyphWidth:w,glyphHeight:S,glyphTop:y,glyphLeft:v,glyphAdvance:t};if(w===0||S===0)return B;let{ctx:j,buffer:$,gridInner:U,gridOuter:Z}=this;this.lang&&(j.lang=this.lang),j.clearRect($,$,w,S),j.fillText(d,$-v,$+y);let Y=j.getImageData($,$,w,S);Z.fill(it,0,C),U.fill(0,0,C);let q=3;for(let W=0;W1&&(w=t[++v]);let P=Math.abs(S-w.left),E=Math.abs(S-w.right),C=Math.min(P,E),z,B=f/s*(c+1);if(w.isDash){let j=c-Math.abs(B);z=Math.sqrt(C*C+j*j)}else z=c-Math.sqrt(C*C+B*B);this.data[y+S]=Math.max(0,Math.min(255,z+128))}}}addRegularDash(t){for(let v=t.length-1;v>=0;--v){let w=t[v],S=t[v+1];w.zeroLength?t.splice(v,1):S&&S.isDash===w.isDash&&(S.left=w.left,t.splice(v,1))}let n=t[0],s=t[t.length-1];n.isDash===s.isDash&&(n.left=s.left-this.width,s.right=n.right+this.width);let c=this.width*this.nextRow,f=0,y=t[f];for(let v=0;v1&&(y=t[++f]);let w=Math.abs(v-y.left),S=Math.abs(v-y.right),P=Math.min(w,S);this.data[c+v]=Math.max(0,Math.min(255,(y.isDash?P:-P)+128))}}addDash(t,n){let s=n?7:0,c=2*s+1;if(this.nextRow+c>this.height)return h.w("LineAtlas out of space"),null;let f=0;for(let v of t)f+=v;if(f!==0){let v=this.width/f,w=this.getDashRanges(t,this.width,v);n?this.addRoundDash(w,v,s):this.addRegularDash(w)}let y={y:this.nextRow+s,height:2*s,width:f};return this.nextRow+=c,this.dirty=!0,y}bind(t){let n=t.gl;this.texture?(n.bindTexture(n.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,n.texSubImage2D(n.TEXTURE_2D,0,0,0,this.width,this.height,n.ALPHA,n.UNSIGNED_BYTE,this.data))):(this.texture=n.createTexture(),n.bindTexture(n.TEXTURE_2D,this.texture),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),n.texImage2D(n.TEXTURE_2D,0,n.ALPHA,this.width,this.height,0,n.ALPHA,n.UNSIGNED_BYTE,this.data))}}let Et="maplibre_preloaded_worker_pool";class Ct{constructor(){this.active={}}acquire(t){if(!this.workers)for(this.workers=[];this.workers.lengthh.m(t,n)))),Lr}function Vn(d,t){let n=h.O();return h.Q(n,n,[1,1,0]),h.S(n,n,[.5*d.width,.5*d.height,1]),d.calculatePosMatrix?h.U(n,n,d.calculatePosMatrix(t.toUnwrapped())):n}function Wi(d,t,n,s,c,f,y){var v;let w=(function(C,z,B){if(C)for(let j of C){let $=z[j];if($?.source===B&&$.type==="fill-extrusion")return!0}else for(let j in z){let $=z[j];if($.source===B&&$.type==="fill-extrusion")return!0}return!1})((v=c?.layers)!==null&&v!==void 0?v:null,t,d.id),S=f.maxPitchScaleFactor(),P=d.tilesIn(s,S,w);P.sort(Eo);let E=[];for(let C of P)E.push({wrappedTileID:C.tileID.wrapped().key,queryResults:C.tile.queryRenderedFeatures(t,n,d.getState(),C.queryGeometry,C.cameraQueryGeometry,C.scale,c,f,S,Vn(f,C.tileID),y?(z,B)=>y(C.tileID,z,B):void 0)});return(function(C,z){for(let B in C)for(let j of C[B])Fr(j,z);return C})((function(C){let z={},B={};for(let{queryResults:j,wrappedTileID:$}of C){B[$]||(B[$]={});let U=B[$];for(let Z in j){let Y=j[Z];U[Z]||(U[Z]={});let q=U[Z];z[Z]||(z[Z]=[]);for(let G of Y)q[G.featureIndex]||(q[G.featureIndex]=!0,z[Z].push(G))}}return z})(E),d)}function Eo(d,t){let n=d.tileID,s=t.tileID;return n.overscaledZ-s.overscaledZ||n.canonical.y-s.canonical.y||n.wrap-s.wrap||n.canonical.x-s.canonical.x}function Fr(d,t){let n=d.feature,s=t.getFeatureState(n.layer["source-layer"],n.id);n.source=n.layer.source,n.layer["source-layer"]&&(n.sourceLayer=n.layer["source-layer"]),n.state=s}function on(d,t,n,s){return h._(this,void 0,void 0,(function*(){let c=d;if(d.url?c=(yield h.k(yield t.transformRequest(d.url,"Source"),n)).data:yield He.frameAsync(n,s),!c)return null;let f=h.V(h.e(c,d),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in c&&c.vector_layers&&(f.vectorLayerIds=c.vector_layers.map((y=>y.id))),f}))}class Oe{constructor(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):Array.isArray(t)&&(t.length===4?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof h.W?new h.W(t.lng,t.lat):h.W.convert(t),this}setSouthWest(t){return this._sw=t instanceof h.W?new h.W(t.lng,t.lat):h.W.convert(t),this}extend(t){let n=this._sw,s=this._ne,c,f;if(t instanceof h.W)c=t,f=t;else{if(!(t instanceof Oe))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(Oe.convert(t)):this.extend(h.W.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(h.W.convert(t)):this;if(c=t._sw,f=t._ne,!c||!f)return this}return n||s?(n.lng=Math.min(c.lng,n.lng),n.lat=Math.min(c.lat,n.lat),s.lng=Math.max(f.lng,s.lng),s.lat=Math.max(f.lat,s.lat)):(this._sw=new h.W(c.lng,c.lat),this._ne=new h.W(f.lng,f.lat)),this}getCenter(){return new h.W((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new h.W(this.getWest(),this.getNorth())}getSouthEast(){return new h.W(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(t){let{lng:n,lat:s}=h.W.convert(t),c=this._sw.lng<=n&&n<=this._ne.lng;return this._sw.lng>this._ne.lng&&(c=this._sw.lng>=n&&n>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&c}intersects(t){if(!((t=Oe.convert(t)).getNorth()>=this.getSouth()&&t.getSouth()<=this.getNorth()))return!1;let n=Math.abs(this.getEast()-this.getWest()),s=Math.abs(t.getEast()-t.getWest());if(n>=360||s>=360)return!0;let c=h.X(this.getWest(),-180,180),f=h.X(this.getEast(),-180,180),y=h.X(t.getWest(),-180,180),v=h.X(t.getEast(),-180,180),w=c>f,S=y>v;return!(!w||!S)||(w?v>=c||y<=f:S?f>=y||c<=v:y<=f&&v>=c)}static convert(t){return t instanceof Oe?t:t&&new Oe(t)}static fromLngLat(t,n=0){let s=360*n/40075017,c=s/Math.cos(Math.PI/180*t.lat);return new Oe(new h.W(t.lng-c,t.lat-s),new h.W(t.lng+c,t.lat+s))}adjustAntiMeridian(){let t=new h.W(this._sw.lng,this._sw.lat),n=new h.W(this._ne.lng,this._ne.lat);return new Oe(t,t.lng>n.lng?new h.W(n.lng+360,n.lat):n)}}class Wt{constructor(t,n,s){this.bounds=Oe.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=s||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){let n=Math.pow(2,t.z),s=Math.floor(h.Z(this.bounds.getWest())*n),c=Math.floor(h.Y(this.bounds.getNorth())*n),f=Math.ceil(h.Z(this.bounds.getEast())*n),y=Math.ceil(h.Y(this.bounds.getSouth())*n);return t.x>=s&&t.x=c&&t.y{this._options.tiles=t})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return h.e({},this._options)}loadTile(t){return h._(this,void 0,void 0,(function*(){let n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),s={request:yield this.map._requestManager.transformRequest(n,"Tile"),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:yield this._getOverzoomParameters(t),etag:t.etag};s.request.collectResourceTiming=this._collectResourceTiming;let c="RT";if(t.actor&&t.state!=="expired"){if(t.state==="loading")return new Promise(((f,y)=>{t.reloadPromise={resolve:f,reject:y}}))}else t.actor=this.dispatcher.getActor(),c="LT";t.abortController=new AbortController;try{let f=yield t.actor.sendAsync({type:c,data:s},t.abortController);if(delete t.abortController,t.aborted)return;this._afterTileLoadWorkerResponse(t,f);let y={};return f?.etagUnmodified&&(y.unmodified=!0),y}catch(f){if(delete t.abortController,t.aborted)return;if(f&&f.status!==404)throw f;this._afterTileLoadWorkerResponse(t,null)}}))}_getOverzoomParameters(t){return h._(this,void 0,void 0,(function*(){if(t.tileID.canonical.z<=this.maxzoom||this.map._zoomLevelsToOverscale===void 0)return;let n=t.tileID.scaledTo(this.maxzoom).canonical,s=n.url(this.tiles,this.map.getPixelRatio(),this.scheme);return{maxZoomTileID:n,overzoomRequest:yield this.map._requestManager.transformRequest(s,"Tile")}}))}_afterTileLoadWorkerResponse(t,n){if(n?.resourceTiming&&(t.resourceTiming=n.resourceTiming),n&&this.map._refreshExpiredTiles&&t.setExpiryData(n),t.etag=n?.etag,t.loadVectorData(n,this.map.painter),t.reloadPromise){let s=t.reloadPromise;t.reloadPromise=null,this.loadTile(t).then(s.resolve).catch(s.reject)}}abortTile(t){return h._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.actor&&(yield t.actor.sendAsync({type:"AT",data:{uid:t.uid,type:this.type,source:this.id}}))}))}unloadTile(t){return h._(this,void 0,void 0,(function*(){t.unloadVectorData(),t.actor&&(yield t.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}}))}))}hasTransition(){return!1}}class Li extends h.E{constructor(t,n,s,c){super(),this.id=t,this.dispatcher=s,this.setEventedParent(c),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=h.e({type:"raster"},n),h.e(this,h.V(n,["url","scheme","tileSize"]))}load(){return h._(this,arguments,void 0,(function*(t=!1){this._loaded=!1,this.fire(new h.n("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let n=yield on(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,n&&(h.e(this,n),n.bounds&&(this.tileBounds=new Wt(n.bounds,this.minzoom,this.maxzoom)),this.fire(new h.n("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new h.n("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:t})))}catch(n){this._tileJSONRequest=null,this._loaded=!0,h.$(n)||this.fire(new h.l(h.d(n)))}}))}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(t){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),t(),this.load(!0)}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t})),this}serialize(){return h.e({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t){return h._(this,void 0,void 0,(function*(){let n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.abortController=new AbortController;try{let s=yield Ri.getImage(yield this.map._requestManager.transformRequest(n,"Tile"),t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(s?.data){this.map._refreshExpiredTiles&&(s.cacheControl||s.expires)&&t.setExpiryData({cacheControl:s.cacheControl,expires:s.expires});let c=this.map.painter.context,f=c.gl,y=s.data;t.texture=this.map.painter.getTileTexture(y.width),t.texture?t.texture.update(y,{useMipmap:!0}):(t.texture=new h.T(c,y,f.RGBA,{useMipmap:!0}),t.texture.bind(f.LINEAR,f.CLAMP_TO_EDGE,f.LINEAR_MIPMAP_NEAREST)),t.state="loaded"}}catch(s){if(delete t.abortController,t.aborted)t.state="unloaded";else if(s)throw t.state="errored",s}}))}abortTile(t){return h._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController)}))}unloadTile(t){return h._(this,void 0,void 0,(function*(){t.texture&&this.map.painter.saveTileTexture(t.texture)}))}hasTransition(){return!1}}class ii extends Li{constructor(t,n,s,c){super(t,n,s,c),this.type="raster-dem",this.maxzoom=22,this._options=h.e({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox",this.redFactor=n.redFactor,this.greenFactor=n.greenFactor,this.blueFactor=n.blueFactor,this.baseShift=n.baseShift}loadTile(t){return h._(this,void 0,void 0,(function*(){let n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),s=yield this.map._requestManager.transformRequest(n,"Tile");t.neighboringTiles=this._getNeighboringTiles(t.tileID),t.abortController=new AbortController;try{let c=yield Ri.getImage(s,t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(c?.data){let f=c.data;this.map._refreshExpiredTiles&&(c.cacheControl||c.expires)&&t.setExpiryData({cacheControl:c.cacheControl,expires:c.expires});let y=h.b(f)&&h.a0()?f:yield this.readImageNow(f),v={type:this.type,uid:t.uid,source:this.id,rawImageData:y,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(t.actor&&t.state!=="expired"&&t.state!=="reloading")return;t.actor&&t.state!=="expired"||(t.actor=this.dispatcher.getActor()),t.dem=yield t.actor.sendAsync({type:"LDT",data:v}),t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded"}}catch(c){if(delete t.abortController,t.aborted)t.state="unloaded";else if(c)throw t.state="errored",c}}))}readImageNow(t){return h._(this,void 0,void 0,(function*(){if(typeof VideoFrame<"u"&&h.a1()){let n=t.width+2,s=t.height+2;try{return new h.R({width:n,height:s},yield h.a2(t,-1,-1,n,s))}catch{}}return He.getImageData(t,1)}))}_getNeighboringTiles(t){let n=t.canonical,s=Math.pow(2,n.z),c=(n.x-1+s)%s,f=n.x===0?t.wrap-1:t.wrap,y=(n.x+1+s)%s,v=n.x+1===s?t.wrap+1:t.wrap,w={};return w[new h.a3(t.overscaledZ,f,n.z,c,n.y).key]={backfilled:!1},w[new h.a3(t.overscaledZ,v,n.z,y,n.y).key]={backfilled:!1},n.y>0&&(w[new h.a3(t.overscaledZ,f,n.z,c,n.y-1).key]={backfilled:!1},w[new h.a3(t.overscaledZ,t.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},w[new h.a3(t.overscaledZ,v,n.z,y,n.y-1).key]={backfilled:!1}),n.y+1f.key===s));c>-1&&d.addOrUpdateProperties.splice(c,1)}return(d.removeAllProperties||t.removeAllProperties)&&(n.removeAllProperties=!0),(d.removeProperties||t.removeProperties)&&(n.removeProperties=[...d.removeProperties||[],...t.removeProperties||[]]),(d.addOrUpdateProperties||t.addOrUpdateProperties)&&(n.addOrUpdateProperties=[...d.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(d.newGeometry||t.newGeometry)&&(n.newGeometry=t.newGeometry||d.newGeometry),n}function Hs(d){var t,n;if(!d)return{};let s={};return s.removeAll=d.removeAll,s.remove=new Set(d.remove||[]),s.add=new Map((t=d.add)===null||t===void 0?void 0:t.map((c=>[c.id,c]))),s.update=new Map((n=d.update)===null||n===void 0?void 0:n.map((c=>[c.id,c]))),s}function Xs(d){return d&&d.length!==0?typeof d[0]=="number"?[d]:d.flatMap((t=>Xs(t))):[]}function Br(d){return d.type==="GeometryCollection"?d.geometries.flatMap((t=>Br(t))):Xs(d.coordinates)}function jn(d){let t=new Oe,n;switch(d.type){case"FeatureCollection":n=d.features.flatMap((s=>Br(s.geometry)));break;case"Feature":n=Br(d.geometry);break;default:n=Br(d)}if(n.length===0)return t;for(let s of n){let[c,f]=s;t.extend([c,f])}return t}class Pa extends h.E{constructor(t,n,s,c){super(),this.id=t,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._isUpdatingWorker=!1,this._pendingWorkerUpdate={data:n.data},this.actor=s.getActor(),this.setEventedParent(c),this._data=typeof n.data=="string"?{url:n.data}:{geojson:n.data},this._options=h.e({},n),this._collectResourceTiming=n.collectResourceTiming,n.maxzoom!==void 0&&(this.maxzoom=n.maxzoom),n.type&&(this.type=n.type),n.attribution&&(this.attribution=n.attribution),this.promoteId=n.promoteId,n.clusterMaxZoom!==void 0&&this.maxzoom<=n.clusterMaxZoom&&h.w(`The maxzoom value "${this.maxzoom}" is expected to be greater than the clusterMaxZoom value "${n.clusterMaxZoom}".`),this.workerOptions=h.e({source:this.id,geojsonVtOptions:{buffer:this._pixelsToTileUnits(n.buffer!==void 0?n.buffer:128),tolerance:this._pixelsToTileUnits(n.tolerance!==void 0?n.tolerance:.375),extent:h.a6,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1,generateId:n.generateId||!1,promoteId:typeof n.promoteId=="string"?n.promoteId:void 0,cluster:n.cluster||!1,clusterOptions:{maxZoom:this._getClusterMaxZoom(n.clusterMaxZoom),minPoints:Math.max(2,n.clusterMinPoints||2),extent:h.a6,radius:this._pixelsToTileUnits(n.clusterRadius||50),log:!1,generateId:n.generateId||!1}},clusterProperties:n.clusterProperties,filter:n.filter},n.workerOptions)}_hasPendingWorkerUpdate(){return this._pendingWorkerUpdate.data!==void 0||this._pendingWorkerUpdate.diff!==void 0||this._pendingWorkerUpdate.updateCluster}_pixelsToTileUnits(t){return t*(h.a6/this.tileSize)}_getClusterMaxZoom(t){let n=t?Math.round(t):this.maxzoom-1;return Number.isInteger(t)||t===void 0||h.w(`Integer expected for option 'clusterMaxZoom': provided value "${t}" rounded to "${n}"`),n}load(){return h._(this,void 0,void 0,(function*(){yield this._updateWorkerData()}))}onAdd(t){this.map=t,this.load()}setData(t,n){this._data=typeof t=="string"?{url:t}:{geojson:t},this._pendingWorkerUpdate={data:t};let s=this._updateWorkerData();return n?s:this}updateData(t,n){this._pendingWorkerUpdate.diff=(function(c,f){if(!c)return f||{};if(!f)return c||{};let y=Hs(c),v=Hs(f);(function(S,P){P.removeAll&&(S.add.clear(),S.update.clear(),S.remove.clear(),P.remove.clear());for(let E of P.remove)S.add.delete(E),S.update.delete(E);for(let[E,C]of P.update){let z=S.update.get(E);z&&(P.update.set(E,an(z,C)),S.update.delete(E))}})(y,v);let w={};if((y.removeAll||v.removeAll)&&(w.removeAll=!0),w.remove=new Set([...y.remove,...v.remove]),w.add=new Map([...y.add,...v.add]),w.update=new Map([...y.update,...v.update]),w.remove.size&&w.add.size)for(let S of w.add.keys())w.remove.delete(S);return(function(S){let P={};return S.removeAll&&(P.removeAll=S.removeAll),S.remove&&(P.remove=Array.from(S.remove)),S.add&&(P.add=Array.from(S.add.values())),S.update&&(P.update=Array.from(S.update.values())),P})(w)})(this._pendingWorkerUpdate.diff,t);let s=this._updateWorkerData();return n?s:this}getData(){return h._(this,void 0,void 0,(function*(){return this._data.url&&(yield this.once("data")),this._data.geojson?this._data.geojson:{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}}))}getBounds(){return h._(this,void 0,void 0,(function*(){return jn(yield this.getData())}))}setClusterOptions(t){return this.workerOptions.geojsonVtOptions.cluster=t.cluster,t.clusterRadius!==void 0&&(this.workerOptions.geojsonVtOptions.clusterOptions.radius=this._pixelsToTileUnits(t.clusterRadius)),t.clusterMaxZoom!==void 0&&(this.workerOptions.geojsonVtOptions.clusterOptions.maxZoom=this._getClusterMaxZoom(t.clusterMaxZoom)),this._pendingWorkerUpdate.updateCluster=!0,this._updateWorkerData(),this}getClusterExpansionZoom(t){return this.actor.sendAsync({type:"GCEZ",data:{type:this.type,clusterId:t,source:this.id}})}getClusterChildren(t){return this.actor.sendAsync({type:"GCC",data:{type:this.type,clusterId:t,source:this.id}})}getClusterLeaves(t,n,s){return this.actor.sendAsync({type:"GCL",data:{type:this.type,source:this.id,clusterId:t,limit:n,offset:s}})}_updateWorkerData(){return h._(this,void 0,void 0,(function*(){if(this._isUpdatingWorker)return;if(!this._hasPendingWorkerUpdate())return void h.w(`No pending worker updates for GeoJSONSource ${this.id}.`);let{data:t,diff:n,updateCluster:s}=this._pendingWorkerUpdate,c=this._getLoadGeoJSONParameters(t,n,s);t!==void 0?this._pendingWorkerUpdate.data=void 0:n?this._pendingWorkerUpdate.diff=void 0:s&&(this._pendingWorkerUpdate.updateCluster=void 0),yield this._dispatchWorkerUpdate(c)}))}_getLoadGeoJSONParameters(t,n,s){return h._(this,void 0,void 0,(function*(){let c=h.e({type:this.type},this.workerOptions);return typeof t=="string"?(c.request=yield this.map._requestManager.transformRequest(He.resolveURL(t),"Source"),c.request.collectResourceTiming=this._collectResourceTiming,c):t!==void 0?(c.data=t,c):n?(c.dataDiff=n,c):s?(c.updateCluster=!0,c):void 0}))}_dispatchWorkerUpdate(t){return h._(this,void 0,void 0,(function*(){this._isUpdatingWorker=!0,this.fire(new h.n("dataloading",{dataType:"source"}));try{let n=yield t,s=yield this.actor.sendAsync({type:"LD",data:n});if(this._isUpdatingWorker=!1,this._removed||s.abandoned)return void this.fire(new h.n("dataabort",{dataType:"source"}));s.data&&(this._data={geojson:s.data});let c=this._applyDiffToSource(n.dataDiff),f=this._getShouldReloadTileOptions(c),y={dataType:"source"};this._applyResourceTiming(y,s),this.fire(new h.n("data",Object.assign(Object.assign({},y),{sourceDataType:"metadata"}))),this.fire(new h.n("data",Object.assign(Object.assign({},y),{sourceDataType:"content",shouldReloadTileOptions:f})))}catch(n){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new h.n("dataabort",{dataType:"source"}));this.fire(new h.l(h.d(n)))}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData()}}))}_applyResourceTiming(t,n){var s;if(!this._collectResourceTiming)return;let c=(s=n.resourceTiming)===null||s===void 0?void 0:s[this.id];if(!c)return;let f=c.slice(0);f?.length&&h.e(t,{resourceTiming:f})}_applyDiffToSource(t){if(!t)return;let n=typeof this.promoteId=="string"?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){let c=(function(f,y){let v=new Map;if(f==null||f.type==null)return v;if(f.type==="Feature"){let w=Ii(f,y);return w==null?void 0:(v.set(w,f),v)}if(f.type==="FeatureCollection"){let w=new Set;for(let S of f.features){let P=Ii(S,y);if(P==null||w.has(P))return;w.add(P),v.set(P,S)}return v}})(this._data.geojson,n);if(!c)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:c}}if(!this._data.updateable)return;let s=(function(c,f,y){var v,w;let S=[];if(f.removeAll)c.clear();else if(f.remove)for(let P of f.remove){let E=c.get(P);E&&(S.push(E.geometry),c.delete(P))}if(f.add)for(let P of f.add){let E=Ii(P,y);if(E==null)continue;let C=c.get(E);C&&S.push(C.geometry),S.push(P.geometry),c.set(E,P)}if(f.update)for(let P of f.update){let E=c.get(P.id);if(!E)continue;let C=!!P.newGeometry,z=P.removeAllProperties||((v=P.removeProperties)===null||v===void 0?void 0:v.length)>0||((w=P.addOrUpdateProperties)===null||w===void 0?void 0:w.length)>0;if(!C&&!z)continue;S.push(E.geometry);let B=Object.assign({},E);if(c.set(P.id,B),C&&(S.push(P.newGeometry),B.geometry=P.newGeometry),z){if(B.properties=P.removeAllProperties?{}:Object.assign({},B.properties||{}),P.removeProperties)for(let j of P.removeProperties)delete B.properties[j];if(P.addOrUpdateProperties)for(let{key:j,value:$}of P.addOrUpdateProperties)B.properties[j]=$}}return S})(this._data.updateable,t,n);return t.removeAll||this._options.cluster?void 0:s}_getShouldReloadTileOptions(t){if(t)return{affectedBounds:t.filter(Boolean).map((n=>jn(n)))}}shouldReloadTile(t,{affectedBounds:n}){if(t.state==="loading")return!0;if(t.state==="unloaded")return!1;let{buffer:s,extent:c}=this.workerOptions.geojsonVtOptions,f=(function({x:y,y:v,z:w},S=0){let P=h.a4((y-S)/Math.pow(2,w)),E=h.a5((v+1+S)/Math.pow(2,w)),C=h.a4((y+1+S)/Math.pow(2,w)),z=h.a5((v-S)/Math.pow(2,w));return new Oe([P,E],[C,z])})(t.tileID.canonical,s/c);for(let y of n)if(f.intersects(y))return!0;return!1}loaded(){return!this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(t){return h._(this,void 0,void 0,(function*(){let n=t.actor?"RT":"LT";t.actor=this.actor;let s={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};t.abortController=new AbortController;let c=yield this.actor.sendAsync({type:n,data:s},t.abortController);delete t.abortController,t.unloadVectorData(),t.aborted||t.loadVectorData(c,this.map.painter,n==="RT")}))}abortTile(t){return h._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.aborted=!0}))}unloadTile(t){return h._(this,void 0,void 0,(function*(){t.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}})}))}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return h.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return!1}}class Or extends h.E{constructor(t,n,s,c){super(),this.flippedWindingOrder=!1,this.id=t,this.dispatcher=s,this.coordinates=n.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(c),this.options=n}load(t){return h._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new h.n("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let n=yield Ri.getImage(yield this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,n?.data&&(this.image=n.data,t&&(this.coordinates=t),this._finishLoading())}catch(n){this._request=null,this._loaded=!0,h.$(n)||this.fire(new h.l(h.d(n)))}}))}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=t.url,this.load(t.coordinates).finally((()=>this.texture=null)),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new h.n("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(t){this.coordinates=t;let n=t.map(h.a7.fromLngLat);var s;return this.tileID=(function(c){let f=h.a8.fromPoints(c),y=f.width(),v=f.height(),w=Math.max(y,v),S=Math.max(0,Math.floor(-Math.log(w)/Math.LN2)),P=Math.pow(2,S);return new h.aa(S,Math.floor((f.minX+f.maxX)/2*P),Math.floor((f.minY+f.maxY)/2*P))})(n),this.terrainTileRanges=this._getOverlappingTileRanges(n),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=n.map((c=>this.tileID.getTilePoint(c)._round())),this.flippedWindingOrder=((s=this.tileCoords)[1].x-s[0].x)*(s[2].y-s[0].y)-(s[1].y-s[0].y)*(s[2].x-s[0].x)<0,this.fire(new h.n("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let t=this.map.painter.context,n=t.gl;this.texture||(this.texture=new h.T(t,this.image,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let s=!1;for(let c in this.tiles){let f=this.tiles[c];f.state!=="loaded"&&(f.state="loaded",f.texture=this.texture,s=!0)}s&&this.fire(new h.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(t){return h._(this,void 0,void 0,(function*(){var n;!((n=this.tileID)===null||n===void 0)&&n.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={}):t.state="errored"}))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}_getOverlappingTileRanges(t){let{minX:n,minY:s,maxX:c,maxY:f}=h.a8.fromPoints(t),y={};for(let v=0;v<=h.a9;v++){let w=Math.pow(2,v),S=Math.floor(n*w),P=Math.floor(s*w),E=Math.floor(c*w),C=Math.floor(f*w),z=(S%w+w)%w,B=E%w,j=Math.floor(S/w),$=Math.floor(E/w);y[v]={minWrap:j,maxWrap:$,minTileXWrapped:z,maxTileXWrapped:B,minTileY:P,maxTileY:C}}return y}}class sn extends Or{constructor(t,n,s,c){super(t,n,s,c),this._onPlayingHandler=()=>{var f;(f=this.map)===null||f===void 0||f.triggerRepaint()},this.roundZoom=!0,this.type="video",this.options=n}load(){return h._(this,void 0,void 0,(function*(){this._loaded=!1;let t=this.options;this.urls=[];for(let n of t.urls)this.urls.push((yield this.map._requestManager.transformRequest(n,"Source")).url);try{let n=yield h.ab(this.urls);if(this._loaded=!0,!n)return;this.video=n,this.video.loop=!0,this.video.addEventListener("playing",this._onPlayingHandler),this.map&&this.video.play(),this._finishLoading()}catch(n){this.fire(new h.l(h.d(n)))}}))}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){let n=this.video.seekable;tn.end(0)?this.fire(new h.l(new h.ac(`sources.${this.id}`,null,`Playback for this video can be set only between the ${n.start(0)} and ${n.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}onRemove(){super.onRemove(),this.video&&(this.video.removeEventListener("playing",this._onPlayingHandler),this.video.pause())}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let t=this.map.painter.context,n=t.gl;this.texture?this.video.paused||(this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),n.texSubImage2D(n.TEXTURE_2D,0,0,0,n.RGBA,n.UNSIGNED_BYTE,this.video)):(this.texture=new h.T(t,this.video,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let s=!1;for(let c in this.tiles){let f=this.tiles[c];f.state!=="loaded"&&(f.state="loaded",f.texture=this.texture,s=!0)}s&&this.fire(new h.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ys extends Or{constructor(t,n,s,c){super(t,n,s,c),n.coordinates?Array.isArray(n.coordinates)&&n.coordinates.length===4&&!n.coordinates.some((f=>!Array.isArray(f)||f.length!==2||f.some((y=>typeof y!="number"))))||this.fire(new h.l(new h.ac(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new h.l(new h.ac(`sources.${t}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new h.l(new h.ac(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),n.canvas?typeof n.canvas=="string"||n.canvas instanceof HTMLCanvasElement||this.fire(new h.l(new h.ac(`sources.${t}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new h.l(new h.ac(`sources.${t}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}load(){return h._(this,void 0,void 0,(function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new h.l(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}))}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let n=this.map.painter.context,s=n.gl;this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new h.T(n,this.canvas,s.RGBA,{premultiply:!0}),this.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE));let c=!1;for(let f in this.tiles){let y=this.tiles[f];y.state!=="loaded"&&(y.state="loaded",y.texture=this.texture,c=!0)}c&&this.fire(new h.n("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let t of[this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return!0;return!1}}let Ks={},Ma=d=>{switch(d){case"geojson":return Pa;case"image":return Or;case"raster":return Li;case"raster-dem":return ii;case"vector":return ti;case"video":return sn;case"canvas":return Ys}return Ks[d]},Co="RTLPluginLoaded";class Tc extends h.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=gi()}_syncState(t){return this.status=t,this.dispatcher.broadcast("SRPS",{pluginStatus:t,pluginURL:this.url}).catch((n=>{throw this.status="error",n}))}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(t){return h._(this,arguments,void 0,(function*(n,s=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=He.resolveURL(n),!this.url)throw new Error(`requested url ${n} is invalid`);if(this.status==="unavailable"){if(!s)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()}))}_requestImport(){return h._(this,void 0,void 0,(function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new h.n(Co))}))}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let Ia=null;function Vr(){return Ia||(Ia=new Tc),Ia}var xr,Hi;(function(d){d[d.Base=0]="Base",d[d.Parent=1]="Parent"})(xr||(xr={})),(function(d){d[d.Departing=0]="Departing",d[d.Incoming=1]="Incoming"})(Hi||(Hi={}));class Nn{constructor(t,n){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=t,this.uid=h.ad(),this.uses=0,this.tileSize=n,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttFingerprint={},this.expiredRequestCount=0,this.state="loading"}isRenderable(t){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(t||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:t,fadingDirection:n,fadingParentID:s,fadeEndTime:c}){this.resetFadeLogic(),this.fadingRole=t,this.fadingDirection=n,this.fadingParentID=s,this.fadeEndTime=c}setSelfFadeLogic(t){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=t}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=Xe(),this.fadeEndTime=0,this.fadeOpacity=1}wasRequested(){return this.state==="errored"||this.state==="loaded"||this.state==="reloading"}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null}loadVectorData(t,n,s){if(t?.etagUnmodified!==!0)if(this.hasData()&&this.unloadVectorData(),this.state="loaded",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestEncoding=t.encoding,this.latestFeatureIndex.rawTileData=t.rawTileData,this.latestFeatureIndex.encoding=t.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=(function(c,f){let y={};if(!f)return y;for(let v of c){let w=v.layerIds.map((S=>f.getLayer(S))).filter(Boolean);if(w.length!==0){v.layers=w,v.stateDependentLayerIds&&(v.stateDependentLayers=v.stateDependentLayerIds.map((S=>w.filter((P=>P.id===S))[0])));for(let S of w)y[S.id]=v}}return y})(t.buckets,n?.style),this.hasSymbolBuckets=!1;for(let c in this.buckets){let f=this.buckets[c];if(f instanceof h.af){if(this.hasSymbolBuckets=!0,!s)break;f.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let c in this.buckets){let f=this.buckets[c];if(f instanceof h.af&&f.hasRTLText){this.hasRTLText=!0,Vr().lazyLoad();break}}this.queryPadding=0;for(let c in this.buckets){let f=this.buckets[c];this.queryPadding=Math.max(this.queryPadding,n.style.getLayer(c).queryRadius(f))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),this.dashPositions=t.dashPositions}else this.collisionBoxArray=new h.ae;else this.state="loaded"}unloadVectorData(){for(let t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.imageAtlas=null,this.dashPositions=null,this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(let s in this.buckets){let c=this.buckets[s];c.uploadPending()&&c.upload(t)}let n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new h.T(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new h.T(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,n,s,c,f,y,v,w,S,P,E){var C;return!((C=this.latestFeatureIndex)===null||C===void 0)&&C.rawTileData?this.latestFeatureIndex.query({queryGeometry:c,cameraQueryGeometry:f,scale:y,tileSize:this.tileSize,pixelPosMatrix:P,transform:w,params:v,queryPadding:this.queryPadding*S,getElevation:E},t,n,s):{}}querySourceFeatures(t,n){let s=this.latestFeatureIndex;if(!s?.rawTileData)return;let c=s.loadVTLayers(),f=n?.sourceLayer?n.sourceLayer:"",y=c[h.ag]||c[f];if(!y)return;let v=h.ah(n?.filter,n?.globalState),{z:w,x:S,y:P}=this.tileID.canonical,E={z:w,x:S,y:P};for(let C=0;Cs)c=!1;else if(n)if(this.expirationTime({zoom:0,x:0,y:0,wrap:G,fullyVisible:!1}),Y=[],q=[];if(d.renderWorldCopies&&y.allowWorldCopies())for(let G=1;G<=3;G++)Y.push(Z(-G)),Y.push(Z(G));for(Y.push(Z(0));Y.length>0;){let G=Y.pop(),X=G.x,W=G.y,te=G.fullyVisible,se={x:X,y:W,z:G.zoom},le=y.getTileBoundingVolume(se,G.wrap,d.elevation,t);if(!te){let Te=he(n,le,s);if(Te===0)continue;te=Te===2}let ge=y.distanceToTile2d(c.x,c.y,se,le),me=w;v&&(me=(t.calculateTileZoom||ut)(d.zoom+h.ar(d.tileSize/t.tileSize),ge,$,U,d.fov)),me=(t.roundZoom?Math.round:Math.floor)(me),me=Math.max(0,me);let Ae=Math.min(me,P);if(G.wrap=y.getWrap(f,se,G.wrap),G.zoom>=Ae){if(G.zoom>1),wrap:G.wrap,fullyVisible:te})}return q.sort(((G,X)=>G.distanceSq-X.distanceSq)).map((G=>G.tileID))}let Sc=h.a8.fromPoints([new h.P(0,0),new h.P(h.a6,h.a6)]);function Pc(d){return d==="raster"||d==="image"||d==="video"}function ch(d,t,n,s,c,f,y){if(!t.hasData())return!1;let{tileID:v,fadingRole:w,fadingDirection:S,fadingParentID:P}=t;if(w===xr.Base&&S===Hi.Incoming&&P)return n[P.key]=P,!0;let E=Math.max(v.overscaledZ-c,f);for(let C=v.overscaledZ-1;C>=E;C--){let z=v.scaledTo(C),B=d.getLoadedTile(z);if(B)return t.setCrossFadeLogic({fadingRole:xr.Base,fadingDirection:Hi.Incoming,fadingParentID:B.tileID,fadeEndTime:s+y}),B.setCrossFadeLogic({fadingRole:xr.Parent,fadingDirection:Hi.Departing,fadeEndTime:s+y}),n[z.key]=z,!0}return!1}function Ca(d,t,n,s,c,f){if(!t.hasData())return!1;let y=t.tileID.children(c),v=tl(d,t,y,n,s,c,f);if(v)return!0;for(let w of y)tl(d,t,w.children(c),n,s,c,f)&&(v=!0);return v}function tl(d,t,n,s,c,f,y){if(n[0].overscaledZ>=f)return!1;let v=!1;for(let w of n){let S=d.getLoadedTile(w);if(!S)continue;let{fadingRole:P,fadingDirection:E,fadingParentID:C}=S;P===xr.Base&&E===Hi.Departing&&C||(S.setCrossFadeLogic({fadingRole:xr.Base,fadingDirection:Hi.Departing,fadingParentID:t.tileID,fadeEndTime:c+y}),t.setCrossFadeLogic({fadingRole:xr.Parent,fadingDirection:Hi.Incoming,fadeEndTime:c+y})),s[w.key]=w,v=!0}return v}function Mc(d,t,n,s){let c=d.tileID;return!!d.selfFading||!d.hasData()&&!!t.has(c)&&(d.setSelfFadeLogic(n+s),!0)}function be(d,t){var n;d.needsHillshadePrepare=!0,d.needsTerrainPrepare=!0;let s=t.tileID.canonical.x-d.tileID.canonical.x,c=t.tileID.canonical.y-d.tileID.canonical.y,f=Math.pow(2,d.tileID.canonical.z),y=t.tileID.key;s===0&&c===0||Math.abs(c)>1||(Math.abs(s)>1&&(Math.abs(s+f)===1?s+=f:Math.abs(s-f)===1&&(s-=f)),t.dem&&d.dem&&(d.dem.backfillBorder(t.dem,s,c),!((n=d.neighboringTiles)===null||n===void 0)&&n[y]&&(d.neighboringTiles[y].backfilled=!0)))}class hn{constructor(){this._tiles={}}handleWrapJump(t){let n={};for(let s in this._tiles){let c=this._tiles[s];c.tileID=c.tileID.unwrapTo(c.tileID.wrap+t),n[c.tileID.key]=c}this._tiles=n}setFeatureState(t,n){for(let s in this._tiles)this._tiles[s].setFeatureState(t,n)}getAllTiles(){return Object.values(this._tiles)}getAllIds(t=!1){return t?Object.values(this._tiles).map((n=>n.tileID)).sort(h.au).map((n=>n.key)):Object.keys(this._tiles)}getTileById(t){return this._tiles[t]}setTile(t,n){this._tiles[t]=n}deleteTileById(t){delete this._tiles[t]}getLoadedTile(t){let n=this.getTileById(t.key);return n?.hasData()?n:null}isIdRenderable(t,n=!1){var s;return(s=this.getTileById(t))===null||s===void 0?void 0:s.isRenderable(n)}getRenderableIds(t=0,n){let s=[];for(let c of this.getAllIds())this.isIdRenderable(c,n)&&s.push(this.getTileById(c));return n?s.sort(((c,f)=>{let y=c.tileID,v=f.tileID,w=new h.P(y.canonical.x,y.canonical.y)._rotate(-t),S=new h.P(v.canonical.x,v.canonical.y)._rotate(-t);return y.overscaledZ-v.overscaledZ||S.y-w.y||S.x-w.x})).map((c=>c.tileID.key)):s.map((c=>c.tileID)).sort(h.au).map((c=>c.key))}}class ri extends h.E{constructor(t,n,s){super(),this.id=t,this.dispatcher=s,this.on("data",(c=>{this._dataHandler(c)})),this.on("dataloading",(()=>{this._sourceErrored=!1})),this.on("error",(()=>{this._sourceErrored=this._source.loaded()})),this._source=((c,f,y,v)=>{let w=new(Ma(f.type))(c,f,y,v);if(w.id!==c)throw new Error(`Expected Source id to be ${c} instead of ${w.id}`);return w})(t,n,s,this),this._inViewTiles=new hn,this._outOfViewCache=new h.av(0,(c=>this._unloadTile(c))),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new Js,this._didEmitContent=!1,this._updated=!1}onAdd(t){var n;this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,!((n=this._source)===null||n===void 0)&&n.onAdd&&this._source.onAdd(t)}onRemove(t){var n;for(let s of this._inViewTiles.getAllTiles())s.unloadVectorData();this.clearTiles(),!((n=this._source)===null||n===void 0)&&n.onRemove&&this._source.onRemove(t),this._inViewTiles=new hn}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let t of this._inViewTiles.getAllTiles())if(t.state!=="loaded"&&t.state!=="errored")return!1;return!0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0}resume(){if(!this._paused)return;let t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(t,n,s){return h._(this,void 0,void 0,(function*(){try{let c=yield this._source.loadTile(t);this._tileLoaded(t,n,s,c)}catch(c){t.state="errored",c.status!==404?this._source.fire(new h.l(h.d(c),{tile:t})):this.update(this.transform,this.terrain)}}))}_unloadTile(t){this._source.unloadTile&&this._source.unloadTile(t)}_abortTile(t){this._source.abortTile&&this._source.abortTile(t),this._source.fire(new h.n("dataabort",{tile:t,coord:t.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.map?this.map.painter:null);for(let n of this._inViewTiles.getAllTiles())n.upload(t),n.prepare(this.map.style.imageManager)}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(t){var n;return this._inViewTiles.getRenderableIds((n=this.transform)===null||n===void 0?void 0:n.bearingInRadians,t)}hasRenderableParent(t){let n=t.overscaledZ-1;if(n>=this._source.minzoom){let s=this.getLoadedTile(t.scaledTo(n));if(s)return this._inViewTiles.isIdRenderable(s.tileID.key)}return!1}reload(t,n=void 0){if(this._paused)this._shouldReloadOnResume=!0;else{this._outOfViewCache.reset();for(let s of this._inViewTiles.getAllIds()){let c=this._inViewTiles.getTileById(s);n&&!this._source.shouldReloadTile(c,n)||(t?this._reloadTile(s,"expired"):c.state!=="errored"&&this._reloadTile(s,"reloading"))}}}_reloadTile(t,n){return h._(this,void 0,void 0,(function*(){let s=this._inViewTiles.getTileById(t);s&&(s.state!=="loading"&&(s.state=n),yield this._loadTile(s,t,n))}))}_tileLoaded(t,n,s,c){t.timeAdded=Xe(),t.selfFading&&(t.fadeEndTime=t.timeAdded+this._rasterFadeDuration),s==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(n,t),c?.unmodified||(this.getSource().type==="raster-dem"&&t.dem&&(function(f,y){var v,w,S;let P=y.getRenderableIds();for(let E of P){if(!(!((v=f.neighboringTiles)===null||v===void 0)&&v[E]))continue;let C=y.getTileById(E);f.neighboringTiles[E].backfilled||be(f,C),!((S=(w=C.neighboringTiles)===null||w===void 0?void 0:w[f.tileID.key])===null||S===void 0)&&S.backfilled||be(C,f)}})(t,this._inViewTiles),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new h.n("data",{dataType:"source",tile:t,coord:t.tileID})))}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._inViewTiles.getTileById(t)}_retainLoadedChildren(t,n){let s=this._getLoadedDescendents(n),c=new Set;for(let f of n){let y=s[f.key];if(!y?.length){c.add(f);continue}let v=f.overscaledZ+ri.maxOverzooming,w=y.filter((E=>E.tileID.overscaledZ<=v));if(!w.length){c.add(f);continue}let S=Math.min(...w.map((E=>E.tileID.overscaledZ))),P=w.filter((E=>E.tileID.overscaledZ===S)).map((E=>E.tileID));for(let E of P)t[E.key]=E;this._areDescendentsComplete(P,S,f.overscaledZ)||c.add(f)}return c}_getLoadedDescendents(t){var n;let s={};for(let c of this._inViewTiles.getAllTiles().filter((f=>f.hasData())))for(let f of t)c.tileID.isChildOf(f)&&(s[n=f.key]||(s[n]=[]),s[f.key].push(c));return s}_areDescendentsComplete(t,n,s){return t.length===1&&t[0].isOverscaled()?t[0].overscaledZ===n:Math.pow(4,n-s)===t.length}getLoadedTile(t){return this._inViewTiles.getLoadedTile(t)}updateCacheSize(t){let n=Math.ceil(t.width/this._source.tileSize)+1,s=Math.ceil(t.height/this._source.tileSize)+1,c=Math.floor(n*s*(this._maxTileCacheZoomLevels===null?h.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),f=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,c):c;this._outOfViewCache.setMaxSize(f)}handleWrapJump(t){let n=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);this._prevLng=t,n&&(this._inViewTiles.handleWrapJump(n),this._resetTileReloadTimers())}update(t,n){if(!this._sourceLoaded||this._paused)return;let s;this.transform=t,this.terrain=n,this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?s=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((w=>new h.a3(w.canonical.z,w.wrap,w.canonical.z,w.canonical.x,w.canonical.y))):(s=un(t,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.type==="vector"&&this.map._zoomLevelsToOverscale!==void 0?t.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:n,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(s=s.filter((w=>this._source.hasTile(w))))):s=[],this.usedForTerrain&&(s=this._addTerrainIdealTiles(s));let c=s.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,c&&this.fire(new h.n("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let f=Ei(t,this._source),y=this._updateRetainedTiles(s,f),v=Pc(this._source.type);v&&this._rasterFadeDuration>0&&!n&&(function(w,S,P,E,C,z,B){let j=Xe(),$=h.at(S);for(let U of S){let Z=w.getTileById(U.key);Z.fadingDirection!==Hi.Departing&&Z.fadeOpacity!==0||Z.resetFadeLogic(),ch(w,Z,P,j,E,C,B)||Ca(w,Z,P,j,z,B)||Mc(Z,$,j,B)||Z.resetFadeLogic()}})(this._inViewTiles,s,y,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),v?this._cleanUpRasterTiles(y):this._cleanUpVectorTiles(y)}_cleanUpRasterTiles(t){for(let n of this._inViewTiles.getAllIds())t[n]||this._removeTile(n)}_cleanUpVectorTiles(t){for(let n of this._inViewTiles.getAllIds()){let s=this._inViewTiles.getTileById(n);t[n]?s.clearSymbolFadeHold():s.hasSymbolBuckets?s.holdingForSymbolFade()?s.symbolFadeFinished()&&this._removeTile(n):s.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(n)}}_addTerrainIdealTiles(t){let n=[];for(let s of t)if(s.canonical.z>this._source.minzoom){let c=s.scaledTo(s.canonical.z-1);n.push(c);let f=s.scaledTo(Math.max(this._source.minzoom,Math.min(s.canonical.z,5)));n.push(f)}return t.concat(n)}releaseSymbolFadeTiles(){for(let t of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(t).holdingForSymbolFade()&&this._removeTile(t)}_updateRetainedTiles(t,n){var s;let c=new Set;for(let S of t)this._addTile(S).hasData()||c.add(S);let f=t.reduce(((S,P)=>(S[P.key]=P,S)),{}),y=this._retainLoadedChildren(f,c),v={},w=Math.max(n-ri.maxUnderzooming,this._source.minzoom);for(let S of y){let P=this._inViewTiles.getTileById(S.key),E=P?.wasRequested();for(let C=S.overscaledZ-1;C>=w;--C){let z=S.scaledTo(C);if(v[z.key])break;if(v[z.key]=!0,P=this.getTile(z),!P&&E&&(P=this._addTile(z)),P){let B=P.hasData();if((B||!(!((s=this.map)===null||s===void 0)&&s.cancelPendingTileRequestsWhileZooming)||E)&&(f[z.key]=z),E=P.wasRequested(),B)break}}}return f}_addTile(t){let n=this._inViewTiles.getTileById(t.key);if(n)return n;n=this._outOfViewCache.getAndRemove(t),n&&(n.resetFadeLogic(),this._setTileReloadTimer(t.key,n),n.tileID=t,this._state.initializeTileState(n,this.map?this.map.painter:null));let s=n;return n||(n=new Nn(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(n,t.key,n.state)),n.uses++,this._inViewTiles.setTile(t.key,n),s||this._source.fire(new h.n("dataloading",{tile:n,coord:n.tileID,dataType:"source"})),n}_setTileReloadTimer(t,n){this._clearTileReloadTimer(t);let s=n.getExpiryTimeout();s&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,"expired"),delete this._timers[t]}),s))}_clearTileReloadTimer(t){let n=this._timers[t];n&&(clearTimeout(n),delete this._timers[t])}_resetTileReloadTimers(){for(let t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(let t of this._inViewTiles.getAllIds()){let n=this._inViewTiles.getTileById(t);this._setTileReloadTimer(t,n)}}refreshTiles(t){for(let n of this._inViewTiles.getAllIds()){let s=this._inViewTiles.getTileById(n);(this._inViewTiles.isIdRenderable(n)||s.state=="errored")&&t.some((c=>c.equals(s.tileID.canonical)))&&this._reloadTile(n,"expired")}}_removeTile(t){let n=this._inViewTiles.getTileById(t);n&&(n.uses--,this._inViewTiles.deleteTileById(t),this._clearTileReloadTimer(t),n.uses>0||(n.hasData()&&n.state!=="reloading"?this._outOfViewCache.add(n.tileID,n,n.getExpiryTimeout()):(n.aborted=!0,this._abortTile(n),this._unloadTile(n))))}_dataHandler(t){t.dataType==="source"&&(t.sourceDataType!=="metadata"?t.sourceDataType==="content"&&this._sourceLoaded&&!this._paused&&(this.reload(t.sourceDataChanged,t.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let t of this._inViewTiles.getAllIds())this._removeTile(t);this._outOfViewCache.reset()}tilesIn(t,n,s){let c=[],f=this.transform;if(!f)return c;let y=f.getCoveringTilesDetailsProvider().allowWorldCopies(),v=s?f.getCameraQueryGeometry(t):t,w=z=>f.screenPointToMercatorCoordinate(z,this.terrain),S=this.transformBbox(t,w,!y),P=this.transformBbox(v,w,!y),E=this.getIds(),C=h.a8.fromPoints(P);for(let z of E){let B=this._inViewTiles.getTileById(z);if(B.holdingForSymbolFade())continue;let j=y?[B.tileID]:[B.tileID.unwrapTo(-1),B.tileID.unwrapTo(0)],$=Math.pow(2,f.zoom-B.tileID.overscaledZ),U=n*B.queryPadding*h.a6/B.tileSize/$;for(let Z of j){let Y=C.map((q=>Z.getTilePoint(new h.a7(q.x,q.y))));if(Y.expandBy(U),Y.intersects(Sc)){let q=S.map((X=>Z.getTilePoint(X))),G=P.map((X=>Z.getTilePoint(X)));c.push({tile:B,tileID:y?Z:Z.unwrapTo(0),queryGeometry:q,cameraQueryGeometry:G,scale:$})}}}return c}transformBbox(t,n,s){let c=t.map(n);if(s){let f=h.a8.fromPoints(t);f.shrinkBy(.001*Math.min(f.width(),f.height()));let y=f.map(n);h.a8.fromPoints(c).covers(y)||(c=c.map((v=>v.x>.5?new h.a7(v.x-1,v.y,v.z):v)))}return c}getVisibleCoordinates(t){let n=this.getRenderableIds(t).map((s=>this._inViewTiles.getTileById(s).tileID));return this.transform&&this.transform.populateCache(n),n}hasTransition(){return!!this._source.hasTransition()||Pc(this._source.type)&&(function(t,n){if(n<=0)return!1;let s=Xe();for(let c of t.getAllTiles())if(c.fadeEndTime>=s)return!0;return!1})(this._inViewTiles,this._rasterFadeDuration)}setRasterFadeDuration(t){this._rasterFadeDuration=t}setFeatureState(t,n,s){t||(t=h.ag),this._state.updateState(t,n,s)}removeFeatureState(t,n,s){t||(t=h.ag),this._state.removeFeatureState(t,n,s)}getFeatureState(t,n){return t||(t=h.ag),this._state.getState(t,n)}setDependencies(t,n,s){let c=this._inViewTiles.getTileById(t);c&&c.setDependencies(n,s)}reloadTilesForDependencies(t,n){for(let s of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(s).hasDependency(t,n)&&this._reloadTile(s,"reloading");this._outOfViewCache.filter((s=>!s.hasDependency(t,n)))}areTilesLoaded(){for(let t of this._inViewTiles.getAllTiles())if(t.state!=="loaded"&&t.state!=="errored")return!1;return!0}}ri.maxUnderzooming=10,ri.maxOverzooming=3;class il{constructor(t,n){this.reset(t,n)}reset(t,n){this.points=t||[],this._distances=[0];for(let s=1;s0?(c-y)/v:0;return this.points[f].mult(1-w).add(this.points[n].mult(w))}}function jr(d,t){let n=!0;return d==="always"||d!=="never"&&t!=="never"||(n=!1),n}class Me{constructor(t,n,s){let c=this.boxCells=[],f=this.circleCells=[];this.xCellCount=Math.ceil(t/s),this.yCellCount=Math.ceil(n/s);for(let y=0;ythis.width||c<0||n>this.height)return[];let w=[];if(t<=0&&n<=0&&this.width<=s&&this.height<=c){if(f)return[{key:null,x1:t,y1:n,x2:s,y2:c}];for(let S=0;S0}hitTestCircle(t,n,s,c,f){let y=t-s,v=t+s,w=n-s,S=n+s;if(v<0||y>this.width||S<0||w>this.height)return!1;let P=[];return this._forEachCell(y,w,v,S,this._queryCellCircle,P,{hitTest:!0,overlapMode:c,circle:{x:t,y:n,radius:s},seenUids:{box:{},circle:{}}},f),P.length>0}_queryCell(t,n,s,c,f,y,v,w){let{seenUids:S,hitTest:P,overlapMode:E}=v,C=this.boxCells[f],z=1e-6;if(C!==null){let j=this.bboxes;for(let $ of C)if(!S.box[$]){S.box[$]=!0;let U=4*$,Z=this.boxKeys[$];if(t<=j[U+2]+z&&n<=j[U+3]+z&&s>=j[U+0]-z&&c>=j[U+1]-z&&(!w||w(Z))&&(!P||!jr(E,Z.overlapMode))&&(y.push({key:Z,x1:j[U],y1:j[U+1],x2:j[U+2],y2:j[U+3]}),P))return!0}}let B=this.circleCells[f];if(B!==null){let j=this.circles;for(let $ of B)if(!S.circle[$]){S.circle[$]=!0;let U=3*$,Z=this.circleKeys[$];if(this._circleAndRectCollide(j[U],j[U+1],j[U+2],t,n,s,c)&&(!w||w(Z))&&(!P||!jr(E,Z.overlapMode))){let Y=j[U],q=j[U+1],G=j[U+2];if(y.push({key:Z,x1:Y-G,y1:q-G,x2:Y+G,y2:q+G}),P)return!0}}}return!1}_queryCellCircle(t,n,s,c,f,y,v,w){let{circle:S,seenUids:P,overlapMode:E}=v,C=this.boxCells[f];if(C!==null){let B=this.bboxes;for(let j of C)if(!P.box[j]){P.box[j]=!0;let $=4*j,U=this.boxKeys[j];if(this._circleAndRectCollide(S.x,S.y,S.radius,B[$+0],B[$+1],B[$+2],B[$+3])&&(!w||w(U))&&!jr(E,U.overlapMode))return y.push(!0),!0}}let z=this.circleCells[f];if(z!==null){let B=this.circles;for(let j of z)if(!P.circle[j]){P.circle[j]=!0;let $=3*j,U=this.circleKeys[j];if(this._circlesCollide(B[$],B[$+1],B[$+2],S.x,S.y,S.radius)&&(!w||w(U))&&!jr(E,U.overlapMode))return y.push(!0),!0}}}_forEachCell(t,n,s,c,f,y,v,w){let S=this._convertToXCellCoord(t),P=this._convertToYCellCoord(n),E=this._convertToXCellCoord(s),C=this._convertToYCellCoord(c);for(let z=S;z<=E;z++)for(let B=P;B<=C;B++)if(f.call(this,t,n,s,c,this.xCellCount*B+z,y,v,w))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,n,s,c,f,y){let v=c-t,w=f-n,S=s+y;return S*S>v*v+w*w}_circleAndRectCollide(t,n,s,c,f,y,v){let w=(y-c)/2,S=Math.abs(t-(c+w));if(S>w+s)return!1;let P=(v-f)/2,E=Math.abs(n-(f+P));if(E>P+s)return!1;if(S<=w||E<=P)return!0;let C=S-w,z=E-P;return C*C+z*z<=s*s}}function Ne(d,t){let n=1/(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]),s=1/(t[8]*t[8]+t[9]*t[9]+t[10]*t[10]),c=t[0]*n,f=t[4]*n,y=t[8]*s,v=t[1]*n,w=t[5]*n,S=t[9]*s,P=t[2]*n,E=t[6]*n,C=t[10]*s;d[0]=c,d[1]=f,d[2]=y,d[4]=v,d[5]=w,d[6]=S,d[8]=P,d[9]=E,d[10]=C;let z=t[12],B=t[13],j=t[14];return d[12]=-c*z-v*B-P*j,d[13]=-f*z-w*B-E*j,d[14]=-y*z-S*B-C*j,d[3]=0,d[7]=0,d[11]=0,d[15]=1,d}let Ye=h.O();function Fi(d,t,n){let s=h.O();if(!d){let{vecSouth:E,vecEast:C}=vr(t),z=Ze();z[0]=C[0],z[1]=C[1],z[2]=E[0],z[3]=E[1],c=z,(P=(y=(f=z)[0])*(S=f[3])-(w=f[2])*(v=f[1]))&&(c[0]=S*(P=1/P),c[1]=-v*P,c[2]=-w*P,c[3]=y*P),s[0]=z[0],s[1]=z[1],s[4]=z[2],s[5]=z[3]}var c,f,y,v,w,S,P;return h.S(s,s,[1/n,1/n,1]),s}function Aa(d,t,n,s){if(d){let c=h.O();if(!t){let{vecSouth:f,vecEast:y}=vr(n);c[0]=y[0],c[1]=y[1],c[4]=f[0],c[5]=f[1]}return h.S(c,c,[s,s,1]),c}return n.pixelsToClipSpaceMatrix}function vr(d){let t=Math.cos(d.rollInRadians),n=Math.sin(d.rollInRadians),s=Math.cos(d.pitchInRadians),c=Math.cos(d.bearingInRadians),f=Math.sin(d.bearingInRadians),y=h.az();y[0]=-c*s*n-f*t,y[1]=-f*s*n+c*t;let v=h.aA(y);v<1e-9?h.aB(y):h.aC(y,y,1/v);let w=h.az();w[0]=c*s*t-f*n,w[1]=f*s*t+c*n;let S=h.aA(w);return S<1e-9?h.aB(w):h.aC(w,w,1/S),{vecEast:w,vecSouth:y}}function Ge(d,t,n,s){let c;s?(c=[d,t,s(d,t),1],h.aE(c,c,n)):(c=[d,t,0,1],ka(c,c,n));let f=c[3];return{point:new h.P(c[0]/f,c[1]/f),signedDistanceFromCamera:f,isOccluded:!1}}function Do(d,t){return .5+d/t*.5}function zo(d,t){return d.x>=-t[0]&&d.x<=t[0]&&d.y>=-t[1]&&d.y<=t[1]}function Da(d,t,n,s,c,f,y,v,w,S,P,E,C){let z=n?d.textSizeData:d.iconSizeData,B=h.aw(z,t.transform.zoom),j=[256/t.width*2+1,256/t.height*2+1],$=n?d.text.dynamicLayoutVertexArray:d.icon.dynamicLayoutVertexArray;$.clear();let U=d.lineVertexArray,Z=n?d.text.placedSymbolArray:d.icon.placedSymbolArray,Y=t.transform.width/t.transform.height,q=!1;for(let G=0;GMath.abs(n.x-t.x)*s?{useVertical:!0}:(d===h.ax.vertical?t.yn.x)?{needsFlipping:!0}:null}function Zn(d){let{projectionContext:t,pitchedLabelPlaneMatrixInverse:n,symbol:s,fontSize:c,flip:f,keepUpright:y,glyphOffsetArray:v,dynamicLayoutVertexArray:w,aspectRatio:S,rotateToLine:P}=d,E=c/24,C=s.lineOffsetX*E,z=s.lineOffsetY*E,B;if(s.numGlyphs>1){let j=s.glyphStartIndex+s.numGlyphs,$=s.lineStartIndex,U=s.lineStartIndex+s.lineLength,Z=$n(E,v,C,z,f,s,P,t);if(!Z)return{notEnoughRoom:!0};let Y=za(Z.first.point.x,Z.first.point.y,t,n),q=za(Z.last.point.x,Z.last.point.y,t,n);if(y&&!f){let G=ko(s.writingMode,Y,q,S);if(G)return G}B=[Z.first];for(let G=s.glyphStartIndex+1;G0?Y.point:Ro(t.tileAnchorPoint,Z,$,1,t),G=za($.x,$.y,t,n),X=za(q.x,q.y,t,n),W=ko(s.writingMode,G,X,S);if(W)return W}let j=nr(E*v.getoffsetX(s.glyphStartIndex),C,z,f,s.segment,s.lineStartIndex,s.lineStartIndex+s.lineLength,t,P);if(!j||t.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};B=[j]}for(let j of B)h.aD(w,j.point,j.angle);return{}}function Ro(d,t,n,s,c){let f=d.add(d.sub(t)._unit()),y=ht(f.x,f.y,c).point,v=n.sub(y);return n.add(v._mult(s/v.mag()))}function ni(d,t,n){let s=t.projectionCache;if(s.projections[d])return s.projections[d];let c=new h.P(t.lineVertexArray.getx(d),t.lineVertexArray.gety(d)),f=ht(c.x,c.y,t);if(f.signedDistanceFromCamera>0)return s.projections[d]=f.point,s.anyProjectionOccluded||(s.anyProjectionOccluded=f.isOccluded),f.point;let y=d-n.direction;return Ro(n.distanceFromAnchor===0?t.tileAnchorPoint:new h.P(t.lineVertexArray.getx(y),t.lineVertexArray.gety(y)),c,n.previousVertex,n.absOffsetX-n.distanceFromAnchor+1,t)}function ht(d,t,n){let s=d+n.translation[0],c=t+n.translation[1],f;return n.pitchWithMap?(f=Ge(s,c,n.pitchedLabelPlaneMatrix,n.getElevation),f.isOccluded=!1):(f=n.transform.projectTileCoordinates(s,c,n.unwrappedTileID,n.getElevation),f.point.x=(.5*f.point.x+.5)*n.width,f.point.y=(.5*-f.point.y+.5)*n.height),f}function za(d,t,n,s){if(n.pitchWithMap){let c=[d,t,0,1];return h.aE(c,c,s),n.transform.projectTileCoordinates(c[0]/c[3],c[1]/c[3],n.unwrappedTileID,n.getElevation).point}return{x:d/n.width*2-1,y:1-t/n.height*2}}function qn(d,t,n){return n.transform.projectTileCoordinates(d,t,n.unwrappedTileID,n.getElevation)}function Lo(d,t,n){return d._unit()._perp()._mult(t*n)}function dn(d,t,n,s,c,f,y,v,w){if(v.projectionCache.offsets[d])return v.projectionCache.offsets[d];let S=n.add(t);if(d+w.direction=c)return v.projectionCache.offsets[d]=S,S;let P=ni(d+w.direction,v,w),E=Lo(P.sub(n),y,w.direction),C=n.add(E),z=P.add(E);return v.projectionCache.offsets[d]=h.aF(f,S,C,z)||S,v.projectionCache.offsets[d]}function nr(d,t,n,s,c,f,y,v,w){let S=s?d-t:d+t,P=S>0?1:-1,E=0;s&&(P*=-1,E=Math.PI),P<0&&(E+=Math.PI);let C,z=P>0?f+c:f+c+1;v.projectionCache.cachedAnchorPoint?C=v.projectionCache.cachedAnchorPoint:(C=ht(v.tileAnchorPoint.x,v.tileAnchorPoint.y,v).point,v.projectionCache.cachedAnchorPoint=C);let B,j,$=C,U=C,Z=0,Y=0,q=Math.abs(S),G=[],X;for(;Z+Y<=q;){if(z+=P,z=y)return null;Z+=Y,U=$,j=B;let se={absOffsetX:q,direction:P,distanceFromAnchor:Z,previousVertex:U};if($=ni(z,v,se),n===0)G.push(U),X=$.sub(U);else{let le,ge=$.sub(U);le=ge.mag()===0?Lo(ni(z+P,v,se).sub($),n,P):Lo(ge,n,P),j||(j=U.add(le)),B=dn(z,le,$,f,y,j,n,v,se),G.push(j),X=B.sub(j)}Y=X.mag()}let W=X._mult((q-Z)/Y)._add(j||U),te=E+Math.atan2($.y-U.y,$.x-U.x);return G.push(W),{point:W,angle:w?te:0,path:G}}let Ic=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function pn(d,t){for(let n=0;n=1;ke--)Te.push(me.path[ke]);for(let ke=1;kect.signedDistanceFromCamera<=0))?[]:ke.map((ct=>ct.point))}let Ie=[];if(Te.length>0){let ke=Te[0].clone(),ct=Te[0].clone();for(let Ft=1;Ft=se.x&&ct.x<=le.x&&ke.y>=se.y&&ct.y<=le.y?[Te]:ct.xle.x||ct.yle.y?[]:h.aG([Te],se.x,se.y,le.x,le.y)}for(let ke of Ie){ge.reset(ke,.25*te);let ct=0;ct=ge.length<=.5*te?1:Math.ceil(ge.paddedLength/pe)+1;for(let Ft=0;Ft{let w=Ge(v.x,v.y,y,f.getElevation),S=f.transform.projectTileCoordinates(w.point.x,w.point.y,f.unwrappedTileID,f.getElevation);return S.point.x=(.5*S.point.x+.5)*f.width,S.point.y=(.5*-S.point.y+.5)*f.height,S}))})(t,n);return(function(c){let f=0,y=0,v=0,w=0;for(let S=0;Sy&&(y=w,f=v));return c.slice(f,f+y)})(s)}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let n=[],s=new h.a8;for(let E of t){let C=new h.P(E.x+At,E.y+At);s.extend(C),n.push(C)}let{minX:c,minY:f,maxX:y,maxY:v}=s,w=this.grid.query(c,f,y,v).concat(this.ignoredGrid.query(c,f,y,v)),S={},P={};for(let E of w){let C=E.key;if(S[C.bucketInstanceId]===void 0&&(S[C.bucketInstanceId]={}),S[C.bucketInstanceId][C.featureIndex])continue;let z=[new h.P(E.x1,E.y1),new h.P(E.x2,E.y1),new h.P(E.x2,E.y2),new h.P(E.x1,E.y2)];h.aH(n,z)&&(S[C.bucketInstanceId][C.featureIndex]=!0,P[C.bucketInstanceId]===void 0&&(P[C.bucketInstanceId]=[]),P[C.bucketInstanceId].push(C.featureIndex))}return P}insertCollisionBox(t,n,s,c,f,y){(s?this.ignoredGrid:this.grid).insert({bucketInstanceId:c,featureIndex:f,collisionGroupID:y,overlapMode:n},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,n,s,c,f,y){let v=s?this.ignoredGrid:this.grid,w={bucketInstanceId:c,featureIndex:f,collisionGroupID:y,overlapMode:n};for(let S=0;S=this.screenRightBoundary||cthis.screenBottomBoundary}isInsideGrid(t,n,s,c){return s>=0&&t=0&&nthis.projectAndGetPerspectiveRatio(pe.x,pe.y,c,S,E)));Ae=Te.some((pe=>!pe.isOccluded)),me=Te.map((pe=>new h.P(pe.x,pe.y)))}else Ae=!0;return{box:h.aI(me),allPointsOccluded:!Ae}}}class Cc{constructor(t,n,s,c){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?n:-n))):c&&s?1:0,this.placed=s}isHidden(){return this.opacity===0&&!this.placed}}class Fo{constructor(t,n,s,c,f){this.text=new Cc(t?t.text:null,n,s,f),this.icon=new Cc(t?t.icon:null,n,c,f)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ac{constructor(t,n,s){this.text=t,this.icon=n,this.skipFade=s}}class Dc{constructor(t,n,s,c,f){this.bucketInstanceId=t,this.featureIndex=n,this.sourceLayerIndex=s,this.bucketIndex=c,this.tileID=f}}class zc{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}}get(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){let n=++this.maxGroupID;this.collisionGroups[t]={ID:n,predicate:s=>s.collisionGroupID===n}}return this.collisionGroups[t]}}function Ra(d,t,n,s,c){let{horizontalAlign:f,verticalAlign:y}=h.aP(d);return new h.P(-(f-.5)*t+s[0]*c,-(y-.5)*n+s[1]*c)}class rl{constructor(t,n,s,c,f){this.transform=t.clone(),this.terrain=n,this.collisionIndex=new Ec(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=s,this.retainedQueryData={},this.collisionGroups=new zc(c),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=f,f&&(f.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(t){let n=this.terrain;return n?(s,c)=>n.getElevation(t,s,c):null}getBucketParts(t,n,s,c){let f=s.getBucket(n),y=s.latestFeatureIndex;if(!f||!y||n.id!==f.layerIds[0])return;let v=s.collisionBoxArray,w=f.layers[0].layout,S=f.layers[0].paint,P=Math.pow(2,this.transform.zoom-s.tileID.overscaledZ),E=s.tileSize/h.a6,C=s.tileID.toUnwrapped(),z=w.get("text-rotation-alignment")==="map",B=h.aK(s,1,this.transform.zoom),j=h.aL(this.collisionIndex.transform,s,S.get("text-translate"),S.get("text-translate-anchor")),$=h.aL(this.collisionIndex.transform,s,S.get("icon-translate"),S.get("icon-translate-anchor")),U=Fi(z,this.transform,B);this.retainedQueryData[f.bucketInstanceId]=new Dc(f.bucketInstanceId,y,f.sourceLayerIndex,f.index,s.tileID);let Z={bucket:f,layout:w,translationText:j,translationIcon:$,unwrappedTileID:C,pitchedLabelPlaneMatrix:U,scale:P,textPixelRatio:E,holdingForFade:s.holdingForSymbolFade(),collisionBoxArray:v,partiallyEvaluatedTextSize:h.aw(f.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(f.sourceID)};if(c)for(let Y of f.sortKeyRanges){let{sortKey:q,symbolInstanceStart:G,symbolInstanceEnd:X}=Y;t.push({sortKey:q,symbolInstanceStart:G,symbolInstanceEnd:X,parameters:Z})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:f.symbolInstances.length,parameters:Z})}attemptAnchorPlacement(t,n,s,c,f,y,v,w,S,P,E,C,z,B,j,$,U,Z,Y,q){var G,X,W;let te=h.aM[t.textAnchor],se=[t.textOffset0,t.textOffset1],le=Ra(te,s,c,se,f),ge=this.collisionIndex.placeCollisionBox(n,C,w,S,P,v,y,$,E.predicate,Y,le,q);if((!Z||this.collisionIndex.placeCollisionBox(Z,C,w,S,P,v,y,U,E.predicate,Y,le,q).placeable)&&ge.placeable){let me;if(!((G=this.prevPlacement)===null||G===void 0)&&G.variableOffsets[z.crossTileID]&&(!((W=(X=this.prevPlacement)===null||X===void 0?void 0:X.placements[z.crossTileID])===null||W===void 0)&&W.text)&&(me=this.prevPlacement.variableOffsets[z.crossTileID].anchor),z.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[z.crossTileID]={textOffset:se,width:s,height:c,anchor:te,textBoxScale:f,prevAnchor:me},this.markUsedJustification(B,te,z,j),B.allowVerticalPlacement&&(this.markUsedOrientation(B,j,z),this.placedOrientations[z.crossTileID]=j),{shift:le,placedGlyphBoxes:ge}}}placeLayerBucketPart(t,n,s){let{bucket:c,layout:f,translationText:y,translationIcon:v,unwrappedTileID:w,pitchedLabelPlaneMatrix:S,textPixelRatio:P,holdingForFade:E,collisionBoxArray:C,partiallyEvaluatedTextSize:z,collisionGroup:B}=t.parameters,j=f.get("text-optional"),$=f.get("icon-optional"),U=h.aN(f,"text-overlap","text-allow-overlap"),Z=U==="always",Y=h.aN(f,"icon-overlap","icon-allow-overlap"),q=Y==="always",G=f.get("text-rotation-alignment")==="map",X=f.get("text-pitch-alignment")==="map",W=f.get("icon-text-fit")!=="none",te=f.get("symbol-z-order")==="viewport-y",se=Z&&(q||!c.hasIconData()||$),le=q&&(Z||!c.hasTextData()||j);!c.collisionArrays&&C&&c.deserializeCollisionBoxes(C);let ge=this.retainedQueryData[c.bucketInstanceId].tileID,me=this._getTerrainElevationFunc(ge),Ae=this.transform.getFastPathSimpleProjectionMatrix(ge),Te=(pe,Ie,ke)=>{var ct,Ft;if(n[pe.crossTileID])return;if(E)return void(this.placements[pe.crossTileID]=new Ac(!1,!1,!1));let pt=!1,Ot=!1,jt=!0,ci=null,Dt={box:null,placeable:!1,offscreen:null,occluded:!1},vi={placeable:!1},oi=null,Xt=null,ui=null,Wr=0,Hr=0,Xr=0;Ie.textFeatureIndex?Wr=Ie.textFeatureIndex:pe.useRuntimeCollisionCircles&&(Wr=pe.featureIndex),Ie.verticalTextFeatureIndex&&(Hr=Ie.verticalTextFeatureIndex);let hi=Ie.textBox;if(hi){let gr=St=>{let xt=h.ax.horizontal;if(c.allowVerticalPlacement&&!St&&this.prevPlacement){let Nt=this.prevPlacement.placedOrientations[pe.crossTileID];Nt&&(this.placedOrientations[pe.crossTileID]=Nt,xt=Nt,this.markUsedOrientation(c,xt,pe))}return xt},_r=(St,xt)=>{if(c.allowVerticalPlacement&&pe.numVerticalGlyphVertices>0&&Ie.verticalTextBox){for(let Nt of c.writingModes)if(Nt===h.ax.vertical?(Dt=xt(),vi=Dt):Dt=St(),Dt?.placeable)break}else Dt=St()},Ni=pe.textAnchorOffsetStartIndex,Ji=pe.textAnchorOffsetEndIndex;if(Ji===Ni){let St=(xt,Nt)=>{let Pt=this.collisionIndex.placeCollisionBox(xt,U,P,ge,w,X,G,y,B.predicate,me,void 0,Ae);return Pt?.placeable&&(this.markUsedOrientation(c,Nt,pe),this.placedOrientations[pe.crossTileID]=Nt),Pt};_r((()=>St(hi,h.ax.horizontal)),(()=>{let xt=Ie.verticalTextBox;return c.allowVerticalPlacement&&pe.numVerticalGlyphVertices>0&&xt?St(xt,h.ax.vertical):{box:null,offscreen:null}})),gr(Dt?.placeable)}else{let St=h.aM[(Ft=(ct=this.prevPlacement)===null||ct===void 0?void 0:ct.variableOffsets[pe.crossTileID])===null||Ft===void 0?void 0:Ft.anchor],xt=(Pt,Dn,ys)=>{let Er=Pt.x2-Pt.x1,Kl=Pt.y2-Pt.y1,Iu=pe.textBoxScale,Jl=W&&Y==="never"?Dn:null,Kr=null,Jr=U==="never"?1:2,Qr="never";St&&Jr++;for(let Ql=0;Qlxt(hi,Ie.iconBox,h.ax.horizontal)),(()=>{let Pt=Ie.verticalTextBox;return c.allowVerticalPlacement&&!Dt?.placeable&&pe.numVerticalGlyphVertices>0&&Pt?xt(Pt,Ie.verticalIconBox,h.ax.vertical):{box:null,occluded:!0,offscreen:null}})),Dt&&(pt=Dt.placeable,jt=Dt.offscreen);let Nt=gr(Dt?.placeable);if(!pt&&this.prevPlacement){let Pt=this.prevPlacement.variableOffsets[pe.crossTileID];Pt&&(this.variableOffsets[pe.crossTileID]=Pt,this.markUsedJustification(c,Pt.anchor,pe,Nt))}}}if(oi=Dt,pt=oi?.placeable,jt=oi?.offscreen,pe.useRuntimeCollisionCircles&&pe.centerJustifiedTextSymbolIndex>=0){let gr=c.text.placedSymbolArray.get(pe.centerJustifiedTextSymbolIndex),_r=h.ay(c.textSizeData,z,gr),Ni=f.get("text-padding");Xt=this.collisionIndex.placeCollisionCircles(U,gr,c.lineVertexArray,c.glyphOffsetArray,_r,w,S,s,X,B.predicate,pe.collisionCircleDiameter,Ni,y,me),Xt.circles.length&&Xt.collisionDetected&&!s&&h.w("Collisions detected, but collision boxes are not shown"),pt=Z||Xt.circles.length>0&&!Xt.collisionDetected,jt&&(jt=Xt.offscreen)}if(Ie.iconFeatureIndex&&(Xr=Ie.iconFeatureIndex),Ie.iconBox){let gr=_r=>this.collisionIndex.placeCollisionBox(_r,Y,P,ge,w,X,G,v,B.predicate,me,W&&ci?ci:void 0,Ae);vi&&vi.placeable&&Ie.verticalIconBox?(ui=gr(Ie.verticalIconBox),Ot=ui.placeable):(ui=gr(Ie.iconBox),Ot=ui.placeable),jt&&(jt=ui.offscreen)}let Ir=j||pe.numHorizontalGlyphVertices===0&&pe.numVerticalGlyphVertices===0,Yr=$||pe.numIconVertices===0;Ir||Yr?Yr?Ir||Ot&&(Ot=pt):pt=Ot&&pt:Ot=pt=Ot&&pt;let _s=Ot&&ui.placeable;if(pt&&oi.placeable&&this.collisionIndex.insertCollisionBox(oi.box,U,f.get("text-ignore-placement"),c.bucketInstanceId,vi&&vi.placeable&&Hr?Hr:Wr,B.ID),_s&&this.collisionIndex.insertCollisionBox(ui.box,Y,f.get("icon-ignore-placement"),c.bucketInstanceId,Xr,B.ID),Xt&&pt&&this.collisionIndex.insertCollisionCircles(Xt.circles,U,f.get("text-ignore-placement"),c.bucketInstanceId,Wr,B.ID),s&&this.storeCollisionData(c.bucketInstanceId,ke,Ie,oi,ui,Xt),pe.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(c.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[pe.crossTileID]=new Ac((pt||se)&&!oi?.occluded,(Ot||le)&&!ui?.occluded,jt||c.justReloaded),n[pe.crossTileID]=!0};if(te){if(t.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let pe=c.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let Ie=pe.length-1;Ie>=0;--Ie){let ke=pe[Ie];Te(c.symbolInstances.get(ke),c.collisionArrays[ke],ke)}}else for(let pe=t.symbolInstanceStart;pe=0&&(t.text.placedSymbolArray.get(v).crossTileID=f>=0&&v!==f?0:s.crossTileID)}markUsedOrientation(t,n,s){let c=n===h.ax.horizontal||n===h.ax.horizontalOnly?n:0,f=n===h.ax.vertical?n:0,y=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex];for(let v of y)t.text.placedSymbolArray.get(v).placedOrientation=c;s.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(s.verticalPlacedTextSymbolIndex).placedOrientation=f)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;let n=this.prevPlacement,s=!1;this.prevZoomAdjustment=n?n.zoomAdjustment(this.transform.zoom):0;let c=n?n.symbolFadeChange(t):1,f=n?n.opacities:{},y=n?n.variableOffsets:{},v=n?n.placedOrientations:{};for(let w in this.placements){let S=this.placements[w],P=f[w];P?(this.opacities[w]=new Fo(P,c,S.text,S.icon),s||(s=S.text!==P.text.placed),s||(s=S.icon!==P.icon.placed)):(this.opacities[w]=new Fo(null,c,S.text,S.icon,S.skipFade),s||(s=S.text||S.icon))}for(let w in f){let S=f[w];if(!this.opacities[w]){let P=new Fo(S,c,!1,!1);P.isHidden()||(this.opacities[w]=P,s||(s=S.text.placed),s||(s=S.icon.placed))}}for(let w in y)this.variableOffsets[w]||!this.opacities[w]||this.opacities[w].isHidden()||(this.variableOffsets[w]=y[w]);for(let w in v)this.placedOrientations[w]||!this.opacities[w]||this.opacities[w].isHidden()||(this.placedOrientations[w]=v[w]);if(n&&n.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");s?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=n?n.lastPlacementChangeTime:t)}updateLayerOpacities(t,n){let s={};for(let c of n){let f=c.getBucket(t);f&&c.latestFeatureIndex&&t.id===f.layerIds[0]&&this.updateBucketOpacities(f,c.tileID,s,c.collisionBoxArray)}}updateBucketOpacities(t,n,s,c){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();let f=t.layers[0],y=f.layout,v=new Fo(null,0,!1,!1,!0),w=y.get("text-allow-overlap"),S=y.get("icon-allow-overlap"),P=f._unevaluatedLayout.hasValue("text-variable-anchor")||f._unevaluatedLayout.hasValue("text-variable-anchor-offset"),E=y.get("text-rotation-alignment")==="map",C=y.get("text-pitch-alignment")==="map",z=y.get("icon-text-fit")!=="none",B=new Fo(null,0,w&&(S||!t.hasIconData()||y.get("icon-optional")),S&&(w||!t.hasTextData()||y.get("text-optional")),!0);!t.collisionArrays&&c&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(c);let j=(U,Z,Y)=>{for(let q=0;q0,te=this.placedOrientations[Z.crossTileID],se=te===h.ax.vertical,le=te===h.ax.horizontal||te===h.ax.horizontalOnly;if(Y>0||q>0){let me=sl(X.text);j(t.text,Y,se?Oo:me),j(t.text,q,le?Oo:me);let Ae=X.text.isHidden(),Te=[Z.rightJustifiedTextSymbolIndex,Z.centerJustifiedTextSymbolIndex,Z.leftJustifiedTextSymbolIndex];for(let ke of Te)ke>=0&&(t.text.placedSymbolArray.get(ke).hidden=Ae||se?1:0);Z.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(Z.verticalPlacedTextSymbolIndex).hidden=Ae||le?1:0);let pe=this.variableOffsets[Z.crossTileID];pe&&this.markUsedJustification(t,pe.anchor,Z,te);let Ie=this.placedOrientations[Z.crossTileID];Ie&&(this.markUsedJustification(t,"left",Z,Ie),this.markUsedOrientation(t,Ie,Z))}if(W){let me=sl(X.icon),Ae=!(z&&Z.verticalPlacedIconSymbolIndex&&se);Z.placedIconSymbolIndex>=0&&(j(t.icon,Z.numIconVertices,Ae?me:Oo),t.icon.placedSymbolArray.get(Z.placedIconSymbolIndex).hidden=X.icon.isHidden()),Z.verticalPlacedIconSymbolIndex>=0&&(j(t.icon,Z.numVerticalIconVertices,Ae?Oo:me),t.icon.placedSymbolArray.get(Z.verticalPlacedIconSymbolIndex).hidden=X.icon.isHidden())}let ge=$?.has(U)?$.get(U):{text:null,icon:null};if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){let me=t.collisionArrays[U];if(me){let Ae=new h.P(0,0);if(me.textBox||me.verticalTextBox){let Te=!0;if(P){let pe=this.variableOffsets[G];pe?(Ae=Ra(pe.anchor,pe.width,pe.height,pe.textOffset,pe.textBoxScale),E&&Ae._rotate(C?-this.transform.bearingInRadians:this.transform.bearingInRadians)):Te=!1}if(me.textBox||me.verticalTextBox){let pe;me.textBox&&(pe=se),me.verticalTextBox&&(pe=le),nl(t.textCollisionBox.collisionVertexArray,X.text.placed,!Te||pe,ge.text,Ae.x,Ae.y)}}if(me.iconBox||me.verticalIconBox){let Te=!!(!le&&me.verticalIconBox),pe;me.iconBox&&(pe=Te),me.verticalIconBox&&(pe=!Te),nl(t.iconCollisionBox.collisionVertexArray,X.icon.placed,pe,ge.icon,z?Ae.x:0,z?Ae.y:0)}}}}if(t.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);t.bucketInstanceId in this.collisionCircleArrays&&(t.collisionCircleArray=this.collisionCircleArrays[t.bucketInstanceId],delete this.collisionCircleArrays[t.bucketInstanceId])}symbolFadeChange(t){return this.fadeDuration===0?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTimet}setStale(){this.stale=!0}}function nl(d,t,n,s,c,f){s&&s.length!==0||(s=[0,0,0,0]);let y=s[0]-At,v=s[1]-At,w=s[2]-At,S=s[3]-At;d.emplaceBack(t?1:0,n?1:0,c||0,f||0,y,v),d.emplaceBack(t?1:0,n?1:0,c||0,f||0,w,v),d.emplaceBack(t?1:0,n?1:0,c||0,f||0,w,S),d.emplaceBack(t?1:0,n?1:0,c||0,f||0,y,S)}let ol=Math.pow(2,25),al=Math.pow(2,24),uh=Math.pow(2,17),Bo=Math.pow(2,16),La=Math.pow(2,9),kc=Math.pow(2,8),Wn=Math.pow(2,1);function sl(d){if(d.opacity===0&&!d.placed)return 0;if(d.opacity===1&&d.placed)return 4294967295;let t=d.placed?1:0,n=Math.floor(127*d.opacity);return n*ol+t*al+n*uh+t*Bo+n*La+t*kc+n*Wn+t}let Oo=0;class Nr{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,n,s,c,f){let y=this._bucketParts;for(;this._currentTileIndexv.sortKey-w.sortKey)));this._currentPartIndex!this._forceFullPlacement&&Xe()-c>2;for(;this._currentPlacementIndex>=0;){let y=n[t[this._currentPlacementIndex]],v=this.placement.collisionIndex.transform.zoom;if(h.aQ(y)&&y.layout&&(!y.minzoom||y.minzoom<=v)&&(!y.maxzoom||y.maxzoom>v)){if(this._inProgressLayer||(this._inProgressLayer=new Nr(y)),this._inProgressLayer.continuePlacement(s[y.source],this.placement,this._showCollisionBoxes,y,f))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}let qe=512/h.a6/2;class ll{constructor(t,n,s){this.tileID=t,this.bucketInstanceId=s,this._symbolsByKey={};let c=new Map;for(let f=0;f({x:Math.floor(w.anchorX*qe),y:Math.floor(w.anchorY*qe)}))),crossTileIDs:y.map((w=>w.crossTileID))};if(v.positions.length>128){let w=new h.aR(v.positions.length,16,Uint16Array);for(let{x:S,y:P}of v.positions)w.add(S,P);w.finish(),delete v.positions,v.index=w}this._symbolsByKey[f]=v}}getScaledCoordinates(t,n){let{x:s,y:c,z:f}=this.tileID.canonical,{x:y,y:v,z:w}=n.canonical,S=qe/Math.pow(2,w-f),P=(v*h.a6+t.anchorY)*S,E=c*h.a6*qe;return{x:Math.floor((y*h.a6+t.anchorX)*S-s*h.a6*qe),y:Math.floor(P-E)}}findMatches(t,n,s){let c=this.tileID.canonical.zt))}}class hh{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class cl{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){let n=Math.round((t-this.lng)/360);if(n!==0)for(let s in this.indexes){let c=this.indexes[s],f={};for(let y in c){let v=c[y];v.tileID=v.tileID.unwrapTo(v.tileID.wrap+n),f[v.tileID.key]=v}this.indexes[s]=f}this.lng=t}addBucket(t,n,s){var c,f,y;if(!((c=this.indexes[t.overscaledZ])===null||c===void 0)&&c[t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===n.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let w=0;wt.overscaledZ)for(let P in S){let E=S[P];E.tileID.isChildOf(t)&&E.findMatches(n.symbolInstances,t,v)}else{let P=S[t.scaledTo(Number(w)).key];P&&P.findMatches(n.symbolInstances,t,v)}}for(let w=0;w 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0; +#else +return 1.0; +#endif +}float ele(vec2 pos) { +#ifdef TERRAIN3D +vec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a; +#else +return 0.0; +#endif +}float get_elevation(vec2 pos) { +#ifdef TERRAIN3D +#ifdef GLOBE +if ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;} +#endif +vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration; +#else +return 0.0; +#endif +}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;`),projectionMercator:Ve("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:Ve("",`#define GLOBE_RADIUS 6371008.8 +uniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos +);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); +if (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len +);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}`),background:Ve(`uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:Ve(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,"uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:Ve(`in vec3 v_data;in float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;} +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main(void) { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) { +#ifdef GLOBE +vec3 center_vector=projectToSphere(circle_center); +#endif +float angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else { +#ifdef GLOBE +vec4 projected_center=interpolateProjection(circle_center,center_vector,ele); +#else +vec4 projected_center=projectTileWithElevation(circle_center,ele); +#endif +corner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);} +#ifdef GLOBE +vec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele); +#else +gl_Position=projectTileWithElevation(corner_position,ele); +#endif +} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:Ve(li,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:Ve(`uniform highp float u_intensity;in vec2 v_extrude; +#pragma mapbox: define highp float weight +#define GAUSS_COEF 0.3989422804014327 +void main() { +#pragma mapbox: initialize highp float weight +float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0); +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude; +#pragma mapbox: define highp float weight +#pragma mapbox: define mediump float radius +const highp float ZERO=1.0/255.0/16.0; +#define GAUSS_COEF 0.3989422804014327 +void main(void) { +#pragma mapbox: initialize highp float weight +#pragma mapbox: initialize mediump float radius +vec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0); +#ifdef GLOBE +vec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0); +#else +gl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center)); +#endif +}`),heatmapTexture:Ve(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(0.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:Ve("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:Ve("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:Ve(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else +{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0)); +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,"uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:Ve("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:Ve(li,`in vec2 a_pos;void main() { +#ifdef GLOBE +gl_Position=projectTileFor3D(a_pos,0.0); +#else +gl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0); +#endif +}`),fill:Ve(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +fragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_fill_translate;in vec2 a_pos; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=projectTile(a_pos+u_fill_translate,a_pos);}`),fillOutline:Ve(`in vec2 v_pos; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity); +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +}`),fillOutlinePattern:Ve(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +}`),fillPattern:Ve(`#ifdef GL_ES +precision highp float; +#endif +uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:Ve(`in vec4 v_color;void main() {fragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed; +#ifdef TERRAIN3D +in vec2 a_centroid; +#endif +out vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate; +#ifdef GLOBE +vec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation); +#else +gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0); +#endif +float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0); +#ifdef GLOBE +mat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition); +#endif +directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:Ve(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed; +#ifdef TERRAIN3D +in vec2 a_centroid; +#endif +#ifdef GLOBE +out vec3 v_sphere_pos; +#endif +out vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate; +#ifdef GLOBE +vec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation); +#else +gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0); +#endif +vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,elevation*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:Ve(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:Ve(`uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES]; +#define PI 3.141592653589793 +#define STANDARD 0 +#define COMBINED 1 +#define IGOR 2 +#define MULTIDIRECTIONAL 3 +#define BASIC 4 +float get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else +{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else +{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);} +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:Ve(`uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity); +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),lineGradient:Ve(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity); +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +in vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),linePattern:Ve(`#ifdef GL_ES +precision highp float; +#endif +uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity; +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:Ve(`uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define mediump vec4 dasharray_from +#pragma mapbox: define mediump vec4 dasharray_to +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 dasharray_from +#pragma mapbox: initialize mediump vec4 dasharray_to +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity); +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define mediump vec4 dasharray_from +#pragma mapbox: define mediump vec4 dasharray_to +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 dasharray_from +#pragma mapbox: initialize mediump vec4 dasharray_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),lineGradientSDF:Ve(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv; +#ifdef GLOBE +in float v_depth; +#endif +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define mediump vec4 dasharray_from +#pragma mapbox: define mediump vec4 dasharray_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 dasharray_from +#pragma mapbox: initialize mediump vec4 dasharray_to +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity); +#ifdef GLOBE +if (v_depth > 1.0) {discard;} +#endif +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +in vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b; +#ifdef GLOBE +out float v_depth; +#endif +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define mediump vec4 dasharray_from +#pragma mapbox: define mediump vec4 dasharray_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 dasharray_from +#pragma mapbox: initialize mediump vec4 dasharray_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude; +#ifdef GLOBE +v_depth=gl_Position.z/gl_Position.w; +#endif +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),raster:Ve(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture(u_image0,v_pos0);vec4 color1=texture(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5; +#ifdef GLOBE +if (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;} +#endif +v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}`),symbolIcon:Ve(`uniform sampler2D u_texture;in vec2 v_tex;in float v_total_opacity;void main() {fragColor=texture(u_texture,v_tex)*v_total_opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_total_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_total_opacity=opacity*max(0.0,min(visibility,fade_opacity[0]+fade_change));if (v_total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0; +#ifdef GLOBE +if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);} +#endif +vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;}`),symbolSDF:Ve(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform bool u_is_plain;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;in vec2 v_data0;in vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float total_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out_text,color_alpha_out_halo;if (u_is_plain){highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);color_alpha_out_text=total_opacity*alpha*fill_color;}if (u_is_halo) {float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);float inner_edge_halo=inner_edge+gamma_halo*gamma_scale;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(inner_edge_halo-gamma_scaled_halo,inner_edge_halo+gamma_scaled_halo,dist);highp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha_halo= min(smoothstep(halo_edge-gamma_scaled_halo,halo_edge+gamma_scaled_halo,dist),1.0-alpha_halo);color_alpha_out_halo=total_opacity*alpha_halo*halo_color;}if (u_is_plain && u_is_halo) {fragColor=color_alpha_out_text+(1.-color_alpha_out_text.a)*color_alpha_out_halo;} else if (u_is_halo){fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out_text;} +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy/16.0;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0; +#ifdef GLOBE +if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);} +#endif +vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,total_opacity);}`),symbolTextAndIcon:Ve(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform bool u_is_text;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;in vec4 v_data0;in vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float total_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;fragColor=texture(u_texture_icon,tex_icon)*total_opacity; +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out,color_alpha_out_halo;if (u_is_text) {highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);color_alpha_out=fill_color*(alpha*total_opacity);}if (u_is_halo) {highp float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);lowp float buff_halo=(6.0-halo_width/fontScale)/SDF_PX;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(buff_halo-gamma_scaled_halo,buff_halo+gamma_scaled_halo,dist);color_alpha_out_halo=halo_color*(alpha_halo*total_opacity);}if (u_is_text && u_is_halo) {fragColor=color_alpha_out+(1.-color_alpha_out.a)*color_alpha_out_halo;} else if (u_is_halo) {fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out;} +#ifdef OVERDRAW_INSPECTOR +fragColor=vec4(1.0); +#endif +}`,`in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0; +#ifdef GLOBE +if(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);} +#endif +vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,total_opacity,is_sdf);}`),terrain:Ve("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && u_fog_ground_blend_opacity > 0.0 && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:Ve("in float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:Ve("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:Ve("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:Ve(`#ifdef GL_ES +precision highp float; +#endif +in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758 +);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}`,"in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:Ve("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function Ve(d,t){let n=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,s=t.match(/in ([\w]+) ([\w]+)/g),c=d.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),f=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),y=f?f.concat(c):c,v={};return{fragmentSource:d=d.replace(n,((w,S,P,E,C)=>(v[C]=!0,S==="define"?` +#ifndef HAS_UNIFORM_u_${C} +in ${P} ${E} ${C}; +#else +uniform ${P} ${E} u_${C}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${C} + ${P} ${E} ${C} = u_${C}; +#endif +`))),vertexSource:t=t.replace(n,((w,S,P,E,C)=>{let z=E==="float"?"vec2":"vec4",B=C.match(/color/)?"color":z;return v[C]?S==="define"?` +#ifndef HAS_UNIFORM_u_${C} +uniform lowp float u_${C}_t; +in ${P} ${z} a_${C}; +out ${P} ${E} ${C}; +#else +uniform ${P} ${E} u_${C}; +#endif +`:B==="vec4"?` +#ifndef HAS_UNIFORM_u_${C} + ${C} = a_${C}; +#else + ${P} ${E} ${C} = u_${C}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${C} + ${C} = unpack_mix_${B}(a_${C}, u_${C}_t); +#else + ${P} ${E} ${C} = u_${C}; +#endif +`:S==="define"?` +#ifndef HAS_UNIFORM_u_${C} +uniform lowp float u_${C}_t; +in ${P} ${z} a_${C}; +#else +uniform ${P} ${E} u_${C}; +#endif +`:B==="vec4"?` +#ifndef HAS_UNIFORM_u_${C} + ${P} ${E} ${C} = a_${C}; +#else + ${P} ${E} ${C} = u_${C}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${C} + ${P} ${E} ${C} = unpack_mix_${B}(a_${C}, u_${C}_t); +#else + ${P} ${E} ${C} = u_${C}; +#endif +`})),staticAttributes:s,staticUniforms:y}}class mt{constructor(t,n,s){this.vertexBuffer=t,this.indexBuffer=n,this.segments=s}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}var Ur=h.aS([{name:"a_pos",type:"Int16",components:2}]);let _i="#define PROJECTION_MERCATOR",Bi="mercator";class yi{constructor(){this._cachedMesh=null}get name(){return"mercator"}get useSubdivision(){return!1}get shaderVariantName(){return Bi}get shaderDefine(){return _i}get shaderPreludeCode(){return wt.projectionMercator}get vertexShaderPreludeCode(){return wt.projectionMercator.vertexSource}get subdivisionGranularity(){return h.aT.noSubdivision}get useGlobeControls(){return!1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(t){}getMeshFromTileID(t,n,s,c,f){if(this._cachedMesh)return this._cachedMesh;let y=new h.aU;y.emplaceBack(0,0),y.emplaceBack(h.a6,0),y.emplaceBack(0,h.a6),y.emplaceBack(h.a6,h.a6);let v=t.createVertexBuffer(y,Ur.members),w=h.aV.simpleSegment(0,0,4,2),S=new h.aW;S.emplaceBack(1,0,2),S.emplaceBack(1,2,3);let P=t.createIndexBuffer(S);return this._cachedMesh=new mt(v,P,w),this._cachedMesh}recalculate(){}hasTransition(){return!1}setErrorQueryLatitudeDegrees(t){}}class Xn{constructor(t=0,n=0,s=0,c=0){if(isNaN(t)||t<0||isNaN(n)||n<0||isNaN(s)||s<0||isNaN(c)||c<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=n,this.left=s,this.right=c}interpolate(t,n,s){return n.top!=null&&t.top!=null&&(this.top=h.H.number(t.top,n.top,s)),n.bottom!=null&&t.bottom!=null&&(this.bottom=h.H.number(t.bottom,n.bottom,s)),n.left!=null&&t.left!=null&&(this.left=h.H.number(t.left,n.left,s)),n.right!=null&&t.right!=null&&(this.right=h.H.number(t.right,n.right,s)),this}getCenter(t,n){let s=h.al((this.left+t-this.right)/2,0,t),c=h.al((this.top+n-this.bottom)/2,0,n);return new h.P(s,c)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new Xn(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Gr(d,t){if(!d.renderWorldCopies||d.lngRange)return;let n=t.lng-d.center.lng;t.lng+=n>180?-360:n<-180?360:0}function Rt(d){return Math.max(0,Math.floor(d))}class fn{constructor(t,n){var s;this.applyConstrain=(c,f)=>this._constrainOverride!==null?this._constrainOverride(c,f):this._callbacks.defaultConstrain(c,f),this._callbacks=t,this._tileSize=512,this._renderWorldCopies=n?.renderWorldCopies===void 0||!!n?.renderWorldCopies,this._minZoom=n?.minZoom||0,this._maxZoom=n?.maxZoom||22,this._minPitch=n?.minPitch==null?0:n?.minPitch,this._maxPitch=n?.maxPitch==null?60:n?.maxPitch,this._constrainOverride=(s=n?.constrainOverride)!==null&&s!==void 0?s:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new h.W(0,0),this._elevation=0,this._zoom=0,this._tileZoom=Rt(this._zoom),this._scale=h.ao(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Xn,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0}apply(t,n,s){this._constrainOverride=t.constrainOverride,this._latRange=t.latRange,this._lngRange=t.lngRange,this._width=t.width,this._height=t.height,this._center=t.center,this._elevation=t.elevation,this._minElevationForCurrentTile=t.minElevationForCurrentTile,this._zoom=t.zoom,this._tileZoom=Rt(this._zoom),this._scale=h.ao(this._zoom),this._bearingInRadians=t.bearingInRadians,this._fovInRadians=t.fovInRadians,this._pitchInRadians=t.pitchInRadians,this._rollInRadians=t.rollInRadians,this._unmodified=t.unmodified,this._edgeInsets=new Xn(t.padding.top,t.padding.bottom,t.padding.left,t.padding.right),this._minZoom=t.minZoom,this._maxZoom=t.maxZoom,this._minPitch=t.minPitch,this._maxPitch=t.maxPitch,this._renderWorldCopies=t.renderWorldCopies,this._cameraToCenterDistance=t.cameraToCenterDistance,this._nearZ=t.nearZ,this._farZ=t.farZ,this._autoCalculateNearFarZ=!s&&t.autoCalculateNearFarZ,n&&this.constrainInternal(),this._calcMatrices()}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(t){this._minElevationForCurrentTile=t}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(t){this._minZoom!==t&&(this._minZoom=t,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get maxZoom(){return this._maxZoom}setMaxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get minPitch(){return this._minPitch}setMinPitch(t){this._minPitch!==t&&(this._minPitch=t,this.setPitch(Math.max(this.pitch,t)))}get maxPitch(){return this._maxPitch}setMaxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.setPitch(Math.min(this.pitch,t)))}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get constrainOverride(){return this._constrainOverride}setConstrainOverride(t){t===void 0&&(t=null),this._constrainOverride!==t&&(this._constrainOverride=t,this.constrainInternal(),this._calcMatrices())}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new h.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(t){let n=h.X(t,-180,180)*Math.PI/180;var s,c,f,y,v,w,S,P,E;this._bearingInRadians!==n&&(this._unmodified=!1,this._bearingInRadians=n,this._calcMatrices(),this._rotationMatrix=Ze(),s=this._rotationMatrix,f=-this._bearingInRadians,y=(c=this._rotationMatrix)[0],v=c[1],w=c[2],S=c[3],P=Math.sin(f),E=Math.cos(f),s[0]=y*E+w*P,s[1]=v*E+S*P,s[2]=y*-P+w*E,s[3]=v*-P+S*E)}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(t){let n=h.al(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==n&&(this._unmodified=!1,this._pitchInRadians=n,this._calcMatrices())}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(t){let n=t/180*Math.PI;this._rollInRadians!==n&&(this._unmodified=!1,this._rollInRadians=n,this._calcMatrices())}get fovInRadians(){return this._fovInRadians}get fov(){return h.aX(this._fovInRadians)}setFov(t){t=h.al(t,.1,150),this.fov!==t&&(this._unmodified=!1,this._fovInRadians=h.an(t),this._calcMatrices())}get zoom(){return this._zoom}setZoom(t){let n=this.applyConstrain(this._center,t).zoom;this._zoom!==n&&(this._unmodified=!1,this._zoom=n,this._tileZoom=Math.max(0,Math.floor(n)),this._scale=h.ao(n),this.constrainInternal(),this._calcMatrices())}get center(){return this._center}setCenter(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this.constrainInternal(),this._calcMatrices())}get elevation(){return this._elevation}setElevation(t){t!==this._elevation&&(this._elevation=t,this.constrainInternal(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}setPadding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(t,n){this._autoCalculateNearFarZ=!1,this._nearZ=t,this._farZ=n,this._calcMatrices()}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices()}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,n,s){this._unmodified=!1,this._edgeInsets.interpolate(t,n,s),this.constrainInternal(),this._calcMatrices()}resize(t,n,s=!0){this._width=t,this._height=n,s&&this.constrainInternal(),this._calcMatrices()}getMaxBounds(){var t,n;return((t=this._latRange)===null||t===void 0?void 0:t.length)!==2||((n=this._lngRange)===null||n===void 0?void 0:n.length)!==2?null:new Oe([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]])}setMaxBounds(t){t?(this._lngRange=[t.getWest(),t.getEast()],this._latRange=[t.getSouth(),t.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-h.am,h.am])}getCameraQueryGeometry(t,n){if(n.length===1)return[n[0],t];{let{minX:s,minY:c,maxX:f,maxY:y}=h.a8.fromPoints(n).extend(t);return[new h.P(s,c),new h.P(f,c),new h.P(f,y),new h.P(s,y),new h.P(s,c)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;let t=this._unmodified,{center:n,zoom:s}=this.applyConstrain(this.center,this.zoom);this.setCenter(n),this.setZoom(s),this._unmodified=t,this._constraining=!1}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let t=h.ap(new Float64Array(16));h.S(t,t,[this._width/2,-this._height/2,1]),h.Q(t,t,[1,-1,0]),this._clipSpaceToPixelsMatrix=t,t=h.ap(new Float64Array(16)),h.S(t,t,[1,-1,1]),h.Q(t,t,[-1,-1,0]),h.S(t,t,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=t,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height}this._callbacks.calcMatrices()}calculateCenterFromCameraLngLatAlt(t,n,s,c){let f=s!==void 0?s:this.bearing,y=c=c!==void 0?c:this.pitch,{distanceToCenter:v,clampedElevation:w}=this._distanceToCenterFromAltElevationPitch(n,this.elevation,y),{x:S,y:P}=Ea(y,f),E=h.a7.fromLngLat(t,n),C,z,B=h.aY(1,E.y),j=0;do{if(j+=1,j>10)break;z=v/B,C=new h.a7(E.x+S*z,E.y+P*z),B=1/C.meterInMercatorCoordinateUnits()}while(Math.abs(v-z*B)>1e-12);return{center:C.toLngLat(),elevation:w,zoom:h.ar(this.height/2/Math.tan(this.fovInRadians/2)/z/this.tileSize)}}recalculateZoomAndCenter(t){if(this.elevation-t==0)return;let n=1/this.worldSize,s=h.aq(1,this.center.lat)*this.worldSize,c=h.a7.fromLngLat(this.center,this.elevation),f=c.x/n,y=c.y/n,v=c.z/n,w=this.pitch,S=this.bearing,{x:P,y:E,z:C}=Ea(w,S),z=this.cameraToCenterDistance,B=f+z*-P,j=y+z*-E,$=v+z*C,{distanceToCenter:U,clampedElevation:Z}=this._distanceToCenterFromAltElevationPitch($/s,t,w),Y=U*s,q=new h.a7((B+P*Y)*n,(j+E*Y)*n,0).toLngLat(),G=h.aq(1,q.lat),X=h.ar(this.height/2/Math.tan(this.fovInRadians/2)/U/G/this.tileSize);this._elevation=Z,this._center=q,this.setZoom(X)}_distanceToCenterFromAltElevationPitch(t,n,s){let c=-Math.cos(h.an(s)),f=t-n,y,v=n;return c*f>=0||Math.abs(c)<.1?(y=1e4,v=t+y*c):y=-f/c,{distanceToCenter:y,clampedElevation:v}}getCameraPoint(){let t=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new h.P(t*Math.sin(this.rollInRadians),t*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){let t=h.aq(1,this.center.lat)*this.worldSize;return Gn(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/t).toLngLat()}getMercatorTileCoordinates(t){if(!t)return[0,0,1,1];let n=t.canonical.z>=0?1<this.max[0]||t.aabb.min[1]>this.max[1]||t.aabb.min[2]>this.max[2]||t.aabb.max[0]0?(n+=t[c]*this.min[c],s+=t[c]*this.max[c]):(s+=t[c]*this.min[c],n+=t[c]*this.max[c]);return n>=0?2:s<0?0:1}}class Fa{distanceToTile2d(t,n,s,c){let f=c,y=f.distanceX([t,n]),v=f.distanceY([t,n]);return Math.hypot(y,v)}getWrap(t,n,s){return s}getTileBoundingVolume(t,n,s,c){var f,y;let v=0,w=0;if(c?.terrain){let P=new h.a3(t.z,n,t.z,t.x,t.y),E=c.terrain.getMinMaxElevation(P);v=(f=E.minElevation)!==null&&f!==void 0?f:Math.min(0,s),w=(y=E.maxElevation)!==null&&y!==void 0?y:Math.max(0,s)}let S=1<c}allowWorldCopies(){return!0}prepareNextFrame(){}}class Ai{constructor(t,n,s){this.points=t,this.planes=n,this.aabb=s}static fromInvProjectionMatrix(t,n=1,s=0,c,f){let y=f?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],v=Math.pow(2,s),w=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((C=>(function(z,B,j,$){let U=h.aE([],z,B),Z=1/U[3]/j*$;return h.b4(U,U,[Z,Z,1/U[3],Z])})(C,t,n,v)));c&&(function(C,z,B,j){let $=j?4:0,U=j?0:4,Z=0,Y=[],q=[];for(let W=0;W<4;W++){let te=h.b0([],C[W+U],C[W+$]),se=h.b5(te);h.aZ(te,te,1/se),Y.push(se),q.push(te)}for(let W=0;W<4;W++){let te=h.b6(C[W+$],q[W],B);Z=te!==null&&te>=0?Math.max(Z,te):Math.max(Z,Y[W])}let G=(function(W,te){let se=h.b0([],W[te[0]],W[te[1]]),le=h.b0([],W[te[2]],W[te[1]]),ge=[0,0,0,0];return h.b1(ge,h.b2([],se,le)),ge[3]=-h.b3(ge,W[te[0]]),ge})(C,z),X=(function(W,te){let se=h.b7(W),le=h.b8([],W,1/se),ge=h.b0([],te,h.aZ([],le,h.b3(te,le))),me=h.b7(ge);if(me>0){let Ae=Math.sqrt(1-le[3]*le[3]),Te=h.aZ([],le,-le[3]),pe=h.a_([],Te,h.aZ([],ge,Ae/me));return h.b9(te,pe)}return null})(B,G);if(X!==null){let W=X/h.b3(q[0],G);Z=Math.min(Z,W)}for(let W=0;W<4;W++){let te=Math.min(Z,Y[W]);C[W+U]=[C[W+$][0]+q[W][0]*te,C[W+$][1]+q[W][1]*te,C[W+$][2]+q[W][2]*te,1]}})(w,y[0],c,f);let S=y.map((C=>{let z=h.b0([],w[C[0]],w[C[1]]),B=h.b0([],w[C[2]],w[C[1]]),j=h.b1([],h.b2([],z,B)),$=-h.b3(j,w[C[1]]);return j.concat($)})),P=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],E=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(let C of w)for(let z=0;z<3;z++)P[z]=Math.min(P[z],C[z]),E[z]=Math.max(E[z],C[z]);return new Ai(w,S,new dr(P,E))}}class mn{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(t){this._helper.setMinZoom(t)}setMaxZoom(t){this._helper.setMaxZoom(t)}setMinPitch(t){this._helper.setMinPitch(t)}setMaxPitch(t){this._helper.setMaxPitch(t)}setRenderWorldCopies(t){this._helper.setRenderWorldCopies(t)}setBearing(t){this._helper.setBearing(t)}setPitch(t){this._helper.setPitch(t)}setRoll(t){this._helper.setRoll(t)}setFov(t){this._helper.setFov(t)}setZoom(t){this._helper.setZoom(t)}setCenter(t){this._helper.setCenter(t)}setElevation(t){this._helper.setElevation(t)}setMinElevationForCurrentTile(t){this._helper.setMinElevationForCurrentTile(t)}setPadding(t){this._helper.setPadding(t)}interpolatePadding(t,n,s){this._helper.interpolatePadding(t,n,s)}isPaddingEqual(t){return this._helper.isPaddingEqual(t)}resize(t,n,s=!0){this._helper.resize(t,n,s)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(t){this._helper.setMaxBounds(t)}setConstrainOverride(t){this._helper.setConstrainOverride(t)}overrideNearFarZ(t,n){this._helper.overrideNearFarZ(t,n)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(t){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),t)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(t,n){}constructor(t){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(n,s)=>{s=h.al(+s,this.minZoom,this.maxZoom);let c={center:new h.W(n.lng,n.lat),zoom:s},f=this._helper._lngRange;if(!this._helper._renderWorldCopies&&f===null){let q=179.9999999999;f=[-q,q]}let y=this.tileSize*h.ao(c.zoom),v=0,w=y,S=0,P=y,E=0,C=0,{x:z,y:B}=this.size;if(this._helper._latRange){let q=this._helper._latRange;v=h.Y(q[1])*y,w=h.Y(q[0])*y,w-vw&&(Z=w-q)}if(f){let q=(S+P)/2,G=j;this._helper._renderWorldCopies&&(G=h.X(j,q-y/2,q+y/2));let X=z/2;G-XP&&(U=P-X)}if(U!==void 0||Z!==void 0){let q=new h.P(U??j,Z??$);c.center=Un(y,q).wrap()}return c},this.applyConstrain=(n,s)=>this._helper.applyConstrain(n,s),this._helper=new fn({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(n,s)=>this.defaultConstrain(n,s)},t),this._coveringTilesDetailsProvider=new Fa}clone(){let t=new mn;return t.apply(this,!1),t}apply(t,n,s){this._helper.apply(t,n,s)}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(t){let n=[new h.ba(0,t)];if(this._helper._renderWorldCopies){let s=this.screenPointToMercatorCoordinate(new h.P(0,0)),c=this.screenPointToMercatorCoordinate(new h.P(this._helper._width,0)),f=this.screenPointToMercatorCoordinate(new h.P(this._helper._width,this._helper._height)),y=this.screenPointToMercatorCoordinate(new h.P(0,this._helper._height)),v=Math.floor(Math.min(s.x,c.x,f.x,y.x)),w=Math.floor(Math.max(s.x,c.x,f.x,y.x)),S=1;for(let P=v-S;P<=w+S;P++)P!==0&&n.push(new h.ba(P,t))}return n}getCameraFrustum(){return Ai.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(t){let n=this.screenPointToLocation(this.centerPoint,t),s=t?t.getElevationForLngLatZoom(n,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(s)}setLocationAtPoint(t,n){let s=h.aq(this.elevation,this.center.lat),c=this.screenPointToMercatorCoordinateAtZ(n,s),f=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,s),y=h.a7.fromLngLat(t),v=new h.a7(y.x-(c.x-f.x),y.y-(c.y-f.y));this.setCenter(v?.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap())}locationToScreenPoint(t,n){return n?this.coordinatePoint(h.a7.fromLngLat(t),n.getElevationForLngLat(t,this),this._pixelMatrix3D):this.coordinatePoint(h.a7.fromLngLat(t))}screenPointToLocation(t,n){var s;return(s=this.screenPointToMercatorCoordinate(t,n))===null||s===void 0?void 0:s.toLngLat()}screenPointToMercatorCoordinate(t,n){if(n){let s=n.pointCoordinate(t);if(s!=null)return s}return this.screenPointToMercatorCoordinateAtZ(t)}screenPointToMercatorCoordinateAtZ(t,n){let s=n||0,c=[t.x,t.y,0,1],f=[t.x,t.y,1,1];h.aE(c,c,this._pixelMatrixInverse),h.aE(f,f,this._pixelMatrixInverse);let y=c[3],v=f[3],w=c[1]/y,S=f[1]/v,P=c[2]/y,E=f[2]/v,C=P===E?0:(s-P)/(E-P);return new h.a7(h.H.number(c[0]/y,f[0]/v,C)/this.worldSize,h.H.number(w,S,C)/this.worldSize,s)}coordinatePoint(t,n=0,s=this._pixelMatrix){let c=[t.x*this.worldSize,t.y*this.worldSize,n,1];return h.aE(c,c,s),new h.P(c[0]/c[3],c[1]/c[3])}getBounds(){let t=Math.max(0,this._helper._height/2-cn(this));return new Oe().extend(this.screenPointToLocation(new h.P(0,t))).extend(this.screenPointToLocation(new h.P(this._helper._width,t))).extend(this.screenPointToLocation(new h.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new h.P(0,this._helper._height)))}isPointOnMapSurface(t,n){return n?n.pointCoordinate(t)!=null:t.y>this.height/2-cn(this)}calculatePosMatrix(t,n=!1,s){var c;let f=(c=t.key)!==null&&c!==void 0?c:h.bb(t.wrap,t.canonical.z,t.canonical.z,t.canonical.x,t.canonical.y),y=n?this._alignedPosMatrixCache:this._posMatrixCache;if(y.has(f)){let S=y.get(f);return s?S.f32:S.f64}let v=Ao(t,this.worldSize);h.U(v,n?this._alignedProjMatrix:this._viewProjMatrix,v);let w={f64:v,f32:new Float32Array(v)};return y.set(f,w),s?w.f32:w.f64}calculateFogMatrix(t){let n=t.key,s=this._fogMatrixCacheF32;if(s.has(n))return s.get(n);let c=Ao(t,this.worldSize);return h.U(c,this._fogMatrix,c),s.set(n,new Float32Array(c)),s.get(n)}calculateCenterFromCameraLngLatAlt(t,n,s,c){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,s,c)}_calculateNearFarZIfNeeded(t,n,s){if(!this._helper.autoCalculateNearFarZ)return;let c=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),f=t-c*this._helper._pixelPerMeter/Math.cos(n),y=c<0?f:t,v=Math.PI/2+this.pitchInRadians,w=h.an(this.fov)*(Math.abs(Math.cos(h.an(this.roll)))*this.height+Math.abs(Math.sin(h.an(this.roll)))*this.width)/this.height*(.5+s.y/this.height),S=Math.sin(w)*y/Math.sin(h.al(Math.PI-v-w,.01,Math.PI-.01)),P=cn(this),E=Math.atan(P/this._helper.cameraToCenterDistance),C=h.an(.75),z=E>C?2*E*(.5+s.y/(2*P)):C,B=Math.sin(z)*y/Math.sin(h.al(Math.PI-v-z,.01,Math.PI-.01)),j=Math.min(S,B);this._helper._farZ=1.01*(Math.cos(Math.PI/2-n)*j+y),this._helper._nearZ=this._helper._height/50}_calcMatrices(){if(!this._helper._height)return;let t=this.centerOffset,n=rr(this.worldSize,this.center),s=n.x,c=n.y;this._helper._pixelPerMeter=h.aq(1,this.center.lat)*this.worldSize;let f=h.an(Math.min(this.pitch,ln)),y=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(f)),v;var w,S;this._calculateNearFarZIfNeeded(y,f,t),v=new Float64Array(16),h.bc(v,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),(w=this._invProjMatrix)[0]=1/(S=v)[0],w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1/S[5],w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=0,w[11]=1/S[14],w[12]=0,w[13]=0,w[14]=-1,w[15]=S[10]/S[14],v[8]=2*-t.x/this._helper._width,v[9]=2*t.y/this._helper._height,this._projectionMatrix=h.bd(v),h.S(v,v,[1,-1,1]),h.Q(v,v,[0,0,-this._helper.cameraToCenterDistance]),h.be(v,v,-this.rollInRadians),h.bf(v,v,this.pitchInRadians),h.be(v,v,-this.bearingInRadians),h.Q(v,v,[-s,-c,0]),this._mercatorMatrix=h.S([],v,[this.worldSize,this.worldSize,this.worldSize]),h.S(v,v,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=h.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,v),h.Q(v,v,[0,0,-this.elevation]),this._viewProjMatrix=v,this._invViewProjMatrix=h.bg([],v);let P=[0,0,-1,1];h.aE(P,P,this._invViewProjMatrix),this._cameraPosition=[P[0]/P[3],P[1]/P[3],P[2]/P[3]],this._fogMatrix=new Float64Array(16),h.bc(this._fogMatrix,this.fovInRadians,this.width/this.height,y,this._helper._farZ),this._fogMatrix[8]=2*-t.x/this.width,this._fogMatrix[9]=2*t.y/this.height,h.S(this._fogMatrix,this._fogMatrix,[1,-1,1]),h.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),h.be(this._fogMatrix,this._fogMatrix,-this.rollInRadians),h.bf(this._fogMatrix,this._fogMatrix,this.pitchInRadians),h.be(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),h.Q(this._fogMatrix,this._fogMatrix,[-s,-c,0]),h.S(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),h.Q(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=h.U(new Float64Array(16),this.clipSpaceToPixelsMatrix,v);let E=this._helper._width%2/2,C=this._helper._height%2/2,z=Math.cos(this.bearingInRadians),B=Math.sin(-this.bearingInRadians),j=s-Math.round(s)+z*E+B*C,$=c-Math.round(c)+z*C+B*E,U=new Float64Array(v);if(h.Q(U,U,[j>.5?j-1:j,$>.5?$-1:$,0]),this._alignedProjMatrix=U,v=h.bg(new Float64Array(16),this._pixelMatrix),!v)throw new Error("failed to invert matrix");this._pixelMatrixInverse=v,this._clearMatrixCaches()}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear()}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;let t=this.screenPointToMercatorCoordinate(new h.P(0,0)),n=[t.x*this.worldSize,t.y*this.worldSize,0,1];return h.aE(n,n,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){let t=h.aq(1,this.center.lat)*this.worldSize;return Gn(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/t).toLngLat()}lngLatToCameraDepth(t,n){let s=h.a7.fromLngLat(t),c=[s.x*this.worldSize,s.y*this.worldSize,n,1];return h.aE(c,c,this._viewProjMatrix),c[2]/c[3]}getProjectionData(t){let{overscaledTileID:n,aligned:s,applyTerrainMatrix:c}=t,f=this._helper.getMercatorTileCoordinates(n),y=n?this.calculatePosMatrix(n,s,!0):null,v;return v=n?.terrainRttPosMatrix32f&&c?n.terrainRttPosMatrix32f:y||h.bh(),{mainMatrix:v,tileMercatorCoords:f,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:v}}isLocationOccluded(t){return!1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(t,n,s){return 1}transformLightDirection(t){return h.a$(t)}getRayDirectionFromPixel(t){throw new Error("Not implemented.")}projectTileCoordinates(t,n,s,c){let f=this.calculatePosMatrix(s),y;c?(y=[t,n,c(t,n),1],h.aE(y,y,f)):(y=[t,n,0,1],ka(y,y,f));let v=y[3];return{point:new h.P(y[0]/v,y[1]/v),signedDistanceFromCamera:v,isOccluded:!1}}populateCache(t){for(let n of t)this.calculatePosMatrix(n)}getMatrixForModel(t,n){let s=h.a7.fromLngLat(t,n),c=s.meterInMercatorCoordinateUnits(),f=h.bi();return h.Q(f,f,[s.x,s.y,s.z]),h.be(f,f,Math.PI),h.bf(f,f,Math.PI/2),h.S(f,f,[-c,c,c]),f}getProjectionDataForCustomLayer(t=!0){let n=new h.a3(0,0,0,0,0),s=this.getProjectionData({overscaledTileID:n,applyGlobeMatrix:t}),c=Ao(n,this.worldSize);h.U(c,this._viewProjMatrix,c),s.tileMercatorCoords=[0,0,1,1];let f=[h.a6,h.a6,this.worldSize/this._helper.pixelsPerMeter],y=h.bj();return h.S(y,c,f),s.fallbackMatrix=y,s.mainMatrix=y,s}getFastPathSimpleProjectionMatrix(t){return this.calculatePosMatrix(t)}}function br(){h.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.")}function Rc(d){if(d.useSlerp)if(d.k<1){let t=h.bk(d.startEulerAngles.roll,d.startEulerAngles.pitch,d.startEulerAngles.bearing),n=h.bk(d.endEulerAngles.roll,d.endEulerAngles.pitch,d.endEulerAngles.bearing),s=new Float64Array(4);h.bl(s,t,n,d.k);let c=h.bm(s);d.tr.setRoll(c.roll),d.tr.setPitch(c.pitch),d.tr.setBearing(c.bearing)}else d.tr.setRoll(d.endEulerAngles.roll),d.tr.setPitch(d.endEulerAngles.pitch),d.tr.setBearing(d.endEulerAngles.bearing);else d.tr.setRoll(h.H.number(d.startEulerAngles.roll,d.endEulerAngles.roll,d.k)),d.tr.setPitch(h.H.number(d.startEulerAngles.pitch,d.endEulerAngles.pitch,d.k)),d.tr.setBearing(h.H.number(d.startEulerAngles.bearing,d.endEulerAngles.bearing,d.k))}function ul(d,t,n,s,c){let f=c.padding,y=rr(c.worldSize,n.getNorthWest()),v=rr(c.worldSize,n.getNorthEast()),w=rr(c.worldSize,n.getSouthEast()),S=rr(c.worldSize,n.getSouthWest()),P=h.an(-s),E=y.rotate(P),C=v.rotate(P),z=w.rotate(P),B=S.rotate(P),j=new h.P(Math.max(E.x,C.x,B.x,z.x),Math.max(E.y,C.y,B.y,z.y)),$=new h.P(Math.min(E.x,C.x,B.x,z.x),Math.min(E.y,C.y,B.y,z.y)),U=j.sub($),Z=(c.width-(f.left+f.right+t.left+t.right))/U.x,Y=(c.height-(f.top+f.bottom+t.top+t.bottom))/U.y;if(Y<0||Z<0)return void br();let q=Math.min(h.ar(c.scale*Math.min(Z,Y)),d.maxZoom),G=h.P.convert(d.offset),X=new h.P((t.left-t.right)/2,(t.top-t.bottom)/2).rotate(h.an(s)),W=G.add(X).mult(c.scale/h.ao(q));return{center:Un(c.worldSize,y.add(w).div(2).sub(W)),zoom:q,bearing:s}}class gn{get useGlobeControls(){return!1}handlePanInertia(t,n){let s=t.mag(),c=Math.abs(cn(n));return{easingOffset:t.mult(Math.min(.75*c/s,1)),easingCenter:n.center}}handleMapControlsRollPitchBearingZoom(t,n){t.bearingDelta&&n.setBearing(n.bearing+t.bearingDelta),t.pitchDelta&&n.setPitch(n.pitch+t.pitchDelta),t.rollDelta&&n.setRoll(n.roll+t.rollDelta),t.zoomDelta&&n.setZoom(n.zoom+t.zoomDelta)}handleMapControlsPan(t,n,s){t.around.distSqr(n.centerPoint)<.01||n.setLocationAtPoint(s,t.around)}cameraForBoxAndBearing(t,n,s,c,f){return ul(t,n,s,c,f)}handleJumpToCenterZoom(t,n){t.zoom!==(n.zoom!==void 0?+n.zoom:t.zoom)&&t.setZoom(+n.zoom),n.center!==void 0&&t.setCenter(h.W.convert(n.center))}handleEaseTo(t,n){let s=t.zoom,c=t.padding,f={roll:t.roll,pitch:t.pitch,bearing:t.bearing},y={roll:n.roll===void 0?t.roll:n.roll,pitch:n.pitch===void 0?t.pitch:n.pitch,bearing:n.bearing===void 0?t.bearing:n.bearing},v=n.zoom!==void 0,w=!t.isPaddingEqual(n.padding),S=!1,P=v?+n.zoom:t.zoom,E=t.centerPoint.add(n.offsetAsPoint),C=t.screenPointToLocation(E),{center:z,zoom:B}=t.applyConstrain(h.W.convert(n.center||C),P??s);Gr(t,z);let j=rr(t.worldSize,C),$=rr(t.worldSize,z).sub(j),U=h.ao(B-s);return S=B!==s,{easeFunc:Z=>{if(S&&t.setZoom(h.H.number(s,B,Z)),h.bn(f,y)||Rc({startEulerAngles:f,endEulerAngles:y,tr:t,k:Z,useSlerp:f.roll!=y.roll}),w&&(t.interpolatePadding(c,n.padding,Z),E=t.centerPoint.add(n.offsetAsPoint)),n.around)t.setLocationAtPoint(n.around,n.aroundPoint);else{let Y=h.ao(t.zoom-s),q=B>s?Math.min(2,U):Math.max(.5,U),G=Math.pow(q,1-Z),X=Un(t.worldSize,j.add($.mult(Z*G)).mult(Y));t.setLocationAtPoint(t.renderWorldCopies?X.wrap():X,E)}},isZooming:S,elevationCenter:z}}handleFlyTo(t,n){let s=n.zoom!==void 0,c=t.zoom,f=t.applyConstrain(h.W.convert(n.center||n.locationAtOffset),s?+n.zoom:c),y=f.center,v=f.zoom;Gr(t,y);let w=rr(t.worldSize,n.locationAtOffset),S=rr(t.worldSize,y).sub(w),P=S.mag(),E=h.ao(v-c),C;if(n.minZoom!==void 0){let z=Math.min(+n.minZoom,c,v),B=t.applyConstrain(y,z).zoom;C=h.ao(B-c)}return{easeFunc:(z,B,j,$)=>{t.setZoom(z===1?v:c+h.ar(B));let U=z===1?y:Un(t.worldSize,w.add(S.mult(j)).mult(B));t.setLocationAtPoint(t.renderWorldCopies?U.wrap():U,$)},scaleOfZoom:E,targetCenter:y,scaleOfMinZoom:C,pixelPathLength:P}}}class gt{constructor(t,n,s){this.blendFunction=t,this.blendColor=n,this.mask=s}}gt.Replace=[1,0],gt.disabled=new gt(gt.Replace,h.bo.transparent,[!1,!1,!1,!1]),gt.unblended=new gt(gt.Replace,h.bo.transparent,[!0,!0,!0,!0]),gt.alphaBlended=new gt([1,771],h.bo.transparent,[!0,!0,!0,!0]);let Yn=2305;class tt{constructor(t,n,s){this.enable=t,this.mode=n,this.frontFace=s}}tt.disabled=new tt(!1,1029,Yn),tt.backCCW=new tt(!0,1029,Yn),tt.frontCCW=new tt(!0,1028,Yn);class $e{constructor(t,n,s){this.func=t,this.mask=n,this.range=s}}$e.ReadOnly=!1,$e.ReadWrite=!0,$e.disabled=new $e(519,$e.ReadOnly,[0,1]);let Kn=7680;class rt{constructor(t,n,s,c,f,y){this.test=t,this.ref=n,this.mask=s,this.fail=c,this.depthFail=f,this.pass=y}}function or(d){return typeof WebGL2RenderingContext<"u"&&d instanceof WebGL2RenderingContext}rt.disabled=new rt({func:519,mask:0},0,0,Kn,Kn,Kn);class Jn{get awaitingQuery(){return!!this._readbackQueue}constructor(t){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=t;let n=t.context,s=n.gl;this._texFormat=s.RGBA,this._texType=s.UNSIGNED_BYTE;let c=new h.aU;c.emplaceBack(-1,-1),c.emplaceBack(2,-1),c.emplaceBack(-1,2);let f=new h.aW;f.emplaceBack(0,1,2),this._fullscreenTriangle=new mt(n.createVertexBuffer(c,Ur.members),n.createIndexBuffer(f),h.aV.simpleSegment(0,0,c.length,f.length)),this._resultBuffer=new Uint8Array(4),n.activeTexture.set(s.TEXTURE1);let y=s.createTexture();s.bindTexture(s.TEXTURE_2D,y),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.NEAREST),s.texImage2D(s.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=n.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(y),or(s)&&(this._pbo=s.createBuffer(),s.bindBuffer(s.PIXEL_PACK_BUFFER,this._pbo),s.bufferData(s.PIXEL_PACK_BUFFER,4,s.STREAM_READ),s.bindBuffer(s.PIXEL_PACK_BUFFER,null))}destroy(){let t=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),t.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null}updateErrorLoop(t,n){let s=this._updateCount;return this._readbackQueue?s>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():s>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(t,n),this._updateCount++,this._measuredError}_bindFramebuffer(){let t=this._cachedRenderContext.context,n=t.gl;t.activeTexture.set(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this._fbo.colorAttachment.get()),t.bindFramebuffer.set(this._fbo.framebuffer)}_renderErrorTexture(t,n){let s=this._cachedRenderContext.context,c=s.gl;if(this._bindFramebuffer(),s.viewport.set([0,0,this._texWidth,this._texHeight]),s.clear({color:h.bo.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(s,c.TRIANGLES,$e.disabled,rt.disabled,gt.unblended,tt.disabled,((f,y)=>({u_input:f,u_output_expected:y}))(t,n),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&or(c)){c.bindBuffer(c.PIXEL_PACK_BUFFER,this._pbo),c.readBuffer(c.COLOR_ATTACHMENT0),c.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),c.bindBuffer(c.PIXEL_PACK_BUFFER,null);let f=c.fenceSync(c.SYNC_GPU_COMMANDS_COMPLETE,0);c.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:f}}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null}}_tryReadback(){let t=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&or(t)){let n=t.clientWaitSync(this._readbackQueue.sync,0,0);if(n===t.WAIT_FAILED)return h.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(n===t.TIMEOUT_EXPIRED)return;t.bindBuffer(t.PIXEL_PACK_BUFFER,this._pbo),t.getBufferSubData(t.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),t.bindBuffer(t.PIXEL_PACK_BUFFER,null)}else this._bindFramebuffer(),t.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=Jn._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount}static _parseRGBA8float(t){let n=0;return n+=t[0]/256,n+=t[1]/65536,n+=t[2]/16777216,t[3]<127&&(n=-n),n/128}}let _n=h.a6/128;function Qn(d,t){let n=d.granularity!==void 0?Math.max(d.granularity,1):1,s=n+(d.generateBorders?2:0),c=n+(d.extendToNorthPole||d.generateBorders?1:0)+(d.extendToSouthPole||d.generateBorders?1:0),f=s+1,y=c+1,v=d.generateBorders?-1:0,w=d.generateBorders||d.extendToNorthPole?-1:0,S=n+(d.generateBorders?1:0),P=n+(d.generateBorders||d.extendToSouthPole?1:0),E=f*y,C=s*c*6,z=f*y>65536;if(z&&t==="16bit")throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");let B=z||t==="32bit",j=new Int16Array(2*E),$=0;for(let Y=w;Y<=P;Y++)for(let q=v;q<=S;q++){let G=q/n*h.a6;q===-1&&(G=-_n),q===n+1&&(G=h.a6+_n);let X=Y/n*h.a6;Y===-1&&(X=d.extendToNorthPole?h.bq:-_n),Y===n+1&&(X=d.extendToSouthPole?h.br:h.a6+_n),j[$++]=G,j[$++]=X}let U=B?new Uint32Array(C):new Uint16Array(C),Z=0;for(let Y=0;Y0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return"globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy()}updateGPUdependent(t){this._mercatorProjection.updateGPUdependent(t),this._verticalPerspectiveProjection.updateGPUdependent(t)}getMeshFromTileID(t,n,s,c,f){return this.currentProjection.getMeshFromTileID(t,n,s,c,f)}setProjection(t){this._transitionable.setValue("type",t?.type||"mercator")}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}setErrorQueryLatitudeDegrees(t){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(t),this._mercatorProjection.setErrorQueryLatitudeDegrees(t)}}function Bc(d){let t=Oi(d.worldSize,d.center.lat);return 2*Math.PI*t}function Bt(d,t,n,s,c){let f=1/(1<1e-6){let s=d[0]/n,c=Math.acos(d[2]/n),f=(s>0?c:-c)/Math.PI*180;return new h.W(h.X(f,-180,180),t)}return new h.W(0,t)}function jo(d){return Math.cos(d*Math.PI/180)}function Zt(d,t){let n=jo(d),s=jo(t);return h.ar(s/n)}function yn(d,t){let n=d.rotate(t.bearingInRadians),s=t.zoom+Zt(t.center.lat,0),c=h.bt(1/jo(t.center.lat),1/jo(Math.min(Math.abs(t.center.lat),60)),h.bw(s,7,3,0,1)),f=360/Bc({worldSize:t.worldSize,center:{lat:t.center.lat}});return new h.W(t.center.lng-n.x*f*c,h.al(t.center.lat+n.y*f,-h.am,h.am))}function dl(d){let t=.5*d,n=Math.sin(t),s=Math.cos(t);return Math.log(n+s)-Math.log(s-n)}function Oc(d,t,n,s){let c=d.lat+n*s;if(Math.abs(n)>1){let f=(Math.sign(d.lat+n)!==Math.sign(d.lat)?-Math.abs(d.lat):Math.abs(d.lat))*Math.PI/180,y=Math.abs(d.lat+n)*Math.PI/180,v=dl(f+s*(y-f)),w=dl(f),S=dl(y);return new h.W(d.lng+t*((v-w)/(S-w)),c)}return new h.W(d.lng+t*s,c)}class dh{constructor(t){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=t}swapBuffers(){if(!this._hadAnyChanges)return;let t=this._cachePrevious;this._cachePrevious=this._cache,this._cache=t,this._cache.clear(),this._hadAnyChanges=!1}getTileBoundingVolume(t,n,s,c){let f=`${t.z}_${t.x}_${t.y}_${c?.terrain?"t":""}`,y=this._cache.get(f);if(y)return y;let v=this._cachePrevious.get(f);if(v)return this._cache.set(f,v),v;let w=this._boundingVolumeFactory(t,n,s,c);return this._cache.set(f,w),this._hadAnyChanges=!0,w}}class eo{constructor(t,n,s,c){this.min=s,this.max=c,this.points=t,this.planes=n}static fromAabb(t,n){let s=[];for(let c=0;c<8;c++)s.push([1&~c?t[0]:n[0],(c>>1&1)==1?n[1]:t[1],(c>>2&1)==1?n[2]:t[2]]);return new eo(s,[[-1,0,0,n[0]],[1,0,0,-t[0]],[0,-1,0,n[1]],[0,1,0,-t[1]],[0,0,-1,n[2]],[0,0,1,-t[2]]],t,n)}static fromCenterSizeAngles(t,n,s){let c=h.bA([],s[0],s[1],s[2]),f=h.bB([],[n[0],0,0],c),y=h.bB([],[0,n[1],0],c),v=h.bB([],[0,0,n[2]],c),w=[...t],S=[...t];for(let E=0;E<8;E++)for(let C=0;C<3;C++){let z=t[C]+f[C]*(1&~E?-1:1)+y[C]*((E>>1&1)==1?1:-1)+v[C]*((E>>2&1)==1?1:-1);w[C]=Math.min(w[C],z),S[C]=Math.max(S[C],z)}let P=[];for(let E=0;E<8;E++){let C=[...t];h.a_(C,C,h.aZ([],f,1&~E?-1:1)),h.a_(C,C,h.aZ([],y,(E>>1&1)==1?1:-1)),h.a_(C,C,h.aZ([],v,(E>>2&1)==1?1:-1)),P.push(C)}return new eo(P,[[...f,-h.b3(f,P[0])],[...y,-h.b3(y,P[0])],[...v,-h.b3(v,P[0])],[-f[0],-f[1],-f[2],-h.b3(f,P[7])],[-y[0],-y[1],-y[2],-h.b3(y,P[7])],[-v[0],-v[1],-v[2],-h.b3(v,P[7])]],w,S)}intersectsFrustum(t){let n=!0,s=this.points.length,c=this.planes.length,f=t.planes.length,y=t.points.length;for(let v=0;v=0&&S++}if(S===0)return 0;S=0&&S++}if(S===0)return 0}return 1}intersectsPlane(t){let n=this.points.length,s=0;for(let c=0;c=0&&s++}return s===n?2:s===0?0:1}}function Oa(d,t,n){let s=d-t;return s<0?-s:Math.max(0,s-n)}function pl(d,t,n,s,c){let f=d-n,y;return y=f<0?Math.min(-f,1+f-c):f>c?Math.min(Math.max(f-c,0),1-f):0,Math.max(y,Oa(t,s,c))}class Va{constructor(){this._boundingVolumeCache=new dh(this._computeTileBoundingVolume)}prepareNextFrame(){this._boundingVolumeCache.swapBuffers()}distanceToTile2d(t,n,s,c){let f=1<4}allowWorldCopies(){return!1}getTileBoundingVolume(t,n,s,c){return this._boundingVolumeCache.getTileBoundingVolume(t,n,s,c)}_computeTileBoundingVolume(t,n,s,c){var f,y;let v=0,w=0;if(c?.terrain){let S=new h.a3(t.z,n,t.z,t.x,t.y),P=c.terrain.getMinMaxElevation(S);v=(f=P.minElevation)!==null&&f!==void 0?f:Math.min(0,s),w=(y=P.maxElevation)!==null&&y!==void 0?y:Math.max(0,s)}if(v/=h.bD,w/=h.bD,v+=1,w+=1,t.z<=0)return eo.fromAabb([-w,-w,-w],[w,w,w]);if(t.z===1)return eo.fromAabb([t.x===0?-w:0,t.y===0?0:-w,-w],[t.x===0?0:w,t.y===0?w:0,w]);{let S=[Bt(0,0,t.x,t.y,t.z),Bt(h.a6,0,t.x,t.y,t.z),Bt(h.a6,h.a6,t.x,t.y,t.z),Bt(0,h.a6,t.x,t.y,t.z)],P=[];for(let ge of S)P.push(h.aZ([],ge,w));if(w!==v)for(let ge of S)P.push(h.aZ([],ge,v));t.y===0&&P.push([0,1,0]),t.y===(1<=(1<{let c=h.al(n.lat,-h.am,h.am),f=h.al(+s,this.minZoom+Zt(0,c),this.maxZoom);return{center:new h.W(n.lng,c),zoom:f}},this.applyConstrain=(n,s)=>this._helper.applyConstrain(n,s),this._helper=new fn({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(n,s)=>this.defaultConstrain(n,s)},t),this._coveringTilesDetailsProvider=new Va}clone(){let t=new xn;return t.apply(this,!1),t}apply(t,n,s){this._globeLatitudeErrorCorrectionRadians=s||0,this._helper.apply(t,n)}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){let t=h.bz();return t[0]=this._cameraPosition[0],t[1]=this._cameraPosition[1],t[2]=this._cameraPosition[2],t}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(t){let{overscaledTileID:n,applyGlobeMatrix:s}=t,c=this._helper.getMercatorTileCoordinates(n);return{mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:c,clippingPlane:this._cachedClippingPlane,projectionTransition:s?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(t){let n=this.pitchInRadians,s=this.cameraToCenterDistance/t,c=Math.sin(n)*s,f=Math.cos(n)*s+1,y=1/Math.sqrt(c*c+f*f)*1,v=-c,w=f,S=Math.sqrt(v*v+w*w);v/=S,w/=S;let P=[0,v,w];h.bF(P,P,[0,0,0],-this.bearingInRadians),h.bG(P,P,[0,0,0],-1*this.center.lat*Math.PI/180),h.bH(P,P,[0,0,0],this.center.lng*Math.PI/180);let E=1/h.b5(P);return h.aZ(P,P,E),[...P,-y*E]}isLocationOccluded(t){return!this.isSurfacePointVisible(Ht(t))}transformLightDirection(t){let n=this._helper._center.lng*Math.PI/180,s=this._helper._center.lat*Math.PI/180,c=Math.cos(s),f=[Math.sin(n)*c,Math.sin(s),Math.cos(n)*c],y=[f[2],0,-f[0]],v=[0,0,0];h.b2(v,y,f),h.b1(y,y),h.b1(v,v);let w=[0,0,0];return h.b1(w,[y[0]*t[0]+v[0]*t[1]+f[0]*t[2],y[1]*t[0]+v[1]*t[1]+f[1]*t[2],y[2]*t[0]+v[2]*t[1]+f[2]*t[2]]),w}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(t,n,s){let c=(function(v,w,S){let P=1/(1<f&&(f=C),zv&&(v=z)}let P=[S.lng+y,S.lat+w,S.lng+f,S.lat+v];return this.isSurfacePointOnScreen([0,1,0])&&(P[3]=90,P[0]=-180,P[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(P[1]=-90,P[0]=-180,P[2]=180),new Oe(P)}calculateCenterFromCameraLngLatAlt(t,n,s,c){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,s,c)}setLocationAtPoint(t,n){let s=Ht(this.unprojectScreenPoint(n)),c=Ht(t),f=h.bz();h.bK(f);let y=h.bz();h.bH(y,s,f,-this.center.lng*Math.PI/180),h.bG(y,y,f,this.center.lat*Math.PI/180);let v=c[0]*c[0]+c[2]*c[2],w=y[0]*y[0];if(v=-U&&B<=U,Y=$>=-U&&$<=U,q,G;if(Z&&Y){let se=this.center.lng*Math.PI/180,le=this.center.lat*Math.PI/180;h.bM(E,se)+h.bM(B,le)=0}isSurfacePointOnScreen(t){if(!this.isSurfacePointVisible(t))return!1;let n=h.bE();return h.aE(n,[...t,1],this._globeViewProjMatrixNoCorrection),n[0]/=n[3],n[1]/=n[3],n[2]/=n[3],n[0]>-1&&n[0]<1&&n[1]>-1&&n[1]<1&&n[2]>-1&&n[2]<1}rayPlanetIntersection(t,n){let s=h.b3(t,n),c=h.bz(),f=h.bz();h.aZ(f,n,s),h.b0(c,t,f);let y=1-h.b3(c,c);if(y<0)return null;let v=h.b3(t,t)-1,w=-s+(s<0?1:-1)*Math.sqrt(y),S=v/w,P=w;return{tMin:Math.min(S,P),tMax:Math.max(S,P)}}unprojectScreenPoint(t){let n=this._cameraPosition,s=this.getRayDirectionFromPixel(t),c=this.rayPlanetIntersection(n,s);if(c){let P=h.bz();h.a_(P,n,[s[0]*c.tMin,s[1]*c.tMin,s[2]*c.tMin]);let E=h.bz();return h.b1(E,P),Vo(E)}let f=this._cachedClippingPlane,y=f[0]*s[0]+f[1]*s[1]+f[2]*s[2],v=-h.b9(f,n)/y,w=h.bz();if(v>0)h.a_(w,n,[s[0]*v,s[1]*v,s[2]*v]);else{let P=h.bz();h.a_(P,n,[2*s[0],2*s[1],2*s[2]]);let E=h.b9(this._cachedClippingPlane,P);h.b0(w,P,[this._cachedClippingPlane[0]*E,this._cachedClippingPlane[1]*E,this._cachedClippingPlane[2]*E])}let S=(function(P){let E=h.bz();return E[0]=P[0]*-P[3],E[1]=P[1]*-P[3],E[2]=P[2]*-P[3],{center:E,radius:Math.sqrt(1-P[3]*P[3])}})(f);return Vo((function(P,E,C){let z=h.bz();h.b0(z,C,P);let B=h.bz();return h.bx(B,P,z,E/h.b7(z)),B})(S.center,S.radius,w))}getMatrixForModel(t,n){let s=h.W.convert(t),c=1/h.bD,f=h.bi();return h.bI(f,f,s.lng/180*Math.PI),h.bf(f,f,-s.lat/180*Math.PI),h.Q(f,f,[0,0,1+n/h.bD]),h.bf(f,f,.5*Math.PI),h.S(f,f,[c,c,c]),f}getProjectionDataForCustomLayer(t=!0){let n=this.getProjectionData({overscaledTileID:new h.a3(0,0,0,0,0),applyGlobeMatrix:t});return n.tileMercatorCoords=[0,0,1,1],n}getFastPathSimpleProjectionMatrix(t){}}class to{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(t){this._helper.setMinZoom(t)}setMaxZoom(t){this._helper.setMaxZoom(t)}setMinPitch(t){this._helper.setMinPitch(t)}setMaxPitch(t){this._helper.setMaxPitch(t)}setRenderWorldCopies(t){this._helper.setRenderWorldCopies(t)}setBearing(t){this._helper.setBearing(t)}setPitch(t){this._helper.setPitch(t)}setRoll(t){this._helper.setRoll(t)}setFov(t){this._helper.setFov(t)}setZoom(t){this._helper.setZoom(t)}setCenter(t){this._helper.setCenter(t)}setElevation(t){this._helper.setElevation(t)}setMinElevationForCurrentTile(t){this._helper.setMinElevationForCurrentTile(t)}setPadding(t){this._helper.setPadding(t)}interpolatePadding(t,n,s){this._helper.interpolatePadding(t,n,s)}isPaddingEqual(t){return this._helper.isPaddingEqual(t)}resize(t,n,s=!0){this._helper.resize(t,n,s)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(t){this._helper.setMaxBounds(t)}setConstrainOverride(t){this._helper.setConstrainOverride(t)}overrideNearFarZ(t,n){this._helper.overrideNearFarZ(t,n)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(t){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),t)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(t,n){this._globeness=t,this._globeLatitudeErrorCorrectionRadians=n,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame()}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(t){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(n,s)=>this.currentTransform.defaultConstrain(n,s),this.applyConstrain=(n,s)=>this._helper.applyConstrain(n,s),this._helper=new fn({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(n,s)=>this.defaultConstrain(n,s)},t),this._globeness=1,this._mercatorTransform=new mn,this._verticalPerspectiveTransform=new xn}clone(){let t=new to;return t._globeness=this._globeness,t._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,t.apply(this,!1),t}apply(t,n){this._helper.apply(t,n),this._mercatorTransform.apply(this,!1),this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians)}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(t){let n=this._mercatorTransform.getProjectionData(t),s=this._verticalPerspectiveTransform.getProjectionData(t);return{mainMatrix:this.isGlobeRendering?s.mainMatrix:n.mainMatrix,clippingPlane:s.clippingPlane,tileMercatorCoords:s.tileMercatorCoords,projectionTransition:t.applyGlobeMatrix?this._globeness:0,fallbackMatrix:n.fallbackMatrix}}isLocationOccluded(t){return this.currentTransform.isLocationOccluded(t)}transformLightDirection(t){return this.currentTransform.transformLightDirection(t)}getPixelScale(){return h.bt(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return h.bt(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(t,n,s){let c=this._mercatorTransform.getPitchedTextCorrection(t,n,s),f=this._verticalPerspectiveTransform.getPitchedTextCorrection(t,n,s);return h.bt(c,f,this._globeness)}projectTileCoordinates(t,n,s,c){return this.currentTransform.projectTileCoordinates(t,n,s,c)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ)}calculateFogMatrix(t){return this.currentTransform.calculateFogMatrix(t)}getVisibleUnwrappedCoordinates(t){return this.currentTransform.getVisibleUnwrappedCoordinates(t)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(t){this._mercatorTransform.recalculateZoomAndCenter(t),this._verticalPerspectiveTransform.recalculateZoomAndCenter(t)}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(t,n){return this.currentTransform.lngLatToCameraDepth(t,n)}populateCache(t){this._mercatorTransform.populateCache(t),this._verticalPerspectiveTransform.populateCache(t)}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(t,n,s,c){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,s,c)}setLocationAtPoint(t,n){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(t,n),void this.apply(this._mercatorTransform,!1);this._verticalPerspectiveTransform.setLocationAtPoint(t,n),this.apply(this._verticalPerspectiveTransform,!1)}locationToScreenPoint(t,n){return this.currentTransform.locationToScreenPoint(t,n)}screenPointToMercatorCoordinate(t,n){return this.currentTransform.screenPointToMercatorCoordinate(t,n)}screenPointToLocation(t,n){return this.currentTransform.screenPointToLocation(t,n)}isPointOnMapSurface(t,n){return this.currentTransform.isPointOnMapSurface(t,n)}getRayDirectionFromPixel(t){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(t)}getMatrixForModel(t,n){return this.currentTransform.getMatrixForModel(t,n)}getProjectionDataForCustomLayer(t=!0){let n=this._mercatorTransform.getProjectionDataForCustomLayer(t);if(!this.isGlobeRendering)return n;let s=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(t);return s.fallbackMatrix=n.mainMatrix,s}getFastPathSimpleProjectionMatrix(t){return this.currentTransform.getFastPathSimpleProjectionMatrix(t)}}class Vi{get useGlobeControls(){return!0}handlePanInertia(t,n){let s=yn(t,n);return Math.abs(s.lng-n.center.lng)>180&&(s.lng=n.center.lng+179.5*Math.sign(s.lng-n.center.lng)),{easingCenter:s,easingOffset:new h.P(0,0)}}handleMapControlsRollPitchBearingZoom(t,n){let s=t.around,c=n.screenPointToLocation(s);t.bearingDelta&&n.setBearing(n.bearing+t.bearingDelta),t.pitchDelta&&n.setPitch(n.pitch+t.pitchDelta),t.rollDelta&&n.setRoll(n.roll+t.rollDelta);let f=n.zoom;t.zoomDelta&&n.setZoom(n.zoom+t.zoomDelta);let y=n.zoom-f;if(y===0)return;let v=h.bJ(n.center.lng,c.lng),w=v/(Math.abs(v/180)+1),S=h.bJ(n.center.lat,c.lat),P=n.getRayDirectionFromPixel(s),E=n.cameraPosition,C=-1*h.b3(E,P),z=h.bz();h.a_(z,E,[P[0]*C,P[1]*C,P[2]*C]);let B=h.b5(z)-1,j=Math.exp(.5*-Math.max(B-.3,0)),$=Oi(n.worldSize,n.center.lat)/Math.min(n.width,n.height),U=h.bw($,.9,.5,1,.25),Z=(1-h.ao(-y))*Math.min(j,U),Y=n.center.lat,q=n.zoom,G=new h.W(n.center.lng+w*Z,h.al(n.center.lat+S*Z,-h.am,h.am));n.setLocationAtPoint(c,s);let X=n.center,W=h.bw(Math.abs(v),45,85,0,1),te=h.bw($,.75,.35,0,1),se=Math.pow(Math.max(W,te),.25),le=h.bJ(X.lng,G.lng),ge=h.bJ(X.lat,G.lat);n.setCenter(new h.W(X.lng+le*se,X.lat+ge*se).wrap()),n.setZoom(q+Zt(Y,n.center.lat))}handleMapControlsPan(t,n,s){if(!t.panDelta)return;let c=n.center.lat,f=n.zoom;n.setCenter(yn(t.panDelta,n).wrap()),n.setZoom(f+Zt(c,n.center.lat))}cameraForBoxAndBearing(t,n,s,c,f){let y=ul(t,n,s,c,f),v=n.left/f.width*2-1,w=(f.width-n.right)/f.width*2-1,S=n.top/f.height*-2+1,P=(f.height-n.bottom)/f.height*-2+1,E=h.bJ(s.getWest(),s.getEast())<0,C=E?s.getEast():s.getWest(),z=E?s.getWest():s.getEast(),B=Math.max(s.getNorth(),s.getSouth()),j=Math.min(s.getNorth(),s.getSouth()),$=C+.5*h.bJ(C,z),U=B+.5*h.bJ(B,j),Z=f.clone();Z.setCenter(y.center),Z.setBearing(y.bearing),Z.setPitch(0),Z.setRoll(0),Z.setZoom(y.zoom);let Y=Z.modelViewProjectionMatrix,q=[Ht(s.getNorthWest()),Ht(s.getNorthEast()),Ht(s.getSouthWest()),Ht(s.getSouthEast()),Ht(new h.W(z,U)),Ht(new h.W(C,U)),Ht(new h.W($,B)),Ht(new h.W($,j))],G=Ht(y.center),X=Number.POSITIVE_INFINITY;for(let W of q)v<0&&(X=Vi.getLesserNonNegativeNonNull(X,Vi.solveVectorScale(W,G,Y,"x",v))),w>0&&(X=Vi.getLesserNonNegativeNonNull(X,Vi.solveVectorScale(W,G,Y,"x",w))),S>0&&(X=Vi.getLesserNonNegativeNonNull(X,Vi.solveVectorScale(W,G,Y,"y",S))),P<0&&(X=Vi.getLesserNonNegativeNonNull(X,Vi.solveVectorScale(W,G,Y,"y",P)));if(Number.isFinite(X)&&X!==0)return y.zoom=Math.min(Z.zoom+h.ar(X),t.maxZoom),y;br()}handleJumpToCenterZoom(t,n){let s=t.center.lat,c=t.applyConstrain(n.center?h.W.convert(n.center):t.center,t.zoom).center;t.setCenter(c.wrap());let f=n.zoom!==void 0?+n.zoom:t.zoom+Zt(s,c.lat);t.zoom!==f&&t.setZoom(f)}handleEaseTo(t,n){let s=t.zoom,c=t.center,f=t.padding,y={roll:t.roll,pitch:t.pitch,bearing:t.bearing},v={roll:n.roll===void 0?t.roll:n.roll,pitch:n.pitch===void 0?t.pitch:n.pitch,bearing:n.bearing===void 0?t.bearing:n.bearing},w=n.zoom!==void 0,S=!t.isPaddingEqual(n.padding),P=!1,E=n.center?h.W.convert(n.center):c,C=t.applyConstrain(E,s).center;Gr(t,C);let z=t.clone();z.setCenter(C),z.setZoom(w?+n.zoom:s+Zt(c.lat,E.lat)),z.setBearing(n.bearing);let B=new h.P(h.al(t.centerPoint.x+n.offsetAsPoint.x,0,t.width),h.al(t.centerPoint.y+n.offsetAsPoint.y,0,t.height));z.setLocationAtPoint(C,B);let j=(n.offset&&n.offsetAsPoint.mag())>0?z.center:C,$=w?+n.zoom:s+Zt(c.lat,j.lat),U=s+Zt(c.lat,0),Z=$+Zt(j.lat,0),Y=h.bJ(c.lng,j.lng),q=h.bJ(c.lat,j.lat),G=h.ao(Z-U);return P=$!==s,{easeFunc:X=>{if(h.bn(y,v)||Rc({startEulerAngles:y,endEulerAngles:v,tr:t,k:X,useSlerp:y.roll!=v.roll}),S&&t.interpolatePadding(f,n.padding,X),n.around)h.w("Easing around a point is not supported under globe projection."),t.setLocationAtPoint(n.around,n.aroundPoint);else{let W=Z>U?Math.min(2,G):Math.max(.5,G),te=Math.pow(W,1-X),se=Oc(c,Y,q,X*te);t.setCenter(se.wrap())}if(P){let W=h.H.number(U,Z,X)+Zt(0,t.center.lat);t.setZoom(W)}},isZooming:P,elevationCenter:j}}handleFlyTo(t,n){let s=n.zoom!==void 0,c=t.center,f=t.zoom,y=t.padding,v=!t.isPaddingEqual(n.padding),w=t.applyConstrain(h.W.convert(n.center||n.locationAtOffset),f).center,S=s?+n.zoom:t.zoom+Zt(t.center.lat,w.lat),P=t.clone();P.setCenter(w),P.setZoom(S),P.setBearing(n.bearing);let E=new h.P(h.al(t.centerPoint.x+n.offsetAsPoint.x,0,t.width),h.al(t.centerPoint.y+n.offsetAsPoint.y,0,t.height));P.setLocationAtPoint(w,E);let C=P.center;Gr(t,C);let z=(function(q,G,X){let W=Ht(G),te=Ht(X),se=h.b3(W,te),le=Math.acos(se),ge=Bc(q);return le/(2*Math.PI)*ge})(t,c,C),B=f+Zt(c.lat,0),j=S+Zt(C.lat,0),$=h.ao(j-B),U;if(typeof n.minZoom=="number"){let q=+n.minZoom+Zt(C.lat,0),G=Math.min(q,B,j)+Zt(0,C.lat),X=t.applyConstrain(C,G).zoom+Zt(C.lat,0);U=h.ao(X-B)}let Z=h.bJ(c.lng,C.lng),Y=h.bJ(c.lat,C.lat);return{easeFunc:(q,G,X,W)=>{let te=Oc(c,Z,Y,X);v&&t.interpolatePadding(y,n.padding,q);let se=q===1?C:te;t.setCenter(se.wrap());let le=B+h.ar(G);t.setZoom(q===1?S:le+Zt(0,se.lat))},scaleOfZoom:$,targetCenter:C,scaleOfMinZoom:U,pixelPathLength:z}}static solveVectorScale(t,n,s,c,f){let y=c==="x"?[s[0],s[4],s[8],s[12]]:[s[1],s[5],s[9],s[13]],v=[s[3],s[7],s[11],s[15]],w=t[0]*y[0]+t[1]*y[1]+t[2]*y[2],S=t[0]*v[0]+t[1]*v[1]+t[2]*v[2],P=n[0]*y[0]+n[1]*y[1]+n[2]*y[2],E=n[0]*v[0]+n[1]*v[1]+n[2]*v[2];return P+f*S===w+f*E||v[3]*(w-P)+y[3]*(E-S)+w*E==P*S?null:(P+y[3]-f*E-f*v[3])/(P-w-f*E+f*S)}static getLesserNonNegativeNonNull(t,n){return n!==null&&n>=0&&nh.C(d,t?.filter((n=>n.identifier!=="source.canvas"))),fl=h.bN();class vn extends h.E{constructor(t,n={}){var s,c;super(),this._rtlPluginLoaded=()=>{for(let y in this.tileManagers){let v=this.tileManagers[y].getSource().type;v!=="vector"&&v!=="geojson"||this.tileManagers[y].reload()}},this.map=t,this.dispatcher=new Io(nn(),t._getMapId()),this.dispatcher.registerMessageHandler("GG",((y,v)=>this.getGlyphs(y,v))),this.dispatcher.registerMessageHandler("GI",((y,v)=>this.getImages(y,v))),this.dispatcher.registerMessageHandler("GDA",((y,v)=>this.getDashes(y,v))),this.imageManager=new Mo,this.imageManager.setEventedParent(this);let f=((s=t._container)===null||s===void 0?void 0:s.lang)||typeof document<"u"&&((c=document.documentElement)===null||c===void 0?void 0:c.lang)||void 0;this.glyphManager=new ze(t._requestManager,n.localIdeographFontFamily,f),this.lineAtlas=new Fe(256,512),this.crossTileSymbolIndex=new Ci,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",h.bO()),Vr().on(Co,this._rtlPluginLoaded),this.on("data",(y=>{if(y.dataType!=="source"||y.sourceDataType!=="metadata")return;let v=this.tileManagers[y.sourceId];if(!v)return;let w=v.getSource();if(w?.vectorLayerIds)for(let S in this._layers){let P=this._layers[S];P.source===w.id&&this._validateLayer(P)}}))}_setInitialValues(){var t;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new h.bP,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new(((t=this.crossTileSymbolIndex)===null||t===void 0?void 0:t.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0}setGlobalStateProperty(t,n){var s,c,f;this._checkLoaded();let y=n===null?(f=(c=(s=this.stylesheet.state)===null||s===void 0?void 0:s[t])===null||c===void 0?void 0:c.default)!==null&&f!==void 0?f:null:n;if(h.bQ(y,this._globalState[t]))return this;this._globalState[t]=y,this._applyGlobalStateChanges([t])}getGlobalState(){return this._globalState}setGlobalState(t){this._checkLoaded();let n=[];for(let s in t)!h.bQ(this._globalState[s],t[s].default)&&(n.push(s),this._globalState[s]=t[s].default);this._applyGlobalStateChanges(n)}_applyGlobalStateChanges(t){if(t.length===0)return;let n=new Set,s={};for(let c of t){s[c]=this._globalState[c];for(let f in this._layers){let y=this._layers[f],v=y.getLayoutAffectingGlobalStateRefs(),w=y.getPaintAffectingGlobalStateRefs(),S=y.getVisibilityAffectingGlobalStateRefs();if(v.has(c)&&n.add(y.source),w.has(c))for(let{name:P,value:E}of w.get(c))this._updatePaintProperty(y,P,E);S?.has(c)&&(y.recalculateVisibility(),this._updateLayer(y))}}this.dispatcher.broadcast("UGS",s);for(let c in this.tileManagers)n.has(c)&&(this._reloadSource(c),this._changed=!0)}loadURL(t){return h._(this,arguments,void 0,(function*(n,s={},c){this.fire(new h.n("dataloading",{dataType:"style"})),s.validate=typeof s.validate!="boolean"||s.validate,this._loadStyleRequest=new AbortController;let f=this._loadStyleRequest;try{let y=yield this.map._requestManager.transformRequest(n,"Style");h.bR(f.signal);let v=yield h.k(y,f);this._loadStyleRequest===f&&(this._loadStyleRequest=null),this._load(v.data,s,c)}catch(y){this._loadStyleRequest===f&&(this._loadStyleRequest=null),y&&!f.signal.aborted&&this.fire(new h.l(h.d(y)))}}))}loadJSON(t,n={},s){this.fire(new h.n("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,He.frameAsync(this._frameRequest,this.map._ownerWindow).then((()=>{this._frameRequest=null,n.validate=n.validate!==!1,this._load(t,n,s)})).catch((()=>{}))}loadEmpty(){this.fire(new h.n("dataloading",{dataType:"style"})),this._load(fl,{validate:!1})}_load(t,n,s){var c,f;let y=n.transformStyle?n.transformStyle(s,t):t;if(!n.validate||!Na(this,h.F(y))){y=Object.assign({},y),this._loaded=!0,this.stylesheet=y;for(let v in y.sources)this.addSource(v,y.sources[v],{validate:!1});y.sprite?this._loadSprite(y.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(y.glyphs),this._createLayers(),this.light=new Qe(this.stylesheet.light),this._setProjectionInternal(((c=this.stylesheet.projection)===null||c===void 0?void 0:c.type)||"mercator"),this.sky=new at(this.stylesheet.sky),this.map.setTerrain((f=this.stylesheet.terrain)!==null&&f!==void 0?f:null),this.fire(new h.n("data",{dataType:"style"})),this.fire(new h.n("style.load"))}}_createLayers(){var t,n,s;let c=h.bS(this.stylesheet.layers);this.setGlobalState((t=this.stylesheet.state)!==null&&t!==void 0?t:null),this.dispatcher.broadcast("SL",c),this._order=c.map((f=>f.id)),this._layers={},this._serializedLayers=null;for(let f of c){let y=h.bT(f,this._globalState);if(y.setEventedParent(this,{layer:{id:f.id}}),this._layers[f.id]=y,h.bU(y)&&this.tileManagers[y.source]){let v=(s=(n=f.paint)===null||n===void 0?void 0:n["raster-fade-duration"])!==null&&s!==void 0?s:y.paint.get("raster-fade-duration");this.tileManagers[y.source].setRasterFadeDuration(v)}}}_loadSprite(t,n=!1,s=void 0){this.imageManager.setLoaded(!1);let c=new AbortController,f;this._spriteRequest=c,(function(y,v,w,S){return h._(this,void 0,void 0,(function*(){let P=rn(y),E=w>1?"@2x":"",C={},z={};for(let{id:B,url:j}of P){let $=yield v.transformRequest(On(j,E,".json"),"SpriteJSON");C[B]=h.k($,S);let U=yield v.transformRequest(On(j,E,".png"),"SpriteImage");z[B]=Ri.getImage(U,S)}return yield Promise.all([...Object.values(C),...Object.values(z)]),(function(B,j){return h._(this,void 0,void 0,(function*(){let $={};for(let U in B){$[U]={};let Z=He.getImageCanvasContext((yield j[U]).data),Y=(yield B[U]).data;for(let q in Y){let{width:G,height:X,x:W,y:te,sdf:se,pixelRatio:le,stretchX:ge,stretchY:me,content:Ae,textFitWidth:Te,textFitHeight:pe}=Y[q];$[U][q]={data:null,pixelRatio:le,sdf:se,stretchX:ge,stretchY:me,content:Ae,textFitWidth:Te,textFitHeight:pe,spriteData:{width:G,height:X,x:W,y:te,context:Z}}}}return $}))})(C,z)}))})(t,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then((y=>{if(this._spriteRequest=null,y)for(let v in y){this._spritesImagesIds[v]=[];let w=this._spritesImagesIds[v]?this._spritesImagesIds[v].filter((S=>!(S in y))):[];for(let S of w)this.imageManager.removeImage(S),this._changedImages[S]=!0;for(let S in y[v]){let P=v==="default"?S:`${v}:${S}`;this._spritesImagesIds[v].push(P),P in this.imageManager.images?this.imageManager.updateImage(P,y[v][S],!1):this.imageManager.addImage(P,y[v][S]),n&&(this._changedImages[P]=!0)}}})).catch((y=>{this._spriteRequest=null,f=y,c.signal.aborted||this.fire(new h.l(f))})).finally((()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),n&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new h.n("data",{dataType:"style"})),s&&s(f)}))}_unloadSprite(){for(let t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new h.n("data",{dataType:"style"}))}_validateLayer(t){let n=this.tileManagers[t.source];if(!n)return;let s=t.sourceLayer;if(!s)return;let c=n.getSource();(c.type==="geojson"||c.vectorLayerIds&&!c.vectorLayerIds.includes(s))&&this.fire(new h.l(new Error(`Source layer "${s}" does not exist on source "${c.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let t in this.tileManagers)if(!this.tileManagers[t].loaded())return!1;return this.imageManager.isLoaded()}_serializeByIds(t,n=!1){let s=this._serializedAllLayers();if(!t||t.length===0)return Object.values(n?h.bV(s):s);let c=[];for(let f of t)if(s[f]){let y=n?h.bV(s[f]):s[f];c.push(y)}return c}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};let n=Object.keys(this._layers);for(let s of n){let c=this._layers[s];c.type!=="custom"&&(t[s]=c.serialize())}return t}hasTransitions(){var t,n,s;if(!((t=this.light)===null||t===void 0)&&t.hasTransition()||!((n=this.sky)===null||n===void 0)&&n.hasTransition()||!((s=this.projection)===null||s===void 0)&&s.hasTransition())return!0;for(let c in this.tileManagers)if(this.tileManagers[c].hasTransition())return!0;for(let c in this._layers)if(this._layers[c].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(t){if(!this._loaded)return;let n=this._changed;if(n){let c=Object.keys(this._updatedLayers),f=Object.keys(this._removedLayers);(c.length||f.length)&&this._updateWorkerLayers(c,f);for(let y in this._updatedSources){let v=this._updatedSources[y];if(v==="reload")this._reloadSource(y);else{if(v!=="clear")throw new Error(`Invalid action ${v}`);this._clearSource(y)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let y in this._updatedPaintProps)this._layers[y].updateTransitions(t);this.light.updateTransitions(t),this.sky.updateTransitions(t),this._resetUpdates()}let s={};for(let c in this.tileManagers){let f=this.tileManagers[c];s[c]=f.used,f.used=!1}for(let c of this._order){let f=this._layers[c];f.recalculate(t,this._availableImages),!f.isHidden(t.zoom)&&f.source&&(this.tileManagers[f.source].used=!0)}for(let c in s){let f=this.tileManagers[c];!!s[c]!=!!f.used&&f.fire(new h.n("data",{sourceDataType:"visibility",dataType:"source",sourceId:c}))}this.light.recalculate(t),this.sky.recalculate(t),this.projection.recalculate(t),this.z=t.zoom,n&&this.fire(new h.n("data",{dataType:"style"}))}_updateTilesForChangedImages(){let t=Object.keys(this._changedImages);if(t.length){for(let n in this.tileManagers)this.tileManagers[n].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,n){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(t,!1),removedIds:n})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,n={}){var s;this._checkLoaded();let c=this.serialize();if(t=n.transformStyle?n.transformStyle(c,t):t,((s=n.validate)===null||s===void 0||s)&&Na(this,h.F(t)))return!1;(t=h.bV(t)).layers=h.bS(t.layers);let f=h.bW(c,t),y=this._getOperationsToPerform(f);if(y.unimplemented.length>0)throw new Error(`Unimplemented: ${y.unimplemented.join(", ")}.`);if(y.operations.length===0)return!1;for(let v of y.operations)v();return this.stylesheet=t,this._serializedLayers=null,this.fire(new h.n("style.load",{style:this})),!0}_getOperationsToPerform(t){let n=[],s=[];for(let c of t)switch(c.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":case"setRoll":continue;case"addLayer":n.push((()=>this.addLayer.apply(this,c.args)));break;case"removeLayer":n.push((()=>this.removeLayer.apply(this,c.args)));break;case"setPaintProperty":n.push((()=>this.setPaintProperty.apply(this,c.args)));break;case"setLayoutProperty":n.push((()=>this.setLayoutProperty.apply(this,c.args)));break;case"setFilter":n.push((()=>this.setFilter.apply(this,c.args)));break;case"addSource":n.push((()=>this.addSource.apply(this,c.args)));break;case"removeSource":n.push((()=>this.removeSource.apply(this,c.args)));break;case"setLayerZoomRange":n.push((()=>this.setLayerZoomRange.apply(this,c.args)));break;case"setLight":n.push((()=>this.setLight.apply(this,c.args)));break;case"setGeoJSONSourceData":n.push((()=>this.setGeoJSONSourceData.apply(this,c.args)));break;case"setGlyphs":n.push((()=>this.setGlyphs.apply(this,c.args)));break;case"setSprite":n.push((()=>this.setSprite.apply(this,c.args)));break;case"setTerrain":n.push((()=>this.map.setTerrain.apply(this,c.args)));break;case"setSky":n.push((()=>this.setSky.apply(this,c.args)));break;case"setProjection":this.setProjection.apply(this,c.args);break;case"setGlobalState":n.push((()=>this.setGlobalState.apply(this,c.args)));break;case"setTransition":n.push((()=>{}));break;default:s.push(c.command)}return{operations:n,unimplemented:s}}addImage(t,n){if(this.getImage(t))return this.fire(new h.l(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,n),this._afterImageUpdated(t)}updateImage(t,n){this.imageManager.updateImage(t,n)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new h.l(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new h.n("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,n,s={}){var c;if(this._checkLoaded(),this.tileManagers[t]!==void 0)throw new Error(`Source "${t}" already exists.`);if(!n.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(n).join(", ")}.`);if(["vector","raster","geojson","video","image"].includes(n.type)&&this._validate(h.F.source,`sources.${t}`,n,null,s))return;!((c=this.map)===null||c===void 0)&&c._collectResourceTiming&&(n.collectResourceTiming=!0);let f=this.tileManagers[t]=new ri(t,n,this.dispatcher);f.style=this,f.setEventedParent(this,(()=>({isSourceLoaded:f.loaded(),source:f.serialize(),sourceId:t}))),f.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.tileManagers[t]===void 0)throw new Error(`There is no source with this ID=${t}`);for(let s in this._layers)if(this._layers[s].source===t)return this.fire(new h.l(new Error(`Source "${t}" cannot be removed while layer "${s}" is using it.`)));let n=this.tileManagers[t];delete this.tileManagers[t],delete this._updatedSources[t],n.fire(new h.n("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),n.setEventedParent(null),n.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,n){if(this._checkLoaded(),this.tileManagers[t]===void 0)throw new Error(`There is no source with this ID=${t}`);let s=this.tileManagers[t].getSource();if(s.type!=="geojson")throw new Error(`geojsonSource.type is ${s.type}, which is !== 'geojson`);s.setData(n),this._changed=!0}getSource(t){var n;return(n=this.tileManagers[t])===null||n===void 0?void 0:n.getSource()}addLayer(t,n,s={}){this._checkLoaded();let c=t.id;if(this.getLayer(c))return void this.fire(new h.l(new Error(`Layer "${c}" already exists on this map.`)));let f;if(t.type==="custom"){if(Na(this,h.bX(t)))return;f=h.bT(t,this._globalState)}else{if("source"in t&&typeof t.source=="object"&&(this.addSource(c,t.source),t=h.bV(t),t=h.e(t,{source:c})),this._validate(h.F.layer,`layers.${c}`,t,{arrayIndex:-1},s))return;f=h.bT(t,this._globalState),this._validateLayer(f),f.setEventedParent(this,{layer:{id:c}})}let y=n?this._order.indexOf(n):this._order.length;if(n&&y===-1)this.fire(new h.l(new Error(`Cannot add layer "${c}" before non-existing layer "${n}".`)));else{if(this._order.splice(y,0,c),this._layerOrderChanged=!0,this._layers[c]=f,this._removedLayers[c]&&f.source&&f.type!=="custom"){let v=this._removedLayers[c];delete this._removedLayers[c],v.type!==f.type?this._updatedSources[f.source]="clear":(this._updatedSources[f.source]="reload",this.tileManagers[f.source].pause())}this._updateLayer(f),f.onAdd&&f.onAdd(this.map)}}moveLayer(t,n){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new h.l(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===n)return;let s=this._order.indexOf(t);this._order.splice(s,1);let c=n?this._order.indexOf(n):this._order.length;n&&c===-1?this.fire(new h.l(new Error(`Cannot move layer "${t}" before non-existing layer "${n}".`))):(this._order.splice(c,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();let n=this._layers[t];if(!n)return void this.fire(new h.l(new Error(`Cannot remove non-existing layer "${t}".`)));n.setEventedParent(null);let s=this._order.indexOf(t);this._order.splice(s,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=n,delete this._layers[t],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],n.onRemove&&n.onRemove(this.map)}getLayer(t){return this._layers[t]}getLayersOrder(){return[...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,n,s){this._checkLoaded();let c=this.getLayer(t);c?c.minzoom===n&&c.maxzoom===s||(n!=null&&(c.minzoom=n),s!=null&&(c.maxzoom=s),this._updateLayer(c)):this.fire(new h.l(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,n,s={}){this._checkLoaded();let c=this.getLayer(t);if(c){if(!h.bQ(c.filter,n))return n==null?(c.setFilter(void 0),void this._updateLayer(c)):void(this._validate(h.F.filter,`layers.${c.id}.filter`,n,null,s)||(c.setFilter(h.bV(n)),this._updateLayer(c)))}else this.fire(new h.l(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return h.bV(this.getLayer(t).filter)}setLayoutProperty(t,n,s,c={}){this._checkLoaded();let f=this.getLayer(t);f?h.bQ(f.getLayoutProperty(n),s)||(f.setLayoutProperty(n,s,c),this._updateLayer(f)):this.fire(new h.l(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,n){let s=this.getLayer(t);if(s)return s.getLayoutProperty(n);this.fire(new h.l(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,n,s,c={}){this._checkLoaded();let f=this.getLayer(t);f?h.bQ(f.getPaintProperty(n),s)||this._updatePaintProperty(f,n,s,c):this.fire(new h.l(new Error(`Cannot style non-existing layer "${t}".`)))}_updatePaintProperty(t,n,s,c={}){t.setPaintProperty(n,s,c)&&this._updateLayer(t),h.bU(t)&&n==="raster-fade-duration"&&this.tileManagers[t.source].setRasterFadeDuration(s),this._changed=!0,this._updatedPaintProps[t.id]=!0,this._serializedLayers=null}getPaintProperty(t,n){return this.getLayer(t).getPaintProperty(n)}setFeatureState(t,n){this._checkLoaded();let s=t.source,c=t.sourceLayer,f=this.tileManagers[s];if(f===void 0)return void this.fire(new h.l(new Error(`The source '${s}' does not exist in the map's style.`)));let y=f.getSource().type;y==="geojson"&&c?this.fire(new h.l(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):y!=="vector"||c?(t.id===void 0&&this.fire(new h.l(new Error("The feature id parameter must be provided."))),f.setFeatureState(c,t.id,n)):this.fire(new h.l(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,n){this._checkLoaded();let s=t.source,c=this.tileManagers[s];if(c===void 0)return void this.fire(new h.l(new Error(`The source '${s}' does not exist in the map's style.`)));let f=c.getSource().type,y=f==="vector"?t.sourceLayer:void 0;f!=="vector"||y?n&&typeof t.id!="string"&&typeof t.id!="number"?this.fire(new h.l(new Error("A feature id is required to remove its specific state property."))):c.removeFeatureState(y,t.id,n):this.fire(new h.l(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();let n=t.source,s=t.sourceLayer,c=this.tileManagers[n];if(c!==void 0)return c.getSource().type!=="vector"||s?(t.id===void 0&&this.fire(new h.l(new Error("The feature id parameter must be provided."))),c.getFeatureState(s,t.id)):void this.fire(new h.l(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new h.l(new Error(`The source '${n}' does not exist in the map's style.`)))}getTransition(){var t;return h.e({duration:300,delay:0},(t=this.stylesheet)===null||t===void 0?void 0:t.transition)}serialize(){if(!this._loaded)return;let t=h.bY(this.tileManagers,(f=>f.serialize())),n=this._serializeByIds(this._order,!0),s=this.map.getTerrain()||void 0,c=this.stylesheet;return h.bZ({version:c.version,name:c.name,metadata:c.metadata,light:c.light,sky:c.sky,center:c.center,zoom:c.zoom,bearing:c.bearing,pitch:c.pitch,sprite:c.sprite,glyphs:c.glyphs,transition:c.transition,projection:c.projection,sources:t,layers:n,terrain:s},(f=>f!==void 0))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.tileManagers[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.tileManagers[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){let n=y=>this._layers[y].type==="fill-extrusion",s={},c=[];for(let y=this._order.length-1;y>=0;y--){let v=this._order[y];if(n(v)){s[v]=y;for(let w of t){let S=w[v];if(S)for(let P of S)c.push(P)}}}c.sort(((y,v)=>v.intersectionZ-y.intersectionZ));let f=[];for(let y=this._order.length-1;y>=0;y--){let v=this._order[y];if(n(v))for(let w=c.length-1;w>=0;w--){let S=c[w].feature;if(s[S.layer.id]this.map.terrain.getElevation(P,E,C):void 0));return this.placement&&f.push((function(S,P,E,C,z,B,j){let $={},U=B.queryRenderedSymbols(C),Z=[];for(let Y of Object.keys(U).map(Number))Z.push(j[Y]);Z.sort(Eo);for(let Y of Z){let q=Y.featureIndex.lookupSymbolFeatures(U[Y.bucketInstanceId],P,Y.bucketIndex,Y.sourceLayerIndex,{filterSpec:z.filter,globalState:z.globalState},z.layers,z.availableImages,S);for(let G in q){$[G]||($[G]=[]);let X=q[G];X.sort(((W,te)=>{let se=Y.featureSortOrder;if(se){let le=se.indexOf(W.featureIndex);return se.indexOf(te.featureIndex)-le}return te.featureIndex-W.featureIndex}));for(let W of X)$[G].push(W)}}return(function(Y,q,G){for(let X in Y)for(let W of Y[X])Fr(W,G[q[X].source]);return Y})($,S,E)})(this._layers,y,this.tileManagers,t,w,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(f)}querySourceFeatures(t,n){n?.filter&&this._validate(h.F.filter,"querySourceFeatures.filter",n.filter,null,n);let s=this.tileManagers[t];return s?(function(c,f){let y=c.getRenderableIds().map((S=>c.getTileByID(S))),v=[],w={};for(let S of y){let P=S.tileID.canonical.key;w[P]||(w[P]=!0,S.querySourceFeatures(v,f))}return v})(s,n?Object.assign(Object.assign({},n),{globalState:this._globalState}):{globalState:this._globalState}):[]}getLight(){return this.light.getLight()}setLight(t,n={}){this._checkLoaded();let s=this.light.getLight(),c=!1;for(let y in t)if(!h.bQ(t[y],s[y])){c=!0;break}if(!c)return;let f={now:Xe(),transition:h.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,n),this.light.updateTransitions(f)}getProjection(){var t;return(t=this.stylesheet)===null||t===void 0?void 0:t.projection}setProjection(t){this._checkLoaded();let n=t??{type:"mercator"};if(this.stylesheet.projection=t,this.projection){if(this.projection.name===n.type)return;this.projection.destroy(),delete this.projection}this._setProjectionInternal(n.type)}getSky(){var t;return(t=this.stylesheet)===null||t===void 0?void 0:t.sky}setSky(t,n={}){this._checkLoaded();let s=this.getSky(),c=!1;if(!t&&!s)return;if(t&&!s)c=!0;else if(!t&&s)c=!0;else for(let y in t)if(!h.bQ(t[y],s[y])){c=!0;break}if(!c)return;let f={now:Xe(),transition:h.e({duration:300,delay:0},this.stylesheet.transition)};this.stylesheet.sky=t,this.sky.setSky(t,n),this.sky.updateTransitions(f)}_setProjectionInternal(t){let n=(function(s,c){let f={constrainOverride:c};if(Array.isArray(s)){let y=new Fc({type:s});return{projection:y,transform:new to(f),cameraHelper:new ar(y)}}switch(s){case"mercator":return{projection:new yi,transform:new mn(f),cameraHelper:new gn};case"globe":{let y=new Fc({type:["interpolate",["linear"],["zoom"],11,"vertical-perspective",12,"mercator"]});return{projection:y,transform:new to(f),cameraHelper:new ar(y)}}case"vertical-perspective":return{projection:new Ba,transform:new xn(f),cameraHelper:new Vi};default:return h.w(`Unknown projection name: ${s}. Falling back to mercator projection.`),{projection:new yi,transform:new mn(f),cameraHelper:new gn}}})(t,this.map.transformConstrain);this.projection=n.projection,this.map.migrateProjection(n.transform,n.cameraHelper);for(let s in this.tileManagers)this.tileManagers[s].reload()}_validate(t,n,s,c,f={}){return f?.validate!==!1&&Na(this,t.call(h.F,h.e({key:n,style:this.serialize(),value:s,styleSpec:h.x},c)))}_remove(t=!0){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null),Vr().off(Co,this._rtlPluginLoaded);for(let n in this._layers)this._layers[n].setEventedParent(null);for(let n in this.tileManagers){let s=this.tileManagers[n];s.setEventedParent(null),s.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),t&&this.dispatcher.broadcast("RM",void 0),this.dispatcher.remove(t)}_clearSource(t){this.tileManagers[t].clearTiles()}_reloadSource(t){this.tileManagers[t].resume(),this.tileManagers[t].reload()}_updateSources(t){for(let n in this.tileManagers)this.tileManagers[n].update(t,this.map.terrain)}_generateCollisionBoxes(){for(let t in this.tileManagers)this._reloadSource(t)}_updatePlacement(t,n,s,c,f=!1){let y=!1,v=!1,w={};for(let S of this._order){let P=this._layers[S];if(P.type!=="symbol")continue;if(!w[P.source]){let C=this.tileManagers[P.source];w[P.source]=C.getRenderableIds(!0).map((z=>C.getTileByID(z))).sort(((z,B)=>B.tileID.overscaledZ-z.tileID.overscaledZ||(z.tileID.isLessThan(B.tileID)?-1:1)))}let E=this.crossTileSymbolIndex.addLayer(P,w[P.source],t.center.lng);y||(y=E)}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),f||(f=this._layerOrderChanged||s===0),(f||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(Xe(),t.zoom))&&(this.pauseablePlacement=new Hn(t,this.map.terrain,this._order,f,n,s,c,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,w),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(Xe()),v=!0),y&&this.pauseablePlacement.placement.setStale()),v||y)for(let S of this._order){let P=this._layers[S];P.type==="symbol"&&this.placement.updateLayerOpacities(P,w[P.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(Xe())}_releaseSymbolFadeTiles(){for(let t in this.tileManagers)this.tileManagers[t].releaseSymbolFadeTiles()}getImages(t,n){return h._(this,void 0,void 0,(function*(){let s=yield this.imageManager.getImages(n.icons);this._updateTilesForChangedImages();let c=this.tileManagers[n.source];return c&&c.setDependencies(n.tileID.key,n.type,n.icons),s}))}getGlyphs(t,n){return h._(this,void 0,void 0,(function*(){let s=yield this.glyphManager.getGlyphs(n.stacks),c=this.tileManagers[n.source];return c&&c.setDependencies(n.tileID.key,n.type,[""]),s}))}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,n={}){this._checkLoaded(),t&&this._validate(h.F.glyphs,"glyphs",t,null,n)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}getDashes(t,n){return h._(this,void 0,void 0,(function*(){let s={};for(let[c,f]of Object.entries(n.dashes))s[c]=this.lineAtlas.getDash(f.dasharray,f.round);return s}))}addSprite(t,n,s={},c){this._checkLoaded();let f=[{id:t,url:n}],y=[...rn(this.stylesheet.sprite),...f];this._validate(h.F.sprite,"sprite",y,null,s)||(this.stylesheet.sprite=y,this._loadSprite(f,!0,c))}removeSprite(t){this._checkLoaded();let n=rn(this.stylesheet.sprite);if(n.find((s=>s.id===t))){if(this._spritesImagesIds[t])for(let s of this._spritesImagesIds[t])this.imageManager.removeImage(s),this._changedImages[s]=!0;n.splice(n.findIndex((s=>s.id===t)),1),this.stylesheet.sprite=n.length>0?n:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new h.n("data",{dataType:"style"}))}else this.fire(new h.l(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return rn(this.stylesheet.sprite)}setSprite(t,n={},s){this._checkLoaded(),t&&this._validate(h.F.sprite,"sprite",t,null,n)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,s):(this._unloadSprite(),s&&s(null)))}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(let t in this.tileManagers){let n=this.tileManagers[t];n.setEventedParent(null),n.onRemove(this.map)}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(let t in this._layers){let n=this._layers[t];n.setEventedParent(null),n.onRemove&&n.onRemove(this.map)}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={}}}var No=h.aS([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class ph{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(t,n,s,c,f,y,v,w,S){this.context=t;let P=this.boundPaintVertexBuffers.length!==c.length;for(let E=0;!P&&E({u_texture:0,u_ele_delta:d,u_fog_matrix:t,u_fog_color:n?n.properties.get("fog-color"):h.bo.white,u_fog_ground_blend:n?n.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:c?0:n?n.calculateFogBlendOpacity(s):0,u_horizon_color:n?n.properties.get("horizon-color"):h.bo.white,u_horizon_fog_blend:n?n.properties.get("horizon-fog-blend"):1,u_is_globe_mode:c?1:0}),fh={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function wr(d){let t=[];for(let n of d){if(n===null)continue;let s=n.split(" ");t.push(s.pop())}return t}class mh{constructor(t,n,s,c,f,y,v,w,S=[]){let P=t.gl;this.program=P.createProgram();let E=wr(n.staticAttributes),C=s?s.getBinderAttributes():[],z=E.concat(C),B=wt.prelude.staticUniforms?wr(wt.prelude.staticUniforms):[],j=v.staticUniforms?wr(v.staticUniforms):[],$=n.staticUniforms?wr(n.staticUniforms):[],U=s?s.getBinderUniforms():[],Z=B.concat(j).concat($).concat(U),Y=[];for(let le of Z)Y.includes(le)||Y.push(le);let q=s?s.defines():[];or(P)&&q.unshift("#version 300 es"),f&&q.push("#define OVERDRAW_INSPECTOR;"),y&&q.push("#define TERRAIN3D;"),w&&q.push(w),S&&q.push(...S);let G=q.concat(wt.prelude.fragmentSource,v.fragmentSource,n.fragmentSource).join(` +`),X=q.concat(wt.prelude.vertexSource,v.vertexSource,n.vertexSource).join(` +`);or(P)||(G=(function(le){return le.replace(/\bin\s/g,"varying ").replace("out highp vec4 fragColor;","").replace(/fragColor/g,"gl_FragColor").replace(/texture\(/g,"texture2D(")})(G),X=(function(le){return le.replace(/\bin\s/g,"attribute ").replace(/\bout\s/g,"varying ").replace(/texture\(/g,"texture2D(")})(X));let W=P.createShader(P.FRAGMENT_SHADER);if(P.isContextLost())return void(this.failedToCreate=!0);if(P.shaderSource(W,G),P.compileShader(W),!P.getShaderParameter(W,P.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${P.getShaderInfoLog(W)}`);P.attachShader(this.program,W);let te=P.createShader(P.VERTEX_SHADER);if(P.isContextLost())return void(this.failedToCreate=!0);if(P.shaderSource(te,X),P.compileShader(te),!P.getShaderParameter(te,P.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${P.getShaderInfoLog(te)}`);P.attachShader(this.program,te),this.attributes={};let se={};this.numAttributes=z.length;for(let le=0;le({u_depth:new h.b_(le,ge.u_depth),u_terrain:new h.b_(le,ge.u_terrain),u_terrain_dim:new h.bp(le,ge.u_terrain_dim),u_terrain_matrix:new h.c0(le,ge.u_terrain_matrix),u_terrain_unpack:new h.c1(le,ge.u_terrain_unpack),u_terrain_exaggeration:new h.bp(le,ge.u_terrain_exaggeration)}))(t,se),this.projectionUniforms=((le,ge)=>({u_projection_matrix:new h.c0(le,ge.u_projection_matrix),u_projection_tile_mercator_coords:new h.c1(le,ge.u_projection_tile_mercator_coords),u_projection_clipping_plane:new h.c1(le,ge.u_projection_clipping_plane),u_projection_transition:new h.bp(le,ge.u_projection_transition),u_projection_fallback_matrix:new h.c0(le,ge.u_projection_fallback_matrix)}))(t,se),this.binderUniforms=s?s.getUniforms(t,se):[]}draw(t,n,s,c,f,y,v,w,S,P,E,C,z,B,j,$,U,Z,Y){var q;let G=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(s),t.setStencilMode(c),t.setColorMode(f),t.setCullFace(y),w){t.activeTexture.set(G.TEXTURE2),G.bindTexture(G.TEXTURE_2D,w.depthTexture),t.activeTexture.set(G.TEXTURE3),G.bindTexture(G.TEXTURE_2D,w.texture);for(let W in this.terrainUniforms)this.terrainUniforms[W].set(w[W])}if(S)for(let W in S)this.projectionUniforms[fh[W]].set(S[W]);if(v)for(let W in this.fixedUniforms)this.fixedUniforms[W].set(v[W]);$&&$.setUniforms(t,this.binderUniforms,B,{zoom:j});let X=0;switch(n){case G.LINES:X=2;break;case G.TRIANGLES:X=3;break;case G.LINE_STRIP:X=1}for(let W of z.get())W.vaos||(W.vaos={}),(q=W.vaos)[P]||(q[P]=new ph),W.vaos[P].bind(t,this,E,$?$.getPaintVertexBuffers():[],C,W.vertexOffset,U,Z,Y),G.drawElements(n,W.primitiveLength*X,G.UNSIGNED_SHORT,W.primitiveOffset*X*2)}}function ml(d,t,n){let s=1/h.aK(n,1,t.transform.tileZoom),c=Math.pow(2,n.tileID.overscaledZ),f=n.tileSize*Math.pow(2,t.transform.tileZoom)/c,y=f*(n.tileID.canonical.x+n.tileID.wrap*c),v=f*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[s,d.fromScale,d.toScale],u_fade:d.t,u_pixel_coord_upper:[y>>16,v>>16],u_pixel_coord_lower:[65535&y,65535&v]}}let Vc=(d,t,n,s)=>{let c=d.style.light,f=c.properties.get("position"),y=[f.x,f.y,f.z],v=h.c4();c.properties.get("anchor")==="viewport"&&h.c5(v,d.transform.bearingInRadians),h.c6(y,y,v);let w=d.transform.transformLightDirection(y),S=c.properties.get("color");return{u_lightpos:y,u_lightpos_globe:w,u_lightintensity:c.properties.get("intensity"),u_lightcolor:[S.r,S.g,S.b],u_vertical_gradient:+t,u_opacity:n,u_fill_translate:s}},jc=(d,t,n,s,c,f,y)=>h.e(Vc(d,t,n,s),ml(f,d,y),{u_height_factor:-Math.pow(2,c.overscaledZ)/y.tileSize/8}),Ga=(d,t,n,s)=>h.e(ml(t,d,n),{u_fill_translate:s}),Nc=(d,t)=>({u_world:d,u_fill_translate:t}),Uc=(d,t,n,s,c)=>h.e(Ga(d,t,n,c),{u_world:s}),Gc=(d,t,n,s,c)=>{let f=d.transform,y,v,w=0;if(n.paint.get("circle-pitch-alignment")==="map"){let S=h.aK(t,1,f.zoom);y=!0,v=[S,S],w=S/(h.a6*Math.pow(2,t.tileID.overscaledZ))*2*Math.PI*c}else y=!1,v=f.pixelsToGLUnits;return{u_camera_to_center_distance:f.cameraToCenterDistance,u_scale_with_map:+(n.paint.get("circle-pitch-scale")==="map"),u_pitch_with_map:+y,u_device_pixel_ratio:d.pixelRatio,u_extrude_scale:v,u_globe_extrude_scale:w,u_translate:s}},$c=d=>({u_pixel_extrude_scale:[1/d.width,1/d.height]}),bn=d=>({u_viewport_size:[d.width,d.height]}),gl=(d,t=1)=>({u_color:d,u_overlay:0,u_overlay_scale:t}),_l=(d,t,n,s)=>{let c=h.aK(d,1,t)/(h.a6*Math.pow(2,d.tileID.overscaledZ))*2*Math.PI*s;return{u_extrude_scale:h.aK(d,1,t),u_intensity:n,u_globe_extrude_scale:c}},io=(d,t,n,s)=>{let c=h.O();h.c7(c,0,d.width,d.height,0,0,1);let f=d.context.gl;return{u_matrix:c,u_world:[f.drawingBufferWidth,f.drawingBufferHeight],u_image:n,u_color_ramp:s,u_opacity:t.paint.get("heatmap-opacity")}},gh=(d,t,n)=>{let s=n.paint.get("hillshade-accent-color"),c;switch(n.paint.get("hillshade-method")){case"basic":c=4;break;case"combined":c=1;break;case"igor":c=2;break;case"multidirectional":c=3;break;default:c=0}let f=n.getIlluminationProperties();for(let y=0;y{let n=t.stride,s=h.O();return h.c7(s,0,h.a6,-h.a6,0,0,1),h.Q(s,s,[0,-h.a6,0]),{u_matrix:s,u_image:1,u_dimension:[n,n],u_zoom:d.overscaledZ,u_unpack:t.getUnpackVector()}};function _h(d,t){let n=Math.pow(2,t.canonical.z),s=t.canonical.y;return[new h.a7(0,s/n).toLngLat().lat,new h.a7(0,(s+1)/n).toLngLat().lat]}let yh=(d,t,n=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:n,u_opacity:d.paint.get("color-relief-opacity")}),Uo=(d,t,n,s)=>{let c=d.transform;return{u_translation:pr(d,t,n),u_ratio:s/h.aK(t,1,c.zoom),u_device_pixel_ratio:d.pixelRatio,u_units_to_pixels:[1/c.pixelsToGLUnits[0],1/c.pixelsToGLUnits[1]]}},Zc=(d,t,n,s,c)=>h.e(Uo(d,t,n,s),{u_image:0,u_image_height:c}),qc=(d,t,n,s,c)=>{let f=d.transform,y=ro(t,f);return{u_translation:pr(d,t,n),u_texsize:t.imageAtlasTexture.size,u_ratio:s/h.aK(t,1,f.zoom),u_device_pixel_ratio:d.pixelRatio,u_image:0,u_scale:[y,c.fromScale,c.toScale],u_fade:c.t,u_units_to_pixels:[1/f.pixelsToGLUnits[0],1/f.pixelsToGLUnits[1]]}},yl=(d,t,n,s,c)=>{let f=ro(t,d.transform);return h.e(Uo(d,t,n,s),{u_tileratio:f,u_crossfade_from:c.fromScale,u_crossfade_to:c.toScale,u_image:0,u_mix:c.t,u_lineatlas_width:d.lineAtlas.width,u_lineatlas_height:d.lineAtlas.height})},Wc=(d,t,n,s,c,f)=>{let y=ro(t,d.transform);return h.e(Uo(d,t,n,s),{u_image:0,u_image_height:f,u_tileratio:y,u_crossfade_from:c.fromScale,u_crossfade_to:c.toScale,u_image_dash:1,u_mix:c.t,u_lineatlas_width:d.lineAtlas.width,u_lineatlas_height:d.lineAtlas.height})};function ro(d,t){return 1/h.aK(d,1,t.tileZoom)}function pr(d,t,n){return h.aL(d.transform,t,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}let xl=(d,t,n,s,c)=>{return{u_tl_parent:d,u_scale_parent:t,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*s.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:s.paint.get("raster-brightness-min"),u_brightness_high:s.paint.get("raster-brightness-max"),u_saturation_factor:(y=s.paint.get("raster-saturation"),y>0?1-1/(1.001-y):-y),u_contrast_factor:(f=s.paint.get("raster-contrast"),f>0?1/(1-f):1+f),u_spin_weights:vl(s.paint.get("raster-hue-rotate")),u_coords_top:[c[0].x,c[0].y,c[1].x,c[1].y],u_coords_bottom:[c[3].x,c[3].y,c[2].x,c[2].y]};var f,y};function vl(d){d*=Math.PI/180;let t=Math.sin(d),n=Math.cos(d);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}let Za=(d,t,n,s,c,f,y,v,w,S,P,E,C)=>{let z=y.transform;return{u_is_size_zoom_constant:+(d==="constant"||d==="source"),u_is_size_feature_constant:+(d==="constant"||d==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:z.cameraToCenterDistance,u_pitch:z.pitch/360*2*Math.PI,u_rotate_symbol:+n,u_aspect_ratio:z.width/z.height,u_fade_change:y.options.fadeDuration?y.symbolFadeChange:1,u_label_plane_matrix:v,u_coord_matrix:w,u_is_text:+P,u_pitch_with_map:+s,u_is_along_line:c,u_is_variable_anchor:f,u_texsize:E,u_texture:0,u_translation:S,u_pitched_scale:C}},bl=(d,t,n,s,c,f,y,v,w,S,P,E,C,z)=>{let B=y.transform;return h.e(Za(d,t,n,s,c,f,y,v,w,S,P,E,z),{u_gamma_scale:s?Math.cos(B.pitch*Math.PI/180)*B.cameraToCenterDistance:1,u_device_pixel_ratio:y.pixelRatio,u_is_halo:C?1:0,u_is_plain:1})},wl=(d,t,n,s,c,f,y,v,w,S,P,E,C)=>h.e(bl(d,t,n,s,c,f,y,v,w,S,!0,P,!0,C),{u_texsize_icon:E,u_texture_icon:1}),wn=(d,t)=>({u_opacity:d,u_color:t}),Tl=(d,t,n,s,c)=>h.e((function(f,y,v,w){let S=v.imageManager.getPattern(f.from.toString()),P=v.imageManager.getPattern(f.to.toString()),{width:E,height:C}=v.imageManager.getPixelSize(),z=Math.pow(2,w.tileID.overscaledZ),B=w.tileSize*Math.pow(2,v.transform.tileZoom)/z,j=B*(w.tileID.canonical.x+w.tileID.wrap*z),$=B*w.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:S.tl,u_pattern_br_a:S.br,u_pattern_tl_b:P.tl,u_pattern_br_b:P.br,u_texsize:[E,C],u_mix:y.t,u_pattern_size_a:S.displaySize,u_pattern_size_b:P.displaySize,u_scale_a:y.fromScale,u_scale_b:y.toScale,u_tile_units_to_pixels:1/h.aK(w,1,v.transform.tileZoom),u_pixel_coord_upper:[j>>16,$>>16],u_pixel_coord_lower:[65535&j,65535&$]}})(n,c,t,s),{u_opacity:d}),Hc=(d,t)=>{},xh={fillExtrusion:(d,t)=>({u_lightpos:new h.c2(d,t.u_lightpos),u_lightpos_globe:new h.c2(d,t.u_lightpos_globe),u_lightintensity:new h.bp(d,t.u_lightintensity),u_lightcolor:new h.c2(d,t.u_lightcolor),u_vertical_gradient:new h.bp(d,t.u_vertical_gradient),u_opacity:new h.bp(d,t.u_opacity),u_fill_translate:new h.c3(d,t.u_fill_translate)}),fillExtrusionPattern:(d,t)=>({u_lightpos:new h.c2(d,t.u_lightpos),u_lightpos_globe:new h.c2(d,t.u_lightpos_globe),u_lightintensity:new h.bp(d,t.u_lightintensity),u_lightcolor:new h.c2(d,t.u_lightcolor),u_vertical_gradient:new h.bp(d,t.u_vertical_gradient),u_height_factor:new h.bp(d,t.u_height_factor),u_opacity:new h.bp(d,t.u_opacity),u_fill_translate:new h.c3(d,t.u_fill_translate),u_image:new h.b_(d,t.u_image),u_texsize:new h.c3(d,t.u_texsize),u_pixel_coord_upper:new h.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new h.c3(d,t.u_pixel_coord_lower),u_scale:new h.c2(d,t.u_scale),u_fade:new h.bp(d,t.u_fade)}),fill:(d,t)=>({u_fill_translate:new h.c3(d,t.u_fill_translate)}),fillPattern:(d,t)=>({u_image:new h.b_(d,t.u_image),u_texsize:new h.c3(d,t.u_texsize),u_pixel_coord_upper:new h.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new h.c3(d,t.u_pixel_coord_lower),u_scale:new h.c2(d,t.u_scale),u_fade:new h.bp(d,t.u_fade),u_fill_translate:new h.c3(d,t.u_fill_translate)}),fillOutline:(d,t)=>({u_world:new h.c3(d,t.u_world),u_fill_translate:new h.c3(d,t.u_fill_translate)}),fillOutlinePattern:(d,t)=>({u_world:new h.c3(d,t.u_world),u_image:new h.b_(d,t.u_image),u_texsize:new h.c3(d,t.u_texsize),u_pixel_coord_upper:new h.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new h.c3(d,t.u_pixel_coord_lower),u_scale:new h.c2(d,t.u_scale),u_fade:new h.bp(d,t.u_fade),u_fill_translate:new h.c3(d,t.u_fill_translate)}),circle:(d,t)=>({u_camera_to_center_distance:new h.bp(d,t.u_camera_to_center_distance),u_scale_with_map:new h.b_(d,t.u_scale_with_map),u_pitch_with_map:new h.b_(d,t.u_pitch_with_map),u_extrude_scale:new h.c3(d,t.u_extrude_scale),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_globe_extrude_scale:new h.bp(d,t.u_globe_extrude_scale),u_translate:new h.c3(d,t.u_translate)}),collisionBox:(d,t)=>({u_pixel_extrude_scale:new h.c3(d,t.u_pixel_extrude_scale)}),collisionCircle:(d,t)=>({u_viewport_size:new h.c3(d,t.u_viewport_size)}),debug:(d,t)=>({u_color:new h.b$(d,t.u_color),u_overlay:new h.b_(d,t.u_overlay),u_overlay_scale:new h.bp(d,t.u_overlay_scale)}),depth:Hc,clippingMask:Hc,heatmap:(d,t)=>({u_extrude_scale:new h.bp(d,t.u_extrude_scale),u_intensity:new h.bp(d,t.u_intensity),u_globe_extrude_scale:new h.bp(d,t.u_globe_extrude_scale)}),heatmapTexture:(d,t)=>({u_matrix:new h.c0(d,t.u_matrix),u_world:new h.c3(d,t.u_world),u_image:new h.b_(d,t.u_image),u_color_ramp:new h.b_(d,t.u_color_ramp),u_opacity:new h.bp(d,t.u_opacity)}),hillshade:(d,t)=>({u_image:new h.b_(d,t.u_image),u_latrange:new h.c3(d,t.u_latrange),u_exaggeration:new h.bp(d,t.u_exaggeration),u_altitudes:new h.c9(d,t.u_altitudes),u_azimuths:new h.c9(d,t.u_azimuths),u_accent:new h.b$(d,t.u_accent),u_method:new h.b_(d,t.u_method),u_shadows:new h.c8(d,t.u_shadows),u_highlights:new h.c8(d,t.u_highlights)}),hillshadePrepare:(d,t)=>({u_matrix:new h.c0(d,t.u_matrix),u_image:new h.b_(d,t.u_image),u_dimension:new h.c3(d,t.u_dimension),u_zoom:new h.bp(d,t.u_zoom),u_unpack:new h.c1(d,t.u_unpack)}),colorRelief:(d,t)=>({u_image:new h.b_(d,t.u_image),u_unpack:new h.c1(d,t.u_unpack),u_dimension:new h.c3(d,t.u_dimension),u_elevation_stops:new h.b_(d,t.u_elevation_stops),u_color_stops:new h.b_(d,t.u_color_stops),u_color_ramp_size:new h.b_(d,t.u_color_ramp_size),u_opacity:new h.bp(d,t.u_opacity)}),line:(d,t)=>({u_translation:new h.c3(d,t.u_translation),u_ratio:new h.bp(d,t.u_ratio),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_units_to_pixels:new h.c3(d,t.u_units_to_pixels)}),lineGradient:(d,t)=>({u_translation:new h.c3(d,t.u_translation),u_ratio:new h.bp(d,t.u_ratio),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_units_to_pixels:new h.c3(d,t.u_units_to_pixels),u_image:new h.b_(d,t.u_image),u_image_height:new h.bp(d,t.u_image_height)}),linePattern:(d,t)=>({u_translation:new h.c3(d,t.u_translation),u_texsize:new h.c3(d,t.u_texsize),u_ratio:new h.bp(d,t.u_ratio),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_image:new h.b_(d,t.u_image),u_units_to_pixels:new h.c3(d,t.u_units_to_pixels),u_scale:new h.c2(d,t.u_scale),u_fade:new h.bp(d,t.u_fade)}),lineSDF:(d,t)=>({u_translation:new h.c3(d,t.u_translation),u_ratio:new h.bp(d,t.u_ratio),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_units_to_pixels:new h.c3(d,t.u_units_to_pixels),u_image:new h.b_(d,t.u_image),u_mix:new h.bp(d,t.u_mix),u_tileratio:new h.bp(d,t.u_tileratio),u_crossfade_from:new h.bp(d,t.u_crossfade_from),u_crossfade_to:new h.bp(d,t.u_crossfade_to),u_lineatlas_width:new h.bp(d,t.u_lineatlas_width),u_lineatlas_height:new h.bp(d,t.u_lineatlas_height)}),lineGradientSDF:(d,t)=>({u_translation:new h.c3(d,t.u_translation),u_ratio:new h.bp(d,t.u_ratio),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_units_to_pixels:new h.c3(d,t.u_units_to_pixels),u_image:new h.b_(d,t.u_image),u_image_height:new h.bp(d,t.u_image_height),u_tileratio:new h.bp(d,t.u_tileratio),u_crossfade_from:new h.bp(d,t.u_crossfade_from),u_crossfade_to:new h.bp(d,t.u_crossfade_to),u_image_dash:new h.b_(d,t.u_image_dash),u_mix:new h.bp(d,t.u_mix),u_lineatlas_width:new h.bp(d,t.u_lineatlas_width),u_lineatlas_height:new h.bp(d,t.u_lineatlas_height)}),raster:(d,t)=>({u_tl_parent:new h.c3(d,t.u_tl_parent),u_scale_parent:new h.bp(d,t.u_scale_parent),u_buffer_scale:new h.bp(d,t.u_buffer_scale),u_fade_t:new h.bp(d,t.u_fade_t),u_opacity:new h.bp(d,t.u_opacity),u_image0:new h.b_(d,t.u_image0),u_image1:new h.b_(d,t.u_image1),u_brightness_low:new h.bp(d,t.u_brightness_low),u_brightness_high:new h.bp(d,t.u_brightness_high),u_saturation_factor:new h.bp(d,t.u_saturation_factor),u_contrast_factor:new h.bp(d,t.u_contrast_factor),u_spin_weights:new h.c2(d,t.u_spin_weights),u_coords_top:new h.c1(d,t.u_coords_top),u_coords_bottom:new h.c1(d,t.u_coords_bottom)}),symbolIcon:(d,t)=>({u_is_size_zoom_constant:new h.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new h.b_(d,t.u_is_size_feature_constant),u_size_t:new h.bp(d,t.u_size_t),u_size:new h.bp(d,t.u_size),u_camera_to_center_distance:new h.bp(d,t.u_camera_to_center_distance),u_pitch:new h.bp(d,t.u_pitch),u_rotate_symbol:new h.b_(d,t.u_rotate_symbol),u_aspect_ratio:new h.bp(d,t.u_aspect_ratio),u_fade_change:new h.bp(d,t.u_fade_change),u_label_plane_matrix:new h.c0(d,t.u_label_plane_matrix),u_coord_matrix:new h.c0(d,t.u_coord_matrix),u_is_text:new h.b_(d,t.u_is_text),u_pitch_with_map:new h.b_(d,t.u_pitch_with_map),u_is_along_line:new h.b_(d,t.u_is_along_line),u_is_variable_anchor:new h.b_(d,t.u_is_variable_anchor),u_texsize:new h.c3(d,t.u_texsize),u_texture:new h.b_(d,t.u_texture),u_translation:new h.c3(d,t.u_translation),u_pitched_scale:new h.bp(d,t.u_pitched_scale)}),symbolSDF:(d,t)=>({u_is_size_zoom_constant:new h.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new h.b_(d,t.u_is_size_feature_constant),u_size_t:new h.bp(d,t.u_size_t),u_size:new h.bp(d,t.u_size),u_camera_to_center_distance:new h.bp(d,t.u_camera_to_center_distance),u_pitch:new h.bp(d,t.u_pitch),u_rotate_symbol:new h.b_(d,t.u_rotate_symbol),u_aspect_ratio:new h.bp(d,t.u_aspect_ratio),u_fade_change:new h.bp(d,t.u_fade_change),u_label_plane_matrix:new h.c0(d,t.u_label_plane_matrix),u_coord_matrix:new h.c0(d,t.u_coord_matrix),u_is_text:new h.b_(d,t.u_is_text),u_pitch_with_map:new h.b_(d,t.u_pitch_with_map),u_is_along_line:new h.b_(d,t.u_is_along_line),u_is_variable_anchor:new h.b_(d,t.u_is_variable_anchor),u_texsize:new h.c3(d,t.u_texsize),u_texture:new h.b_(d,t.u_texture),u_gamma_scale:new h.bp(d,t.u_gamma_scale),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_is_halo:new h.b_(d,t.u_is_halo),u_is_plain:new h.b_(d,t.u_is_plain),u_translation:new h.c3(d,t.u_translation),u_pitched_scale:new h.bp(d,t.u_pitched_scale)}),symbolTextAndIcon:(d,t)=>({u_is_size_zoom_constant:new h.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new h.b_(d,t.u_is_size_feature_constant),u_size_t:new h.bp(d,t.u_size_t),u_size:new h.bp(d,t.u_size),u_camera_to_center_distance:new h.bp(d,t.u_camera_to_center_distance),u_pitch:new h.bp(d,t.u_pitch),u_rotate_symbol:new h.b_(d,t.u_rotate_symbol),u_aspect_ratio:new h.bp(d,t.u_aspect_ratio),u_fade_change:new h.bp(d,t.u_fade_change),u_label_plane_matrix:new h.c0(d,t.u_label_plane_matrix),u_coord_matrix:new h.c0(d,t.u_coord_matrix),u_is_text:new h.b_(d,t.u_is_text),u_pitch_with_map:new h.b_(d,t.u_pitch_with_map),u_is_along_line:new h.b_(d,t.u_is_along_line),u_is_variable_anchor:new h.b_(d,t.u_is_variable_anchor),u_texsize:new h.c3(d,t.u_texsize),u_texsize_icon:new h.c3(d,t.u_texsize_icon),u_texture:new h.b_(d,t.u_texture),u_texture_icon:new h.b_(d,t.u_texture_icon),u_gamma_scale:new h.bp(d,t.u_gamma_scale),u_device_pixel_ratio:new h.bp(d,t.u_device_pixel_ratio),u_is_halo:new h.b_(d,t.u_is_halo),u_translation:new h.c3(d,t.u_translation),u_pitched_scale:new h.bp(d,t.u_pitched_scale)}),background:(d,t)=>({u_opacity:new h.bp(d,t.u_opacity),u_color:new h.b$(d,t.u_color)}),backgroundPattern:(d,t)=>({u_opacity:new h.bp(d,t.u_opacity),u_image:new h.b_(d,t.u_image),u_pattern_tl_a:new h.c3(d,t.u_pattern_tl_a),u_pattern_br_a:new h.c3(d,t.u_pattern_br_a),u_pattern_tl_b:new h.c3(d,t.u_pattern_tl_b),u_pattern_br_b:new h.c3(d,t.u_pattern_br_b),u_texsize:new h.c3(d,t.u_texsize),u_mix:new h.bp(d,t.u_mix),u_pattern_size_a:new h.c3(d,t.u_pattern_size_a),u_pattern_size_b:new h.c3(d,t.u_pattern_size_b),u_scale_a:new h.bp(d,t.u_scale_a),u_scale_b:new h.bp(d,t.u_scale_b),u_pixel_coord_upper:new h.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new h.c3(d,t.u_pixel_coord_lower),u_tile_units_to_pixels:new h.bp(d,t.u_tile_units_to_pixels)}),terrain:(d,t)=>({u_texture:new h.b_(d,t.u_texture),u_ele_delta:new h.bp(d,t.u_ele_delta),u_fog_matrix:new h.c0(d,t.u_fog_matrix),u_fog_color:new h.b$(d,t.u_fog_color),u_fog_ground_blend:new h.bp(d,t.u_fog_ground_blend),u_fog_ground_blend_opacity:new h.bp(d,t.u_fog_ground_blend_opacity),u_horizon_color:new h.b$(d,t.u_horizon_color),u_horizon_fog_blend:new h.bp(d,t.u_horizon_fog_blend),u_is_globe_mode:new h.bp(d,t.u_is_globe_mode)}),terrainDepth:(d,t)=>({u_ele_delta:new h.bp(d,t.u_ele_delta)}),terrainCoords:(d,t)=>({u_texture:new h.b_(d,t.u_texture),u_terrain_coords_id:new h.bp(d,t.u_terrain_coords_id),u_ele_delta:new h.bp(d,t.u_ele_delta)}),projectionErrorMeasurement:(d,t)=>({u_input:new h.bp(d,t.u_input),u_output_expected:new h.bp(d,t.u_output_expected)}),atmosphere:(d,t)=>({u_sun_pos:new h.c2(d,t.u_sun_pos),u_atmosphere_blend:new h.bp(d,t.u_atmosphere_blend),u_globe_position:new h.c2(d,t.u_globe_position),u_globe_radius:new h.bp(d,t.u_globe_radius),u_inv_proj_matrix:new h.c0(d,t.u_inv_proj_matrix)}),sky:(d,t)=>({u_sky_color:new h.b$(d,t.u_sky_color),u_horizon_color:new h.b$(d,t.u_horizon_color),u_horizon:new h.c3(d,t.u_horizon),u_horizon_normal:new h.c3(d,t.u_horizon_normal),u_sky_horizon_blend:new h.bp(d,t.u_sky_horizon_blend),u_sky_blend:new h.bp(d,t.u_sky_blend)})};class vh{constructor(t,n,s){this.context=t;let c=t.gl;this.buffer=c.createBuffer(),this.dynamicDraw=!!s,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?c.DYNAMIC_DRAW:c.STATIC_DRAW),this.dynamicDraw||n.freeBufferAfterUpload()}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){let n=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),n.bufferSubData(n.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let bh={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Xc{constructor(t,n,s,c){this.length=n.length,this.attributes=s,this.itemSize=n.bytesPerElement,this.dynamicDraw=c,this.context=t;let f=t.gl;this.buffer=f.createBuffer(),t.bindVertexBuffer.set(this.buffer),f.bufferData(f.ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?f.DYNAMIC_DRAW:f.STATIC_DRAW),this.dynamicDraw||n.freeBufferAfterUpload()}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);let n=this.context.gl;this.bind(),n.bufferSubData(n.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,n){for(let s of this.attributes){let c=n.attributes[s.name];c!==void 0&&t.enableVertexAttribArray(c)}}setVertexAttribPointers(t,n,s){for(let c of this.attributes){let f=n.attributes[c.name];f!==void 0&&t.vertexAttribPointer(f,c.components,t[bh[c.type]],!1,this.itemSize,c.offset+this.itemSize*(s||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class lt{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default)}}class Yc extends lt{getDefault(){return h.bo.transparent}set(t){let n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class qa extends lt{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)}}class Wa extends lt{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)}}class Ha extends lt{getDefault(){return[!0,!0,!0,!0]}set(t){let n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class Sl extends lt{getDefault(){return!0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)}}class Tn extends lt{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)}}class Go extends lt{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(t){let n=this.current;(t.func!==n.func||t.ref!==n.ref||t.mask!==n.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1)}}class no extends lt{getDefault(){let t=this.gl;return[t.KEEP,t.KEEP,t.KEEP]}set(t){let n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1)}}class Xi extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;t?n.enable(n.STENCIL_TEST):n.disable(n.STENCIL_TEST),this.current=t,this.dirty=!1}}class Kc extends lt{getDefault(){return[0,1]}set(t){let n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1)}}class Jc extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;t?n.enable(n.DEPTH_TEST):n.disable(n.DEPTH_TEST),this.current=t,this.dirty=!1}}class Pl extends lt{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)}}class Sn extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;t?n.enable(n.BLEND):n.disable(n.BLEND),this.current=t,this.dirty=!1}}class Xa extends lt{getDefault(){let t=this.gl;return[t.ONE,t.ZERO]}set(t){let n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1)}}class Ya extends lt{getDefault(){return h.bo.transparent}set(t){let n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class $o extends lt{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1)}}class Ka extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;t?n.enable(n.CULL_FACE):n.disable(n.CULL_FACE),this.current=t,this.dirty=!1}}class Qc extends lt{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)}}class oo extends lt{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)}}class ao extends lt{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1)}}class eu extends lt{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)}}class Ml extends lt{getDefault(){let t=this.gl;return[0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){let n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class Ke extends lt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.bindFramebuffer(n.FRAMEBUFFER,t),this.current=t,this.dirty=!1}}class Ja extends lt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.bindRenderbuffer(n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class wh extends lt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.bindTexture(n.TEXTURE_2D,t),this.current=t,this.dirty=!1}}class tu extends lt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.bindBuffer(n.ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Zo extends lt{getDefault(){return null}set(t){let n=this.gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Th extends lt{getDefault(){return null}set(t){var n;if(t===this.current&&!this.dirty)return;let s=this.gl;or(s)?s.bindVertexArray(t):(n=s.getExtension("OES_vertex_array_object"))===null||n===void 0||n.bindVertexArrayOES(t),this.current=t,this.dirty=!1}}class Sh extends lt{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1}}class iu extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1}}class Ph extends lt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;let n=this.gl;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1}}class qo extends lt{constructor(t,n){super(t),this.context=t,this.parent=n}getDefault(){return null}}class Qa extends qo{setDirty(){this.dirty=!0}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let n=this.gl;n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}}class Wo extends qo{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let n=this.gl;n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class es extends qo{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let n=this.gl;n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}let ts="Framebuffer is not complete";class ru{constructor(t,n,s,c,f){this.context=t,this.width=n,this.height=s;let y=t.gl,v=this.framebuffer=y.createFramebuffer();if(this.colorAttachment=new Qa(t,v),c)this.depthAttachment=f?new es(t,v):new Wo(t,v);else if(f)throw new Error("Stencil cannot be set without depth");if(y.checkFramebufferStatus(y.FRAMEBUFFER)!==y.FRAMEBUFFER_COMPLETE)throw new Error(ts)}destroy(){let t=this.context.gl,n=this.colorAttachment.get();if(n&&t.deleteTexture(n),this.depthAttachment){let s=this.depthAttachment.get();s&&t.deleteRenderbuffer(s)}t.deleteFramebuffer(this.framebuffer)}}class is{constructor(t){var n,s;if(this.gl=t,this.clearColor=new Yc(this),this.clearDepth=new qa(this),this.clearStencil=new Wa(this),this.colorMask=new Ha(this),this.depthMask=new Sl(this),this.stencilMask=new Tn(this),this.stencilFunc=new Go(this),this.stencilOp=new no(this),this.stencilTest=new Xi(this),this.depthRange=new Kc(this),this.depthTest=new Jc(this),this.depthFunc=new Pl(this),this.blend=new Sn(this),this.blendFunc=new Xa(this),this.blendColor=new Ya(this),this.blendEquation=new $o(this),this.cullFace=new Ka(this),this.cullFaceSide=new Qc(this),this.frontFace=new oo(this),this.program=new ao(this),this.activeTexture=new eu(this),this.viewport=new Ml(this),this.bindFramebuffer=new Ke(this),this.bindRenderbuffer=new Ja(this),this.bindTexture=new wh(this),this.bindVertexBuffer=new tu(this),this.bindElementBuffer=new Zo(this),this.bindVertexArray=new Th(this),this.pixelStoreUnpack=new Sh(this),this.pixelStoreUnpackPremultiplyAlpha=new iu(this),this.pixelStoreUnpackFlipY=new Ph(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),or(t)){this.HALF_FLOAT=t.HALF_FLOAT;let c=t.getExtension("EXT_color_buffer_half_float");this.RGBA16F=(n=t.RGBA16F)!==null&&n!==void 0?n:c?.RGBA16F_EXT,this.RGB16F=(s=t.RGB16F)!==null&&s!==void 0?s:c?.RGB16F_EXT,t.getExtension("EXT_color_buffer_float")}else{t.getExtension("EXT_color_buffer_half_float"),t.getExtension("OES_texture_half_float_linear");let c=t.getExtension("OES_texture_half_float");this.HALF_FLOAT=c?.HALF_FLOAT_OES}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(t,n){return new vh(this,t,n)}createVertexBuffer(t,n,s){return new Xc(this,t,n,s)}createRenderbuffer(t,n,s){let c=this.gl,f=c.createRenderbuffer();return this.bindRenderbuffer.set(f),c.renderbufferStorage(c.RENDERBUFFER,t,n,s),this.bindRenderbuffer.set(null),f}createFramebuffer(t,n,s,c){return new ru(this,t,n,s,c)}clear({color:t,depth:n,stencil:s}){let c=this.gl,f=0;t&&(f|=c.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),n!==void 0&&(f|=c.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(n),this.depthMask.set(!0)),s!==void 0&&(f|=c.STENCIL_BUFFER_BIT,this.clearStencil.set(s),this.stencilMask.set(255)),c.clear(f)}setCullFace(t){t.enable===!1?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace))}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1)}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1)}setColorMode(t){h.bQ(t.blendFunction,gt.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask)}createVertexArray(){var t;return or(this.gl)?this.gl.createVertexArray():(t=this.gl.getExtension("OES_vertex_array_object"))===null||t===void 0?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var n;or(this.gl)?this.gl.deleteVertexArray(t):(n=this.gl.getExtension("OES_vertex_array_object"))===null||n===void 0||n.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null)}}let Pn;function so(d,t,n,s,c){var f,y;let v=d.context,w=d.transform,S=v.gl,P=d.useProgram("collisionBox"),E=[],C=0,z=0;for(let Y of s){let q=t.getTile(Y).getBucket(n);if(!q)continue;let G=c?q.textCollisionBox:q.iconCollisionBox,X=q.collisionCircleArray;X.length>0&&(E.push({circleArray:X,circleOffset:z,coord:Y}),C+=X.length/4,z=C),G&&P.draw(v,S.LINES,$e.disabled,rt.disabled,d.colorModeForRenderPass(),tt.disabled,$c(d.transform),(f=d.style.map.terrain)===null||f===void 0?void 0:f.getTerrainData(Y),w.getProjectionData({overscaledTileID:Y,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),n.id,G.layoutVertexBuffer,G.indexBuffer,G.segments,null,d.transform.zoom,null,null,G.collisionVertexBuffer)}if(!c||!E.length)return;let B=d.useProgram("collisionCircle"),j=new h.ca;j.resize(4*C),j._trim();let $=0;for(let Y of E)for(let q=0;q=0&&(j[U.associatedIconIndex]={shiftedAnchor:pe,angle:Ie})}else pn(U.numGlyphs,z)}if(w){B.clear();let $=d.icon.placedSymbolArray;for(let U=0;U<$.length;U++){let Z=$.get(U);if(Z.hidden)pn(Z.numGlyphs,B);else{let Y=j[U];if(Y)for(let q=0;qd.style.map.terrain.getElevation(Te,Er,Kl):null,ys=n.layout.get("text-rotation-alignment")==="map";Da(Ie,d,c,hi,Pt,Y,S,ys,Te.toUnwrapped(),U.width,U.height,Yr,Dn)}let Ni=c&&se||_r,Ji=q||Ni?lo:Y?hi:d.transform.clipSpaceToPixelsMatrix,St=Ft&&n.paint.get(c?"text-halo-width":"icon-halo-width").constantOr(1)!==0,xt;xt=Ft?Ie.iconsInText?wl(pt.kind,ci,G,Y,q,Ni,d,Ji,Ir,Yr,vi,Wr,ge):bl(pt.kind,ci,G,Y,q,Ni,d,Ji,Ir,Yr,c,vi,St,ge):Za(pt.kind,ci,G,Y,q,Ni,d,Ji,Ir,Yr,c,vi,ge);let Nt={program:jt,buffers:ke,uniformValues:xt,projectionData:_s,atlasTexture:oi,atlasTextureIcon:Hr,atlasInterpolation:Xt,atlasInterpolationIcon:ui,isSDF:Ft,hasHalo:St};if(X&&Ie.canOverlap){W=!0;let Pt=ke.segments.get();for(let Dn of Pt)le.push({segments:new h.aV([Dn]),sortKey:Dn.sortKey,state:Nt,terrainData:Dt})}else le.push({segments:ke.segments,sortKey:0,state:Nt,terrainData:Dt})}W&&le.sort(((Te,pe)=>Te.sortKey-pe.sortKey));let me=(B=n.paint.get(c?"text-halo-width":"icon-halo-width").constantOr(null))!==null&&B!==void 0?B:1/0,Ae=n.layout.get("text-letter-spacing").constantOr(0)*h.aJ<0||me>1;for(let Te of le){let pe=Te.state;j.activeTexture.set($.TEXTURE0),pe.atlasTexture.bind(pe.atlasInterpolation,$.CLAMP_TO_EDGE),pe.atlasTextureIcon&&(j.activeTexture.set($.TEXTURE1),pe.atlasTextureIcon&&pe.atlasTextureIcon.bind(pe.atlasInterpolationIcon,$.CLAMP_TO_EDGE));let Ie=pe.isSDF&&pe.hasHalo;if(Ie){let ke=pe.uniformValues;ke.u_is_halo=1,Ae&&(ke.u_is_plain=0,Xo(pe.buffers,Te.segments,n,d,pe.program,te,P,E,ke,pe.projectionData,Te.terrainData),ke.u_is_halo=0,ke.u_is_plain=1)}Xo(pe.buffers,Te.segments,n,d,pe.program,te,P,E,pe.uniformValues,pe.projectionData,Te.terrainData),Ie&&!Ae&&(pe.uniformValues.u_is_halo=0)}}function Xo(d,t,n,s,c,f,y,v,w,S,P){let E=s.context;c.draw(E,E.gl.TRIANGLES,f,y,v,tt.backCCW,w,P,S,n.id,d.layoutVertexBuffer,d.indexBuffer,t,n.paint,s.transform.zoom,d.programConfigurations.get(n.id),d.dynamicLayoutVertexBuffer,d.opacityVertexBuffer)}function Cl(d,t,n,s,c){let f=d.context,y=f.gl,v=rt.disabled,w=new gt([y.ONE,y.ONE],h.bo.transparent,[!0,!0,!0,!0]),S=t.getBucket(n);if(!S)return;let P=s.key,E=n.heatmapFbos.get(P);E||(E=Al(f,t.tileSize,t.tileSize),n.heatmapFbos.set(P,E)),f.bindFramebuffer.set(E.framebuffer),f.viewport.set([0,0,t.tileSize,t.tileSize]),f.clear({color:h.bo.transparent});let C=S.programConfigurations.get(n.id),z=d.useProgram("heatmap",C,!c),B=d.transform.getProjectionData({overscaledTileID:t.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),j=d.style.map.terrain.getTerrainData(s);z.draw(f,y.TRIANGLES,$e.disabled,v,w,tt.disabled,_l(t,d.transform.zoom,n.paint.get("heatmap-intensity"),1),j,B,n.id,S.layoutVertexBuffer,S.indexBuffer,S.segments,n.paint,d.transform.zoom,C)}function nu(d,t,n,s,c){let f=d.context,y=f.gl,v=d.transform;f.setColorMode(d.colorModeForRenderPass());let w=Yo(f,t),S=n.key,P=t.heatmapFbos.get(S);if(!P)return;f.activeTexture.set(y.TEXTURE0),y.bindTexture(y.TEXTURE_2D,P.colorAttachment.get()),f.activeTexture.set(y.TEXTURE1),w.bind(y.LINEAR,y.CLAMP_TO_EDGE);let E=v.getProjectionData({overscaledTileID:n,applyTerrainMatrix:c,applyGlobeMatrix:!s});d.useProgram("heatmapTexture").draw(f,y.TRIANGLES,$e.disabled,rt.disabled,d.colorModeForRenderPass(),tt.disabled,io(d,t,0,1),null,E,t.id,d.rasterBoundsBuffer,d.quadTriangleIndexBuffer,d.rasterBoundsSegments,t.paint,v.zoom),P.destroy(),t.heatmapFbos.delete(S)}function Al(d,t,n){var s,c;let f=d.gl,y=f.createTexture();f.bindTexture(f.TEXTURE_2D,y),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,f.LINEAR),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,f.LINEAR);let v=(s=d.HALF_FLOAT)!==null&&s!==void 0?s:f.UNSIGNED_BYTE,w=(c=d.RGBA16F)!==null&&c!==void 0?c:f.RGBA;f.texImage2D(f.TEXTURE_2D,0,w,t,n,0,f.RGBA,v,null);let S=d.createFramebuffer(t,n,!1,!1);return S.colorAttachment.set(y),S}function Yo(d,t){return t.colorRampTexture||(t.colorRampTexture=new h.T(d,t.colorRamp,d.gl.RGBA)),t.colorRampTexture}function rs(d,t,n,s,c,f,y,v){let w=256;if(c.stepInterpolant){let S=t.getSource().maxzoom,P=y.canonical.z===S?Math.ceil(1<d.options.anisotropicFilterPitch&&z.texParameterf(z.TEXTURE_2D,C.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,C.extTextureFilterAnisotropicMax);let Te=(P=d.style.map.terrain)===null||P===void 0?void 0:P.getTerrainData(W),pe=j.getProjectionData({overscaledTileID:W,aligned:Z,applyGlobeMatrix:!S,applyTerrainMatrix:!0}),Ie=xl(me,ge,Ae.fadeMix,n,v),ke=$.getMeshFromTileID(C,W.canonical,f,y,"raster");B.draw(C,z.TRIANGLES,te,c?c[W.overscaledZ]:rt.disabled,U,w?tt.frontCCW:tt.backCCW,Ie,Te,pe,n.id,ke.vertexBuffer,ke.indexBuffer,ke.segments)}}function au(d,t,n,s){let c={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(n===0||s)return c;if(d.fadingParentID){let f=t.getLoadedTile(d.fadingParentID);if(!f)return c;let y=Math.pow(2,f.tileID.overscaledZ-d.tileID.overscaledZ),v=[d.tileID.canonical.x*y%1,d.tileID.canonical.y*y%1],w=(function(S,P,E){let C=Xe(),z=(C-P.timeAdded)/E,B=S.fadingDirection===Hi.Incoming,j=h.al((C-S.timeAdded)/E,0,1),$=h.al(1-z,0,1),U=B?j:$;return{tileOpacity:U,parentTileOpacity:B?$:j,fadeMix:{opacity:1,mix:1-U}}})(d,f,n);return{parentTile:f,parentScaleBy:y,parentTopLeft:v,fadeValues:w}}if(d.selfFading){let f=(function(y,v){let w=(Xe()-y.timeAdded)/v,S=h.al(w,0,1);return{tileOpacity:S,fadeMix:{opacity:S,mix:0}}})(d,n);return{parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:f}}return c}let su=new h.bo(1,0,0,1),lu=new h.bo(0,1,0,1),cu=new h.bo(0,0,1,1),uu=new h.bo(1,0,1,1),Zr=new h.bo(0,1,1,1);function Dl(d,t,n,s){Jo(d,0,t+n/2,d.transform.width,n,s)}function zl(d,t,n,s){Jo(d,t-n/2,0,n,d.transform.height,s)}function Jo(d,t,n,s,c,f){let y=d.context,v=y.gl;v.enable(v.SCISSOR_TEST),v.scissor(t*d.pixelRatio,n*d.pixelRatio,s*d.pixelRatio,c*d.pixelRatio),y.clear({color:f}),v.disable(v.SCISSOR_TEST)}function hu(d,t,n){var s;let c=d.context,f=c.gl,y=d.useProgram("debug"),v=$e.disabled,w=rt.disabled,S=d.colorModeForRenderPass(),P="$debug",E=(s=d.style.map.terrain)===null||s===void 0?void 0:s.getTerrainData(n);c.activeTexture.set(f.TEXTURE0);let C=t.getTileByID(n.key).latestRawTileData,z=Math.floor((C?.byteLength||0)/1024),B=t.getTile(n).tileSize,j=512/Math.min(B,512)*(n.overscaledZ/d.transform.zoom)*.5,$=n.canonical.toString();n.overscaledZ!==n.canonical.z&&($+=` => ${n.overscaledZ}`),(function(Z,Y){Z.initDebugOverlayCanvas();let q=Z.debugOverlayCanvas,G=Z.context.gl,X=Z.debugOverlayCanvas.getContext("2d");X.clearRect(0,0,q.width,q.height),X.shadowColor="white",X.shadowBlur=2,X.lineWidth=1.5,X.strokeStyle="white",X.textBaseline="top",X.font="bold 36px Open Sans, sans-serif",X.fillText(Y,5,5),X.strokeText(Y,5,5),Z.debugOverlayTexture.update(q),Z.debugOverlayTexture.bind(G.LINEAR,G.CLAMP_TO_EDGE)})(d,`${$} ${z}kB`);let U=d.transform.getProjectionData({overscaledTileID:n,applyGlobeMatrix:!0,applyTerrainMatrix:!0});y.draw(c,f.TRIANGLES,v,w,gt.alphaBlended,tt.disabled,gl(h.bo.transparent,j),null,U,P,d.debugBuffer,d.quadTriangleIndexBuffer,d.debugSegments),y.draw(c,f.LINE_STRIP,v,w,S,tt.disabled,gl(h.bo.red),E,U,P,d.debugBuffer,d.tileBorderIndexBuffer,d.debugSegments)}function kl(d,t,n,s){let{isRenderingGlobe:c}=s,f=d.context,y=f.gl,v=d.transform,w=d.colorModeForRenderPass(),S=d.getDepthModeFor3D(),P=d.useProgram("terrain");f.bindFramebuffer.set(null),f.viewport.set([0,0,d.width,d.height]);for(let E of n){let C=t.getTerrainMesh(E.tileID),z=d.renderToTexture.getTexture(E),B=t.getTerrainData(E.tileID);f.activeTexture.set(y.TEXTURE0),y.bindTexture(y.TEXTURE_2D,z.texture);let j=t.getMeshFrameDelta(v.zoom),$=v.calculateFogMatrix(E.tileID.toUnwrapped()),U=Ua(j,$,d.style.sky,v.pitch,c),Z=v.getProjectionData({overscaledTileID:E.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});P.draw(f,y.TRIANGLES,S,rt.disabled,w,tt.backCCW,U,B,Z,"terrain",C.vertexBuffer,C.indexBuffer,C.segments)}}function Rl(d,t){if(!t.mesh){let n=new h.aU;n.emplaceBack(-1,-1),n.emplaceBack(1,-1),n.emplaceBack(1,1),n.emplaceBack(-1,1);let s=new h.aW;s.emplaceBack(0,1,2),s.emplaceBack(0,2,3),t.mesh=new mt(d.createVertexBuffer(n,Ur.members),d.createIndexBuffer(s),h.aV.simpleSegment(0,0,n.length,s.length))}return t.mesh}let du={symbol:function(d,t,n,s,c,f){if(d.renderPass!=="translucent")return;let{isRenderingToTexture:y}=f,v=rt.disabled,w=d.colorModeForRenderPass();(n._unevaluatedLayout.hasValue("text-variable-anchor")||n._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&(function(S,P,E,C,z,B,j,$,U){var Z;let Y=P.transform,q=P.style.map.terrain,G=z==="map",X=B==="map";for(let W of S){let te=C.getTile(W),se=te.getBucket(E);if(!(!((Z=se?.text)===null||Z===void 0)&&Z.segments.get().length))continue;let le=h.aw(se.textSizeData,Y.zoom),ge=h.aK(te,1,P.transform.zoom),me=Fi(G,P.transform,ge),Ae=E.layout.get("icon-text-fit")!=="none"&&se.hasIconData();if(le){let Te=Math.pow(2,Y.zoom-te.tileID.overscaledZ),pe=q?(Ie,ke)=>q.getElevation(W,Ie,ke):null;Ho(se,G,X,U,Y,me,Te,le,Ae,h.aL(Y,te,j,$),W.toUnwrapped(),pe)}}})(s,d,n,t,n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),c),n.paint.get("icon-opacity").constantOr(1)!==0&&El(d,t,n,s,!1,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),n.layout.get("icon-rotation-alignment"),n.layout.get("icon-pitch-alignment"),n.layout.get("icon-keep-upright"),v,w,y),n.paint.get("text-opacity").constantOr(1)!==0&&El(d,t,n,s,!0,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.layout.get("text-keep-upright"),v,w,y),t.map.showCollisionBoxes&&(so(d,t,n,s,!0),so(d,t,n,s,!1))},circle:function(d,t,n,s,c){var f;if(d.renderPass!=="translucent")return;let{isRenderingToTexture:y}=c,v=n.paint.get("circle-opacity"),w=n.paint.get("circle-stroke-width"),S=n.paint.get("circle-stroke-opacity"),P=!n.layout.get("circle-sort-key").isConstant();if(v.constantOr(1)===0&&(w.constantOr(1)===0||S.constantOr(1)===0))return;let E=d.context,C=E.gl,z=d.transform,B=d.getDepthModeForSublayer(0,$e.ReadOnly),j=rt.disabled,$=d.colorModeForRenderPass(),U=[],Z=z.getCircleRadiusCorrection();for(let Y of s){let q=t.getTile(Y),G=q.getBucket(n);if(!G)continue;let X=n.paint.get("circle-translate"),W=n.paint.get("circle-translate-anchor"),te=h.aL(z,q,X,W),se=G.programConfigurations.get(n.id),le=d.useProgram("circle",se),ge=G.layoutVertexBuffer,me=G.indexBuffer,Ae=(f=d.style.map.terrain)===null||f===void 0?void 0:f.getTerrainData(Y),Te={programConfiguration:se,program:le,layoutVertexBuffer:ge,indexBuffer:me,uniformValues:Gc(d,q,n,te,Z),terrainData:Ae,projectionData:z.getProjectionData({overscaledTileID:Y,applyGlobeMatrix:!y,applyTerrainMatrix:!0})};if(P){let pe=G.segments.get();for(let Ie of pe)U.push({segments:new h.aV([Ie]),sortKey:Ie.sortKey,state:Te})}else U.push({segments:G.segments,sortKey:0,state:Te})}P&&U.sort(((Y,q)=>Y.sortKey-q.sortKey));for(let Y of U){let{programConfiguration:q,program:G,layoutVertexBuffer:X,indexBuffer:W,uniformValues:te,terrainData:se,projectionData:le}=Y.state;G.draw(E,C.TRIANGLES,B,j,$,tt.backCCW,te,se,le,n.id,X,W,Y.segments,n.paint,d.transform.zoom,q)}},heatmap:function(d,t,n,s,c){if(n.paint.get("heatmap-opacity")===0)return;let f=d.context,{isRenderingToTexture:y,isRenderingGlobe:v}=c;if(d.style.map.terrain){for(let w of s){let S=t.getTile(w);t.hasRenderableParent(w)||(d.renderPass==="offscreen"?Cl(d,S,n,w,v):d.renderPass==="translucent"&&nu(d,n,w,y,v))}f.viewport.set([0,0,d.width,d.height])}else d.renderPass==="offscreen"?(function(w,S,P,E){let C=w.context,z=C.gl,B=w.transform,j=rt.disabled,$=new gt([z.ONE,z.ONE],h.bo.transparent,[!0,!0,!0,!0]);(function(U,Z,Y){let q=U.gl;U.activeTexture.set(q.TEXTURE1),U.viewport.set([0,0,Z.width/4,Z.height/4]);let G=Y.heatmapFbos.get(h.cd);G?(q.bindTexture(q.TEXTURE_2D,G.colorAttachment.get()),U.bindFramebuffer.set(G.framebuffer)):(G=Al(U,Z.width/4,Z.height/4),Y.heatmapFbos.set(h.cd,G))})(C,w,P),C.clear({color:h.bo.transparent});for(let U of E){if(S.hasRenderableParent(U))continue;let Z=S.getTile(U),Y=Z.getBucket(P);if(!Y)continue;let q=Y.programConfigurations.get(P.id),G=w.useProgram("heatmap",q),X=B.getProjectionData({overscaledTileID:U,applyGlobeMatrix:!0,applyTerrainMatrix:!1}),W=B.getCircleRadiusCorrection();G.draw(C,z.TRIANGLES,$e.disabled,j,$,tt.backCCW,_l(Z,B.zoom,P.paint.get("heatmap-intensity"),W),null,X,P.id,Y.layoutVertexBuffer,Y.indexBuffer,Y.segments,P.paint,B.zoom,q)}C.viewport.set([0,0,w.width,w.height])})(d,t,n,s):d.renderPass==="translucent"&&(function(w,S){let P=w.context,E=P.gl;P.setColorMode(w.colorModeForRenderPass());let C=S.heatmapFbos.get(h.cd);C&&(P.activeTexture.set(E.TEXTURE0),E.bindTexture(E.TEXTURE_2D,C.colorAttachment.get()),P.activeTexture.set(E.TEXTURE1),Yo(P,S).bind(E.LINEAR,E.CLAMP_TO_EDGE),w.useProgram("heatmapTexture").draw(P,E.TRIANGLES,$e.disabled,rt.disabled,w.colorModeForRenderPass(),tt.disabled,io(w,S,0,1),null,null,S.id,w.viewportBuffer,w.quadTriangleIndexBuffer,w.viewportSegments,S.paint,w.transform.zoom))})(d,n)},line:function(d,t,n,s,c){var f;if(d.renderPass!=="translucent")return;let{isRenderingToTexture:y}=c,v=n.paint.get("line-opacity"),w=n.paint.get("line-width");if(v.constantOr(1)===0||w.constantOr(1)===0)return;let S=d.getDepthModeForSublayer(0,$e.ReadOnly),P=d.colorModeForRenderPass(),E=n.paint.get("line-dasharray"),C=E.constantOr(1),z=n.paint.get("line-pattern"),B=z.constantOr(1),j=n.paint.get("line-gradient"),$=n.getCrossfadeParameters(),U;U=B?"linePattern":C&&j?"lineGradientSDF":C?"lineSDF":j?"lineGradient":"line";let Z=d.context,Y=Z.gl,q=d.transform,G=!0;for(let X of s){let W=t.getTile(X);if(B&&!W.patternsLoaded())continue;let te=W.getBucket(n);if(!te)continue;let se=te.programConfigurations.get(n.id),le=d.context.program.get(),ge=d.useProgram(U,se),me=G||ge.program!==le,Ae=(f=d.style.map.terrain)===null||f===void 0?void 0:f.getTerrainData(X),Te=z.constantOr(null),pe=E?.constantOr(null);if(Te&&W.imageAtlas){let pt=W.imageAtlas,Ot=pt.patternPositions[Te.to.toString()],jt=pt.patternPositions[Te.from.toString()];Ot&&jt&&se.setConstantPatternPositions(Ot,jt)}else if(pe){let pt=n.layout.get("line-cap").constantOr(null)==="round",Ot=d.lineAtlas.getDash(pe.to,pt),jt=d.lineAtlas.getDash(pe.from,pt);se.setConstantDashPositions(Ot,jt)}let Ie=q.getProjectionData({overscaledTileID:X,applyGlobeMatrix:!y,applyTerrainMatrix:!0}),ke=q.getPixelScale(),ct;B?(ct=qc(d,W,n,ke,$),Eh(Z,Y,W,se,$)):C&&j?(ct=Wc(d,W,n,ke,$,te.lineClipsArray.length),Mn(d,t,Z,Y,n,te,X,se,$)):C?(ct=yl(d,W,n,ke,$),ou(d,Z,Y,se,me,$)):j?(ct=Zc(d,W,n,ke,te.lineClipsArray.length),Lt(d,t,Z,Y,n,te,X)):ct=Uo(d,W,n,ke);let Ft=d.stencilModeForClipping(X);ge.draw(Z,Y.TRIANGLES,S,Ft,P,tt.disabled,ct,Ae,Ie,n.id,te.layoutVertexBuffer,te.indexBuffer,te.segments,n.paint,d.transform.zoom,se,te.layoutVertexBuffer2),G=!1}},fill:function(d,t,n,s,c){let f=n.paint.get("fill-color"),y=n.paint.get("fill-opacity");if(y.constantOr(1)===0)return;let{isRenderingToTexture:v}=c,w=d.colorModeForRenderPass(),S=n.paint.get("fill-pattern"),P=d.opaquePassEnabledForLayer()&&!S.constantOr(1)&&f.constantOr(h.bo.transparent).a===1&&y.constantOr(0)===1?"opaque":"translucent";if(d.renderPass===P){let E=d.getDepthModeForSublayer(1,d.renderPass==="opaque"?$e.ReadWrite:$e.ReadOnly);ns(d,t,n,s,E,w,!1,v)}if(d.renderPass==="translucent"&&n.paint.get("fill-antialias")){let E=d.getDepthModeForSublayer(n.getPaintProperty("fill-outline-color")?2:0,$e.ReadOnly);ns(d,t,n,s,E,w,!0,v)}},fillExtrusion:function(d,t,n,s,c){let f=n.paint.get("fill-extrusion-opacity");if(f===0)return;let{isRenderingToTexture:y}=c;if(d.renderPass==="translucent"){let v=new $e(d.context.gl.LEQUAL,$e.ReadWrite,d.depthRangeFor3D);if(f!==1||n.paint.get("fill-extrusion-pattern").constantOr(1))co(d,t,n,s,v,rt.disabled,gt.disabled,y),co(d,t,n,s,v,d.stencilModeFor3D(),d.colorModeForRenderPass(),y);else{let w=d.colorModeForRenderPass();co(d,t,n,s,v,rt.disabled,w,y)}}},hillshade:function(d,t,n,s,c){if(d.renderPass!=="offscreen"&&d.renderPass!=="translucent")return;let{isRenderingToTexture:f}=c,y=d.context,v=d.style.projection.useSubdivision,w=d.getDepthModeForSublayer(0,$e.ReadOnly),S=d.colorModeForRenderPass();if(d.renderPass==="offscreen")(function(P,E,C,z,B,j,$){let U=P.context,Z=U.gl,Y=z.paint.get("resampling")==="nearest"?Z.NEAREST:Z.LINEAR;for(let q of C){let G=E.getTile(q),X=G.dem;if(!X?.data||!G.needsHillshadePrepare)continue;let W=X.dim,te=X.stride,se=X.getPixels();if(U.activeTexture.set(Z.TEXTURE1),U.pixelStoreUnpackPremultiplyAlpha.set(!1),G.demTexture||(G.demTexture=P.getTileTexture(te)),G.demTexture){let ge=G.demTexture;ge.update(se,{premultiply:!1}),ge.bind(Z.NEAREST,Z.CLAMP_TO_EDGE)}else G.demTexture=new h.T(U,se,Z.RGBA,{premultiply:!1}),G.demTexture.bind(Z.NEAREST,Z.CLAMP_TO_EDGE);U.activeTexture.set(Z.TEXTURE0);let le=G.fbo;if(!le){let ge=new h.T(U,{width:W,height:W,data:null},Z.RGBA);ge.bind(Y,Z.CLAMP_TO_EDGE),le=G.fbo=U.createFramebuffer(W,W,!0,!1),le.colorAttachment.set(ge.texture)}U.bindFramebuffer.set(le.framebuffer),U.viewport.set([0,0,W,W]),P.useProgram("hillshadePrepare").draw(U,Z.TRIANGLES,B,j,$,tt.disabled,$a(G.tileID,X),null,null,z.id,P.rasterBoundsBuffer,P.quadTriangleIndexBuffer,P.rasterBoundsSegments),G.needsHillshadePrepare=!1}})(d,t,s,n,w,rt.disabled,S),y.viewport.set([0,0,d.width,d.height]);else if(d.renderPass==="translucent")if(v){let[P,E,C]=d.stencilConfigForOverlapTwoPass(s);os(d,t,n,C,P,w,S,!1,f),os(d,t,n,C,E,w,S,!0,f)}else{let[P,E]=d.getStencilConfigForOverlapAndUpdateStencilID(s);os(d,t,n,E,P,w,S,!1,f)}},colorRelief:function(d,t,n,s,c){if(d.renderPass!=="translucent"||!s.length)return;let{isRenderingToTexture:f}=c,y=d.style.projection.useSubdivision,v=d.getDepthModeForSublayer(0,$e.ReadOnly),w=d.colorModeForRenderPass();if(y){let[S,P,E]=d.stencilConfigForOverlapTwoPass(s);Ko(d,t,n,E,S,v,w,!1,f),Ko(d,t,n,E,P,v,w,!0,f)}else{let[S,P]=d.getStencilConfigForOverlapAndUpdateStencilID(s);Ko(d,t,n,P,S,v,w,!1,f)}},raster:function(d,t,n,s,c){if(d.renderPass!=="translucent"||n.paint.get("raster-opacity")===0||!s.length)return;let{isRenderingToTexture:f}=c,y=t.getSource(),v=d.style.projection.useSubdivision;if(y instanceof Or)uo(d,t,n,s,null,!1,!1,y.tileCoords,y.flippedWindingOrder,f);else if(v){let[w,S,P]=d.stencilConfigForOverlapTwoPass(s);uo(d,t,n,P,w,!1,!0,In,!1,f),uo(d,t,n,P,S,!0,!0,In,!1,f)}else{let[w,S]=d.getStencilConfigForOverlapAndUpdateStencilID(s);uo(d,t,n,S,w,!1,!0,In,!1,f)}},background:function(d,t,n,s,c){var f;let y=n.paint.get("background-color"),v=n.paint.get("background-opacity");if(v===0)return;let{isRenderingToTexture:w}=c,S=d.context,P=S.gl,E=d.style.projection,C=d.transform,z=C.tileSize,B=n.paint.get("background-pattern");if(d.isPatternMissing(B))return;let j=!B&&y.a===1&&v===1&&d.opaquePassEnabledForLayer()?"opaque":"translucent";if(d.renderPass!==j)return;let $=rt.disabled,U=d.getDepthModeForSublayer(0,j==="opaque"?$e.ReadWrite:$e.ReadOnly),Z=d.colorModeForRenderPass(),Y=d.useProgram(B?"backgroundPattern":"background"),q=s||un(C,{tileSize:z,terrain:d.style.map.terrain});B&&(S.activeTexture.set(P.TEXTURE0),d.imageManager.bind(d.context));let G=n.getCrossfadeParameters();for(let X of q){let W=C.getProjectionData({overscaledTileID:X,applyGlobeMatrix:!w,applyTerrainMatrix:!0}),te=B?Tl(v,d,B,{tileID:X,tileSize:z},G):wn(v,y),se=(f=d.style.map.terrain)===null||f===void 0?void 0:f.getTerrainData(X),le=E.getMeshFromTileID(S,X.canonical,!1,!0,"raster");Y.draw(S,P.TRIANGLES,U,$,Z,tt.backCCW,te,se,W,n.id,le.vertexBuffer,le.indexBuffer,le.segments)}},sky:function(d,t){let n=d.context,s=n.gl,c=((P,E,C)=>{let z=Math.cos(E.rollInRadians),B=Math.sin(E.rollInRadians),j=cn(E),$=E.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return{u_sky_color:P.properties.get("sky-color"),u_horizon_color:P.properties.get("horizon-color"),u_horizon:[(E.width/2-j*B)*C,(E.height/2+j*z)*C],u_horizon_normal:[-B,z],u_sky_horizon_blend:P.properties.get("sky-horizon-blend")*E.height/2*C,u_sky_blend:$}})(t,d.style.map.transform,d.pixelRatio),f=new $e(s.LEQUAL,$e.ReadWrite,[0,1]),y=rt.disabled,v=d.colorModeForRenderPass(),w=d.useProgram("sky"),S=Rl(n,t);w.draw(n,s.TRIANGLES,f,y,v,tt.disabled,c,null,void 0,"sky",S.vertexBuffer,S.indexBuffer,S.segments)},atmosphere:function(d,t,n){let s=d.context,c=s.gl,f=d.useProgram("atmosphere"),y=new $e(c.LEQUAL,$e.ReadOnly,[0,1]),v=d.transform,w=(function($,U){let Z=$.properties.get("position"),Y=[-Z.x,-Z.y,-Z.z],q=h.ap(new Float64Array(16));return $.properties.get("anchor")==="map"&&(h.be(q,q,U.rollInRadians),h.bf(q,q,-U.pitchInRadians),h.be(q,q,U.bearingInRadians),h.bf(q,q,U.center.lat*Math.PI/180),h.bI(q,q,-U.center.lng*Math.PI/180)),h.cg(Y,Y,q),Y})(n,d.transform),S=v.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),P=t.properties.get("atmosphere-blend")*S.projectionTransition;if(P===0)return;let E=Oi(v.worldSize,v.center.lat),C=v.inverseProjectionMatrix,z=new Float64Array(4);z[3]=1,h.aE(z,z,v.modelViewProjectionMatrix),z[0]/=z[3],z[1]/=z[3],z[2]/=z[3],z[3]=1,h.aE(z,z,C),z[0]/=z[3],z[1]/=z[3],z[2]/=z[3],z[3]=1;let B=(($,U,Z,Y,q)=>({u_sun_pos:$,u_atmosphere_blend:U,u_globe_position:Z,u_globe_radius:Y,u_inv_proj_matrix:q}))(w,P,[z[0],z[1],z[2]],E,C),j=Rl(s,t);f.draw(s,c.TRIANGLES,y,rt.disabled,gt.alphaBlended,tt.disabled,B,null,null,"atmosphere",j.vertexBuffer,j.indexBuffer,j.segments)},custom:function(d,t,n,s){let{isRenderingGlobe:c}=s,f=d.context,y=n.implementation,v=d.style.projection,w=d.transform,S=w.getProjectionDataForCustomLayer(c),P={farZ:w.farZ,nearZ:w.nearZ,fov:w.fov*Math.PI/180,modelViewProjectionMatrix:w.modelViewProjectionMatrix,projectionMatrix:w.projectionMatrix,shaderData:{variantName:v.shaderVariantName,vertexShaderPrelude:`const float PI = 3.141592653589793; +uniform mat4 u_projection_matrix; +${v.shaderPreludeCode.vertexSource}`,define:v.shaderDefine},defaultProjectionData:S},E=y.renderingMode?y.renderingMode:"2d";if(d.renderPass==="offscreen"){let C=y.prerender;C&&(d.setCustomLayerDefaults(),f.setColorMode(d.colorModeForRenderPass()),C.call(y,f.gl,P),f.setDirty(),d.setBaseState())}else if(d.renderPass==="translucent"){d.setCustomLayerDefaults(),f.setColorMode(d.colorModeForRenderPass()),f.setStencilMode(rt.disabled);let C=E==="3d"?d.getDepthModeFor3D():d.getDepthModeForSublayer(0,$e.ReadOnly);f.setDepthMode(C),y.render(f.gl,P),f.setDirty(),d.setBaseState(),f.bindFramebuffer.set(null)}},debug:function(d,t,n){for(let s of n)hu(d,t,s)},debugPadding:function(d){let t=d.transform.padding;Dl(d,d.transform.height-(t.top||0),3,su),Dl(d,t.bottom||0,3,lu),zl(d,t.left||0,3,cu),zl(d,d.transform.width-(t.right||0),3,uu);let n=d.transform.centerPoint;(function(s,c,f,y){Jo(s,c-1,f-10,2,20,y),Jo(s,c-10,f-1,20,2,y)})(d,n.x,d.transform.height-n.y,Zr)},terrainDepth:function(d,t){let n=d.context,s=n.gl,c=d.transform,f=gt.unblended,y=new $e(s.LEQUAL,$e.ReadWrite,[0,1]),v=t.tileManager.getRenderableTiles(),w=d.useProgram("terrainDepth");n.bindFramebuffer.set(t.getFramebuffer("depth").framebuffer),n.viewport.set([0,0,d.width/devicePixelRatio,d.height/devicePixelRatio]),n.clear({color:h.bo.transparent,depth:1});for(let S of v){let P=t.getTerrainMesh(S.tileID),E=t.getTerrainData(S.tileID),C=c.getProjectionData({overscaledTileID:S.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),z={u_ele_delta:t.getMeshFrameDelta(c.zoom)};w.draw(n,s.TRIANGLES,y,rt.disabled,f,tt.backCCW,z,E,C,"terrain",P.vertexBuffer,P.indexBuffer,P.segments)}n.bindFramebuffer.set(null),n.viewport.set([0,0,d.width,d.height])},terrainCoords:function(d,t){let n=d.context,s=n.gl,c=d.transform,f=gt.unblended,y=new $e(s.LEQUAL,$e.ReadWrite,[0,1]),v=t.getCoordsTexture(),w=t.tileManager.getRenderableTiles(),S=d.useProgram("terrainCoords");n.bindFramebuffer.set(t.getFramebuffer("coords").framebuffer),n.viewport.set([0,0,d.width/devicePixelRatio,d.height/devicePixelRatio]),n.clear({color:h.bo.transparent,depth:1}),t.coordsIndex=[];for(let P of w){let E=t.getTerrainMesh(P.tileID),C=t.getTerrainData(P.tileID);n.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,v.texture);let z={u_terrain_coords_id:(255-t.coordsIndex.length)/255,u_texture:0,u_ele_delta:t.getMeshFrameDelta(c.zoom)},B=c.getProjectionData({overscaledTileID:P.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});S.draw(n,s.TRIANGLES,y,rt.disabled,f,tt.backCCW,z,C,B,"terrain",E.vertexBuffer,E.indexBuffer,E.segments),t.coordsIndex.push(P.tileID.key)}n.bindFramebuffer.set(null),n.viewport.set([0,0,d.width,d.height])}};class Qo{constructor(t,n){this.drawFunctions=du,this.context=new is(t),this.transform=n,this._tileTextures={},this.terrainFacilitator={depthDirty:!0,coordsDirty:!1,matrix:h.ap(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=ri.maxOverzooming+ri.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Ci}resize(t,n,s){if(this.width=Math.floor(t*s),this.height=Math.floor(n*s),this.pixelRatio=s,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let c of this.style._order)this.style._layers[c].resize()}setup(){let t=this.context,n=new h.aU;n.emplaceBack(0,0),n.emplaceBack(h.a6,0),n.emplaceBack(0,h.a6),n.emplaceBack(h.a6,h.a6),this.tileExtentBuffer=t.createVertexBuffer(n,Ur.members),this.tileExtentSegments=h.aV.simpleSegment(0,0,4,2);let s=new h.aU;s.emplaceBack(0,0),s.emplaceBack(h.a6,0),s.emplaceBack(0,h.a6),s.emplaceBack(h.a6,h.a6),this.debugBuffer=t.createVertexBuffer(s,Ur.members),this.debugSegments=h.aV.simpleSegment(0,0,4,5);let c=new h.ch;c.emplaceBack(0,0,0,0),c.emplaceBack(h.a6,0,h.a6,0),c.emplaceBack(0,h.a6,0,h.a6),c.emplaceBack(h.a6,h.a6,h.a6,h.a6),this.rasterBoundsBuffer=t.createVertexBuffer(c,No.members),this.rasterBoundsSegments=h.aV.simpleSegment(0,0,4,2);let f=new h.aU;f.emplaceBack(0,0),f.emplaceBack(h.a6,0),f.emplaceBack(0,h.a6),f.emplaceBack(h.a6,h.a6),this.rasterBoundsBufferPosOnly=t.createVertexBuffer(f,Ur.members),this.rasterBoundsSegmentsPosOnly=h.aV.simpleSegment(0,0,4,5);let y=new h.aU;y.emplaceBack(0,0),y.emplaceBack(1,0),y.emplaceBack(0,1),y.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(y,Ur.members),this.viewportSegments=h.aV.simpleSegment(0,0,4,2);let v=new h.ci;v.emplaceBack(0),v.emplaceBack(1),v.emplaceBack(3),v.emplaceBack(2),v.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(v);let w=new h.aW;w.emplaceBack(1,0,2),w.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(w);let S=this.context.gl;this.stencilClearMode=new rt({func:S.ALWAYS,mask:0},0,255,S.ZERO,S.ZERO,S.ZERO),this.tileExtentMesh=new mt(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}clearStencil(){let t=this.context,n=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let s=h.O();h.c7(s,0,this.width,this.height,0,0,1),h.S(s,s,[n.drawingBufferWidth,n.drawingBufferHeight,0]);let c={mainMatrix:s,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:s};this.useProgram("clippingMask",null,!0).draw(t,n.TRIANGLES,$e.disabled,this.stencilClearMode,gt.disabled,tt.disabled,null,null,c,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,n,s){if(this.currentStencilSource===t.source||!t.isTileClipped()||!n?.length)return;this.currentStencilSource=t.source,this.nextStencilID+n.length>256&&this.clearStencil();let c=this.context;c.setColorMode(gt.disabled),c.setDepthMode($e.disabled);let f={};for(let y of n)f[y.key]=this.nextStencilID++;this._renderTileMasks(f,n,s,!0),this._renderTileMasks(f,n,s,!1),this._tileClippingMaskIDs=f}_renderTileMasks(t,n,s,c){var f;let y=this.context,v=y.gl,w=this.style.projection,S=this.transform,P=this.useProgram("clippingMask");for(let E of n){let C=t[E.key],z=(f=this.style.map.terrain)===null||f===void 0?void 0:f.getTerrainData(E),B=w.getMeshFromTileID(this.context,E.canonical,c,!0,"stencil"),j=S.getProjectionData({overscaledTileID:E,applyGlobeMatrix:!s,applyTerrainMatrix:!0});P.draw(y,v.TRIANGLES,$e.disabled,new rt({func:v.ALWAYS,mask:0},C,255,v.KEEP,v.KEEP,v.REPLACE),gt.disabled,s?tt.disabled:tt.backCCW,null,z,j,"$clipping",B.vertexBuffer,B.indexBuffer,B.segments)}}_renderTilesDepthBuffer(){var t;let n=this.context,s=n.gl,c=this.style.projection,f=this.transform,y=this.useProgram("depth"),v=this.getDepthModeFor3D(),w=un(f,{tileSize:f.tileSize});for(let S of w){let P=(t=this.style.map.terrain)===null||t===void 0?void 0:t.getTerrainData(S),E=c.getMeshFromTileID(this.context,S.canonical,!0,!0,"raster"),C=f.getProjectionData({overscaledTileID:S,applyGlobeMatrix:!0,applyTerrainMatrix:!0});y.draw(n,s.TRIANGLES,v,rt.disabled,gt.disabled,tt.backCCW,null,P,C,"$clipping",E.vertexBuffer,E.indexBuffer,E.segments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let t=this.nextStencilID++,n=this.context.gl;return new rt({func:n.NOTEQUAL,mask:255},t,255,n.KEEP,n.KEEP,n.REPLACE)}stencilModeForClipping(t){let n=this.context.gl;return new rt({func:n.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,n.KEEP,n.KEEP,n.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(t){let n=this.context.gl,s=t.sort(((y,v)=>v.overscaledZ-y.overscaledZ)),c=s[s.length-1].overscaledZ,f=s[0].overscaledZ-c+1;if(f>1){this.currentStencilSource=void 0,this.nextStencilID+f>256&&this.clearStencil();let y={};for(let v=0;vv.overscaledZ-y.overscaledZ)),c=s[s.length-1].overscaledZ,f=s[0].overscaledZ-c+1;if(this.clearStencil(),f>1){let y={},v={};for(let w=0;w0};for(let z in v){let B=v[z];B.used&&B.prepare(this.context),w[z]=B.getVisibleCoordinates(!1),S[z]=w[z].slice().reverse(),P[z]=B.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let z=0;zthis.useProgram(z)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:n.showOverdrawInspector?h.bo.black:h.bo.transparent,depth:1}),this.clearStencil(),this.style.sky&&this.drawFunctions.sky(this,this.style.sky),this._showOverdrawInspector=n.showOverdrawInspector,this.depthRangeFor3D=[0,1-(t._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=y.length-1;this.currentLayer>=0;this.currentLayer--){let z=this.style._layers[y[this.currentLayer]],B=v[z.source],j=w[z.source];this._renderTileClippingMasks(z,j,!1),this.renderLayer(this,B,z,j,E)}this.renderPass="translucent";let C=!1;for(this.currentLayer=0;this.currentLayerG.source&&!G.isHidden(j)?[B.tileManagers[G.source]]:[])),Z=U.filter((G=>G.getSource().type==="vector")),Y=U.filter((G=>G.getSource().type!=="vector")),q=G=>{(!$||$.getSource().maxzoom0?n.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;let n=this.imageManager.getPattern(t.from.toString()),s=this.imageManager.getPattern(t.to.toString());return!n||!s}useProgram(t,n,s=!1,c=[]){var f;this.cache||(this.cache={});let y=!!this.style.map.terrain,v=this.style.projection,w=s?wt.projectionMercator:v.shaderPreludeCode,S=s?_i:v.shaderDefine,P=t+(n?n.cacheKey:"")+`/${s?Bi:v.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(y?"/terrain":"")+(c?`/${c.join("/")}`:"");return(f=this.cache)[P]||(f[P]=new mh(this.context,wt[t],n,xh[t],this._showOverdrawInspector,y,w,S,c)),this.cache[P]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new h.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){var t,n;if(this._tileTextures){for(let s in this._tileTextures){let c=this._tileTextures[s];if(c)for(let f of c)f.destroy()}this._tileTextures={}}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&((t=this.tileExtentMesh.vertexBuffer)===null||t===void 0||t.destroy()),this.tileExtentMesh&&((n=this.tileExtentMesh.indexBuffer)===null||n===void 0||n.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(let s in this.cache){let c=this.cache[s];c?.program&&this.context.gl.deleteProgram(c.program)}this.cache={}}this.context&&this.context.setDefault()}overLimit(){let{drawingBufferWidth:t,drawingBufferHeight:n}=this.context.gl;return this.width!==t||this.height!==n}}function Ll(d,t){let n,s=!1,c=null,f=()=>{c=null,s&&(d(...n),c=setTimeout(f,t),s=!1)};return(...y)=>(s=!0,n=y,c||f(),c)}Qo.MAX_TEXTURE_POOL_SIZE_PER_BUCKET=50;class ea{constructor(t){this._getCurrentHash=()=>{let n=window.location.hash.replace("#","");if(this._hashName){let s,c=n.split("&").map((f=>f.split("=")));for(let f of c)f[0]===this._hashName&&(s=f);return(s&&s[1]||"").split("/")}return n.split("/")},this._onHashChange=()=>{let n=this._getCurrentHash();if(!this._isValidHash(n))return!1;let s=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(n[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+n[2],+n[1]],zoom:+n[0],bearing:s,pitch:+(n[4]||0)}),!0},this._updateHashUnthrottled=()=>{let n=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,n)},this._removeHash=()=>{let n=this._getCurrentHash();if(n.length===0)return;let s=n.join("/"),c=s;c.split("&").length>0&&(c=c.split("&")[0]),this._hashName&&(c=`${this._hashName}=${s}`);let f=window.location.hash.replace(c,"");f.startsWith("#&")?f=f.slice(0,1)+f.slice(2):f==="#"&&(f="");let y=window.location.href.replace(/(#.+)?$/,f);y=y.replace("&&","&"),window.history.replaceState(window.history.state,null,y)},this._updateHash=Ll(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t)}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(t){let n=this._map.getCenter(),s=Math.round(100*this._map.getZoom())/100,c=Math.ceil((s*Math.LN2+Math.log(512/360/.5))/Math.LN10),f=Math.pow(10,c),y=Math.round(n.lng*f)/f,v=Math.round(n.lat*f)/f,w=this._map.getBearing(),S=this._map.getPitch(),P="";if(P+=t?`/${y}/${v}/${s}`:`${s}/${v}/${y}`,(w||S)&&(P+="/"+Math.round(10*w)/10),S&&(P+=`/${Math.round(S)}`),this._hashName){let E=this._hashName,C=!1,z=window.location.hash.slice(1).split("&").map((B=>{let j=B.split("=")[0];return j===E?(C=!0,`${j}=${P}`):B})).filter((B=>B));return C||z.push(`${E}=${P}`),`#${z.join("&")}`}return`#${P}`}_isValidHash(t){if(t.length<3||t.some(isNaN))return!1;try{new h.W(+t[2],+t[1])}catch{return!1}let n=+t[0],s=+(t[3]||0),c=+(t[4]||0);return n>=this._map.getMinZoom()&&n<=this._map.getMaxZoom()&&s>=-180&&s<=180&&c>=this._map.getMinPitch()&&c<=this._map.getMaxPitch()}}let ho={linearity:.3,easing:h.cv(0,0,.3,1)},Yi=h.e({deceleration:2500,maxSpeed:1400},ho),sr=h.e({deceleration:20,maxSpeed:1400},ho),pu=h.e({deceleration:1e3,maxSpeed:360},ho),lr=h.e({deceleration:1e3,maxSpeed:90},ho),Ch=h.e({deceleration:1e3,maxSpeed:360},ho);class Ah{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:Xe(),settings:t})}_drainInertiaBuffer(){let t=this._inertiaBuffer,n=Xe();for(;t.length>0&&n-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let n={zoom:0,bearing:0,pitch:0,roll:0,pan:new h.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:f}of this._inertiaBuffer)n.zoom+=f.zoomDelta||0,n.bearing+=f.bearingDelta||0,n.pitch+=f.pitchDelta||0,n.roll+=f.rollDelta||0,f.panDelta&&n.pan._add(f.panDelta),f.around&&(n.around=f.around),f.pinchAround&&(n.pinchAround=f.pinchAround);let s=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,c={};if(n.pan.mag()){let f=fr(n.pan.mag(),s,h.e({},Yi,t||{})),y=n.pan.mult(f.amount/n.pan.mag()),v=this._map.cameraHelper.handlePanInertia(y,this._map.transform);c.center=v.easingCenter,c.offset=v.easingOffset,ta(c,f)}if(n.zoom){let f=fr(n.zoom,s,sr);c.zoom=h.cw(this._map.transform.zoom+f.amount,this._map.getZoomSnap(),f.amount),ta(c,f)}if(n.bearing){let f=fr(n.bearing,s,pu);c.bearing=this._map.transform.bearing+h.al(f.amount,-179,179),ta(c,f)}if(n.pitch){let f=fr(n.pitch,s,lr);c.pitch=this._map.transform.pitch+f.amount,ta(c,f)}if(n.roll){let f=fr(n.roll,s,Ch);c.roll=this._map.transform.roll+h.al(f.amount,-179,179),ta(c,f)}if(c.zoom||c.bearing){let f=n.pinchAround===void 0?n.around:n.pinchAround;c.around=f?this._map.unproject(f):this._map.getCenter()}return this.clear(),h.e(c,{noMoveStart:!0})}}function ta(d,t){(!d.duration||d.durationn.unproject(w))),v=f.reduce(((w,S,P,E)=>w.add(S.div(E.length))),new h.P(0,0));super(t,{points:f,point:v,lngLats:y,lngLat:n.unproject(v),originalEvent:s}),this._defaultPrevented=!1}}class fu extends h.n{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,s){super(t,{originalEvent:s}),this._defaultPrevented=!1}}class Dh{constructor(t,n){this._map=t,this._clickTolerance=n.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new fu(t.type,this._map,t))}mousedown(t,n){return this._mousedownPos=n,this._firePreventable(new ji(t.type,this._map,t))}mouseup(t){this._map.fire(new ji(t.type,this._map,t))}click(t,n){this._mousedownPos&&this._mousedownPos.dist(n)>=this._clickTolerance||this._map.fire(new ji(t.type,this._map,t))}dblclick(t){return this._firePreventable(new ji(t.type,this._map,t))}mouseover(t){this._map.fire(new ji(t.type,this._map,t))}mouseout(t){this._map.fire(new ji(t.type,this._map,t))}touchstart(t){return this._firePreventable(new ia(t.type,this._map,t))}touchmove(t){this._map.fire(new ia(t.type,this._map,t))}touchend(t){this._map.fire(new ia(t.type,this._map,t))}touchcancel(t){this._map.fire(new ia(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class mu{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new ji(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ji("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new ji(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Tr{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(t){return this.transform.screenPointToLocation(h.P.convert(t),this._map.terrain)}}class mr{constructor(t,n){this._map=t,this._tr=new Tr(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=n.clickTolerance||1,n.boxZoom&&typeof n.boxZoom=="object"&&(this._boxZoomEnd=n.boxZoom.boxZoomEnd)}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,n){this.isEnabled()&&t.shiftKey&&t.button===0&&(_e.disableDrag(),this._startPos=this._lastPos=n,this._active=!0)}mousemoveWindow(t,n){if(!this._active)return;let s=n;if(this._lastPos.equals(s)||!this._box&&s.dist(this._startPos)f.fitScreenCoordinates(s,c,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(this._box.remove(),this._box=null),_e.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,n){return this._map.fire(new h.n(t,{originalEvent:n}))}}function Ee(d,t){if(d.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${d.length}, points ${t.length}`);let n={};for(let s=0;sthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=t.timeStamp),s.length===this.numTouches&&(this.centroid=(function(c){let f=new h.P(0,0);for(let y of c)f._add(y);return f.div(c.length)})(n),this.touches=Ee(s,n)))}touchmove(t,n,s){if(this.aborted||!this.centroid)return;let c=Ee(s,n);for(let f in this.touches){let y=c[f];(!y||y.dist(this.touches[f])>30)&&(this.aborted=!0)}}touchend(t,n,s){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),s.length===0){let c=!this.aborted&&this.centroid;if(this.reset(),c)return c}}}class ra{constructor(t){this.singleTap=new gu(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,n,s){this.singleTap.touchstart(t,n,s)}touchmove(t,n,s){this.singleTap.touchmove(t,n,s)}touchend(t,n,s){let c=this.singleTap.touchend(t,n,s);if(c){let f=t.timeStamp-this.lastTime<500,y=!this.lastTap||this.lastTap.dist(c)<30;if(f&&y||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=c,this.count===this.numTaps)return this.reset(),c}}}class _u{constructor(t){this._tr=new Tr(t),this._zoomIn=new ra({numTouches:1,numTaps:2}),this._zoomOut=new ra({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,n,s){this._zoomIn.touchstart(t,n,s),this._zoomOut.touchstart(t,n,s)}touchmove(t,n,s){this._zoomIn.touchmove(t,n,s),this._zoomOut.touchmove(t,n,s)}touchend(t,n,s){let c=this._zoomIn.touchend(t,n,s),f=this._zoomOut.touchend(t,n,s),y=this._tr;return c?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:v=>v.easeTo({duration:300,zoom:h.cw(y.zoom+1,v.getZoomSnap()),around:y.unproject(c)},{originalEvent:t})}):f?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:v=>v.easeTo({duration:300,zoom:h.cw(y.zoom-1,v.getZoomSnap()),around:y.unproject(f)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Sr{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset()}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t)}_move(...t){let n=this._moveFunction(...t);if(n.bearingDelta||n.pitchDelta||n.rollDelta||n.around||n.panDelta)return this._active=!0,n}dragStart(t,n){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=Array.isArray(n)?n[0]:n,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,n){if(!this.isEnabled())return;let s=this._lastPoint;if(!s)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);let c=Array.isArray(n)?n[0]:n;return!this._moved&&c.dist(s)!0}),n=new yu){this.mouseMoveStateManager=t,this.oneFingerTouchMoveStateManager=n}_executeRelevantHandler(t,n,s){return t instanceof MouseEvent?n(t):typeof TouchEvent<"u"&&t instanceof TouchEvent?s(t):void 0}startMove(t){this._executeRelevantHandler(t,(n=>{this.mouseMoveStateManager.startMove(n)}),(n=>{this.oneFingerTouchMoveStateManager.startMove(n)}))}endMove(t){this._executeRelevantHandler(t,(n=>{this.mouseMoveStateManager.endMove(n)}),(n=>{this.oneFingerTouchMoveStateManager.endMove(n)}))}isValidStartEvent(t){return this._executeRelevantHandler(t,(n=>this.mouseMoveStateManager.isValidStartEvent(n)),(n=>this.oneFingerTouchMoveStateManager.isValidStartEvent(n)))}isValidMoveEvent(t){return this._executeRelevantHandler(t,(n=>this.mouseMoveStateManager.isValidMoveEvent(n)),(n=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(n)))}isValidEndEvent(t){return this._executeRelevantHandler(t,(n=>this.mouseMoveStateManager.isValidEndEvent(n)),(n=>this.oneFingerTouchMoveStateManager.isValidEndEvent(n)))}}let as=d=>{d.mousedown=d.dragStart,d.mousemoveWindow=d.dragMove,d.mouseup=d.dragEnd,d.contextmenu=t=>{t.preventDefault()}};class xu{constructor(t,n){this._clickTolerance=t.clickTolerance||1,this._map=n,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new h.P(0,0)}_shouldBePrevented(t){return t<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(t,n,s){return this._calculateTransform(t,n,s)}touchmove(t,n,s){if(this._active){if(!this._shouldBePrevented(s.length))return t.preventDefault(),this._calculateTransform(t,n,s);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",t)}}touchend(t,n,s){this._calculateTransform(t,n,s),this._active&&this._shouldBePrevented(s.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,n,s){s.length>0&&(this._active=!0);let c=Ee(s,n),f=new h.P(0,0),y=new h.P(0,0),v=0;for(let S in c){let P=c[S],E=this._touches[S];E&&(f._add(P),y._add(P.sub(E)),v++,c[S]=P)}if(this._touches=c,this._shouldBePrevented(v)||!y.mag())return;let w=y.div(v);return this._sum._add(w),this._sum.mag()Math.abs(d.x)}class Pr extends Ol{constructor(t){super(),this._currentTouchCount=0,this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,n,s){super.touchstart(t,n,s),this._currentTouchCount=s.length}_start(t){this._lastPoints=t,Nl(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,n,s){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let c=t[0].sub(this._lastPoints[0]),f=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(c,f,s.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(c.y+f.y)/2*-.5}):void 0}gestureBeginsVertically(t,n,s){if(this._valid!==void 0)return this._valid;let c=t.mag()>=2,f=n.mag()>=2;if(!c&&!f)return;if(!c||!f)return this._firstMove===void 0&&(this._firstMove=s),s-this._firstMove<100&&void 0;let y=t.y>0==n.y>0;return Nl(t)&&Nl(n)&&y}}let _t={panStep:100,bearingStep:15,pitchStep:10};class wu{constructor(t){this._tr=new Tr(t);let n=_t;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let n=0,s=0,c=0,f=0,y=0;switch(t.keyCode){case 61:case 107:case 171:case 187:n=1;break;case 189:case 109:case 173:n=-1;break;case 37:t.shiftKey?s=-1:(t.preventDefault(),f=-1);break;case 39:t.shiftKey?s=1:(t.preventDefault(),f=1);break;case 38:t.shiftKey?c=1:(t.preventDefault(),y=-1);break;case 40:t.shiftKey?c=-1:(t.preventDefault(),y=1);break;default:return}return this._rotationDisabled&&(s=0,c=0),{cameraAnimation:v=>{let w=this._tr;v.easeTo({duration:300,easeId:"keyboardHandler",easing:ls,zoom:n?h.cw(w.zoom+n*(t.shiftKey?2:1),v.getZoomSnap()):w.zoom,bearing:w.bearing+s*this._bearingStep,pitch:w.pitch+c*this._pitchStep,offset:[-f*this._panStep,-y*this._panStep],center:w.center},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function ls(d){return d*(2-d)}let oa=4.000244140625,Ul=1/450;class Gl{constructor(t,n){this._onTimeout=s=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(s)},this._map=t,this._tr=new Tr(t),this._triggerRenderFrame=n,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Ul}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&t.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(t){return!!this._map.cooperativeGestures.isEnabled()&&!(t.ctrlKey||this._map.cooperativeGestures.isBypassed(t))}wheel(t){if(!this.isEnabled())return;if(this._shouldBePrevented(t))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",t);let n=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY,s=Xe(),c=s-(this._lastWheelEventTime||0);this._lastWheelEventTime=s,n!==0&&n%oa==0?this._type="wheel":n!==0&&Math.abs(n)<4?this._type="trackpad":c>400?(this._type=null,this._lastValue=n,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(c*n)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,n+=this._lastValue)),t.shiftKey&&n&&(n/=4),this._type&&(this._lastWheelEvent=t,this._delta-=n,this._active||this._start(t)),t.preventDefault()}_start(t){if(!this._delta)return;this._needsRerender=!1,this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let n=_e.mousePos(this._map.getCanvas(),t),s=this._tr;this._aroundPoint=this._aroundCenter?s.transform.locationToScreenPoint(h.W.convert(s.center)):n,this._needsRerender||(this._needsRerender=!0,this._triggerRenderFrame())}renderFrame(){if(!this._needsRerender||(this._needsRerender=!1,!this.isActive()))return;let t=this._tr.transform;if(typeof this._lastExpectedZoom=="number"){let v=t.zoom-this._lastExpectedZoom;typeof this._startZoom=="number"&&(this._startZoom+=v),typeof this._targetZoom=="number"&&(this._targetZoom+=v)}if(this._delta!==0){let v=this._type==="wheel"&&Math.abs(this._delta)>oa?this._wheelZoomRate:this._defaultZoomRate,w=2/(1+Math.exp(-Math.abs(this._delta*v)));this._delta<0&&w!==0&&(w=1/w);let S=typeof this._targetZoom!="number"?t.scale:h.ao(this._targetZoom),P=t.applyConstrain(t.getCameraLngLat(),h.ar(S*w)).zoom,E=this._map.getZoomSnap();if(this._type==="wheel"&&E>0){let C=h.cw(t.zoom,E);this._targetZoom=h.cw(P,E,P-C)}else this._targetZoom=P;this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let n=typeof this._targetZoom!="number"?t.zoom:this._targetZoom,s=this._startZoom,c=this._easing,f,y=!1;if(this._type==="wheel"&&s&&c){let v=Xe()-this._lastWheelEventTime,w=Math.min((v+5)/200,1),S=c(w);f=h.H.number(s,n,S),w<1?this._needsRerender=!0:y=!0}else f=n,y=!0;return this._active=!0,y&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout}),200)),this._lastExpectedZoom=f,{noInertia:!0,needsRenderFrame:!y,zoomDelta:f-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let n=h.cy;if(this._prevEase){let s=this._prevEase,c=(Xe()-s.start)/s.duration,f=s.easing(c+.01)-s.easing(c),y=.27/Math.sqrt(f*f+1e-4)*.01,v=Math.sqrt(.0729-y*y);n=h.cv(y,v,.25,1)}return this._prevEase={start:Xe(),duration:t,easing:n},n}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class $l{constructor(t,n){this._clickZoom=t,this._tapZoom=n}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Tu{constructor(t){this._tr=new Tr(t),this.reset()}reset(){this._active=!1}dblclick(t,n){return t.preventDefault(),{cameraAnimation:s=>{s.easeTo({duration:300,zoom:h.cw(this._tr.zoom+(t.shiftKey?-1:1),s.getZoomSnap()),around:this._tr.unproject(n)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class kh{constructor(){this._tap=new ra({numTouches:1,numTaps:1}),this._zoomRate=1,this.reset()}setZoomRate(t){this._zoomRate=t??1}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(t,n,s){if(!this._swipePoint)if(this._tapTime){let c=n[0],f=t.timeStamp-this._tapTime<500,y=this._tapPoint.dist(c)<30;f&&y?s.length>0&&(this._swipePoint=c,this._swipeTouch=s[0].identifier):this.reset()}else this._tap.touchstart(t,n,s)}touchmove(t,n,s){if(this._tapTime){if(this._swipePoint){if(s[0].identifier!==this._swipeTouch)return;let c=n[0],f=c.y-this._swipePoint.y;return this._swipePoint=c,t.preventDefault(),this._active=!0,{zoomDelta:f/128*this._zoomRate}}}else this._tap.touchmove(t,n,s)}touchend(t,n,s){if(this._tapTime)this._swipePoint&&s.length===0&&this.reset();else{let c=this._tap.touchend(t,n,s);c&&(this._tapTime=t.timeStamp,this._tapPoint=c)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class cr{constructor(t,n,s){this._el=t,this._mousePan=n,this._touchPan=s}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class aa{constructor(t,n,s,c){this._pitchWithRotate=t.pitchWithRotate,this._rollEnabled=t.rollEnabled,this._mouseRotate=n,this._mousePitch=s,this._mouseRoll=c}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class De{constructor(t,n,s,c){this._el=t,this._touchZoom=n,this._touchRotate=s,this._tapDragZoom=c,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}setZoomRate(t){this._touchZoom.setZoomRate(t),this._tapDragZoom.setZoomRate(t)}setZoomThreshold(t){this._touchZoom.setZoomThreshold(t)}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class Re{constructor(t,n){this._bypassKey=navigator.userAgent.includes("Mac")?"metaKey":"ctrlKey",this._map=t,this._options=n,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let t=this._map.getCanvasContainer();t.classList.add("maplibregl-cooperative-gestures"),this._container=_e.create("div","maplibregl-cooperative-gesture-screen",t);let n=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(n=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let s=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),c=document.createElement("div");c.className="maplibregl-desktop-message",c.textContent=n,this._container.appendChild(c);let f=document.createElement("div");f.className="maplibregl-mobile-message",f.textContent=s,this._container.appendChild(f),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(this._container.remove(),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(t){return t[this._bypassKey]}notifyGestureBlocked(t,n){this._enabled&&(this._map.fire(new h.n("cooperativegestureprevented",{gestureType:t,originalEvent:n})),this._container.classList.add("maplibregl-show"),setTimeout((()=>{this._container.classList.remove("maplibregl-show")}),100))}}let qr=d=>d.zoom||d.drag||d.roll||d.pitch||d.rotate;class Su extends h.n{}function po(d){var t;return((t=d.panDelta)===null||t===void 0?void 0:t.mag())||d.zoomDelta||d.bearingDelta||d.pitchDelta||d.rollDelta}class xi{get _ownerDocument(){var t;return((t=this._el)===null||t===void 0?void 0:t.ownerDocument)||document}get _ownerWindow(){var t,n;return((n=(t=this._el)===null||t===void 0?void 0:t.ownerDocument)===null||n===void 0?void 0:n.defaultView)||window}constructor(t,n){this.handleWindowEvent=c=>{this.handleEvent(c,`${c.type}Window`)},this.handleEvent=(c,f)=>{if(c.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let y=c.type==="renderFrame"?void 0:c,v={needsRenderFrame:!1},w={},S={};for(let{handlerName:C,handler:z,allowed:B}of this._handlers){if(!z.isEnabled())continue;let j;if(this._blockedByActive(S,B,C))z.reset();else if(z[f||c.type]){if(h.cz(c,f||c.type)){let $=_e.mousePos(this._map.getCanvas(),c);j=z[f||c.type](c,$)}else if(h.cA(c,f||c.type)){let $=this._getMapTouches(c.touches),U=_e.touchPos(this._map.getCanvas(),$);j=z[f||c.type](c,U,$)}else h.cB(f||c.type)||(j=z[f||c.type](c));this.mergeHandlerResult(v,w,j,C,y),j?.needsRenderFrame&&this._triggerRenderFrame()}(j||z.isActive())&&(S[C]=z)}let P={};for(let C in this._previousActiveHandlers)S[C]||(P[C]=y);this._previousActiveHandlers=S,(Object.keys(P).length||po(v))&&(this._changes.push([v,w,P]),this._triggerRenderFrame()),(Object.keys(S).length||po(v))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:E}=v;E&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],E(this._map))},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Ah(t),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n);let s=this._el;this._listeners=[[s,"touchstart",{passive:!0}],[s,"touchmove",{passive:!1}],[s,"touchend",void 0],[s,"touchcancel",void 0],[s,"mousedown",void 0],[s,"mousemove",void 0],[s,"mouseup",void 0],[this._ownerDocument,"mousemove",{capture:!0}],[this._ownerDocument,"mouseup",void 0],[s,"mouseover",void 0],[s,"mouseout",void 0],[s,"dblclick",void 0],[s,"click",void 0],[s,"keydown",{capture:!1}],[s,"keyup",void 0],[s,"wheel",{passive:!1}],[s,"contextmenu",void 0],[this._ownerWindow,"blur",void 0]];for(let[c,f,y]of this._listeners)c.addEventListener(f,c===this._ownerDocument?this.handleWindowEvent:this.handleEvent,y)}destroy(){for(let[t,n,s]of this._listeners)t.removeEventListener(n,t===this._ownerDocument?this.handleWindowEvent:this.handleEvent,s)}_addDefaultHandlers(t){let n=this._map,s=n.getCanvasContainer();this._add("mapEvent",new Dh(n,t));let c=n.boxZoom=new mr(n,t);this._add("boxZoom",c),t.interactive&&t.boxZoom&&c.enable();let f=n.cooperativeGestures=new Re(n,t.cooperativeGestures);this._add("cooperativeGestures",f),t.cooperativeGestures&&f.enable();let y=new _u(n),v=new Tu(n);n.doubleClickZoom=new $l(v,y),this._add("tapZoom",y),this._add("clickZoom",v),t.interactive&&t.doubleClickZoom&&n.doubleClickZoom.enable();let w=new kh;this._add("tapDragZoom",w);let S=n.touchPitch=new Pr(n);this._add("touchPitch",S),t.interactive&&t.touchPitch&&n.touchPitch.enable(t.touchPitch);let P=()=>n.project(n.getCenter()),E=(function({enable:q,clickTolerance:G,aroundCenter:X=!0,minPixelCenterThreshold:W=100,rotateDegreesPerPixelMoved:te=.8},se){let le=new En({checkCorrectEvent:ge=>ge.button===0&&ge.ctrlKey||ge.button===2&&!ge.ctrlKey});return new Sr({clickTolerance:G,move:(ge,me)=>{let Ae=se();if(X&&Math.abs(Ae.y-ge.y)>W)return{bearingDelta:h.cx(new h.P(ge.x,me.y),me,Ae)};let Te=(me.x-ge.x)*te;return X&&me.yte.button===0&&te.ctrlKey||te.button===2});return new Sr({clickTolerance:G,move:(te,se)=>({pitchDelta:(se.y-te.y)*X}),moveStateManager:W,enable:q,assignEvents:as})})(t),z=(function({enable:q,clickTolerance:G,rollDegreesPerPixelMoved:X=.3},W){let te=new En({checkCorrectEvent:se=>se.button===2&&se.ctrlKey});return new Sr({clickTolerance:G,move:(se,le)=>{let ge=W(),me=(le.x-se.x)*X;return le.yW.button===0&&!W.ctrlKey});return new Sr({clickTolerance:G,move:(W,te)=>({around:te,panDelta:te.sub(W)}),activateOnStart:!0,moveStateManager:X,enable:q,assignEvents:as})})(t),j=new xu(t,n);n.dragPan=new cr(s,B,j),this._add("mousePan",B),this._add("touchPan",j,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&n.dragPan.enable(t.dragPan);let $=new bu,U=new vu;n.touchZoomRotate=new De(s,U,$,w),this._add("touchRotate",$,["touchPan","touchZoom"]),this._add("touchZoom",U,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&n.touchZoomRotate.enable(t.touchZoomRotate),this._add("blockableMapEvent",new mu(n));let Z=n.scrollZoom=new Gl(n,(()=>this._triggerRenderFrame()));this._add("scrollZoom",Z,["mousePan"]),t.interactive&&t.scrollZoom&&n.scrollZoom.enable(t.scrollZoom);let Y=n.keyboard=new wu(n);this._add("keyboard",Y),t.interactive&&t.keyboard&&n.keyboard.enable()}_add(t,n,s){this._handlers.push({handlerName:t,handler:n,allowed:s}),this._handlersById[t]=n}stop(t){if(!this._updatingCamera){for(let{handler:n}of this._handlers)n.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[]}}isActive(){for(let{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!qr(this._eventsInProgress)||this.isZooming()}_blockedByActive(t,n,s){for(let c in t)if(c!==s&&!n?.includes(c))return!0;return!1}_getMapTouches(t){let n=[];for(let s of t)this._el.contains(s.target)&&n.push(s);return n}mergeHandlerResult(t,n,s,c,f){if(!s)return;h.e(t,s);let y={handlerName:c,originalEvent:s.originalEvent||f};s.zoomDelta!==void 0&&(n.zoom=y),s.panDelta!==void 0&&(n.drag=y),s.rollDelta!==void 0&&(n.roll=y),s.pitchDelta!==void 0&&(n.pitch=y),s.bearingDelta!==void 0&&(n.rotate=y)}_applyChanges(){let t={},n={},s={};for(let[c,f,y]of this._changes)c.panDelta&&(t.panDelta=(t.panDelta||new h.P(0,0))._add(c.panDelta)),c.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+c.zoomDelta),c.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+c.bearingDelta),c.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+c.pitchDelta),c.rollDelta&&(t.rollDelta=(t.rollDelta||0)+c.rollDelta),c.around!==void 0&&(t.around=c.around),c.pinchAround!==void 0&&(t.pinchAround=c.pinchAround),c.noInertia&&(t.noInertia=c.noInertia),h.e(n,f),h.e(s,y);this._updateMapTransform(t,n,s),this._changes=[]}_updateMapTransform(t,n,s){let c=this._map,f=c._getTransformForUpdate(),y=c.terrain;if(!(po(t)||y&&this._terrainMovement))return void this._fireEvents(n,s,!0);c._stop(!0);let{panDelta:v,zoomDelta:w,bearingDelta:S,pitchDelta:P,rollDelta:E,around:C,pinchAround:z}=t;z!==void 0&&(C=z),C||(C=c.transform.centerPoint),y&&!f.isPointOnMapSurface(C)&&(C=f.centerPoint);let B={panDelta:v,zoomDelta:w,rollDelta:E,pitchDelta:P,bearingDelta:S,around:C};this._map.cameraHelper.useGlobeControls&&!f.isPointOnMapSurface(C)&&(C=f.centerPoint);let j=C.distSqr(f.centerPoint)<.01?f.center:f.screenPointToLocation(v?C.sub(v):C);this._handleMapControls({terrain:y,tr:f,deltasForHelper:B,preZoomAroundLoc:j,combinedEventsInProgress:n,panDelta:v}),c._applyUpdatedTransform(f),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,s,!0)}_handleMapControls({terrain:t,tr:n,deltasForHelper:s,preZoomAroundLoc:c,combinedEventsInProgress:f,panDelta:y}){let v=this._map.cameraHelper;if(v.handleMapControlsRollPitchBearingZoom(s,n),t)return v.useGlobeControls?(this._terrainMovement||!f.drag&&!f.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void v.handleMapControlsPan(s,n,c)):this._terrainMovement||!f.drag&&!f.zoom?void(f.drag&&this._terrainMovement&&y?n.setCenter(n.screenPointToLocation(n.centerPoint.sub(y))):v.handleMapControlsPan(s,n,c)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void v.handleMapControlsPan(s,n,c));v.handleMapControlsPan(s,n,c)}_fireEvents(t,n,s){let c=qr(this._eventsInProgress),f=qr(t),y={};for(let E in t){let{originalEvent:C}=t[E];this._eventsInProgress[E]||(y[`${E}start`]=C),this._eventsInProgress[E]=t[E]}!c&&f&&this._fireEvent("movestart",f.originalEvent);for(let E in y)this._fireEvent(E,y[E]);f&&this._fireEvent("move",f.originalEvent);for(let E in t){let{originalEvent:C}=t[E];this._fireEvent(E,C)}let v={},w;for(let E in this._eventsInProgress){let{handlerName:C,originalEvent:z}=this._eventsInProgress[E];this._handlersById[C].isActive()||(delete this._eventsInProgress[E],w=n[C]||z,v[`${E}end`]=w)}for(let E in v)this._fireEvent(E,v[E]);let S=qr(this._eventsInProgress),P=(c||f)&&!S;if(P&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let E=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&E.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(E)}if(s&&P){this._updatingCamera=!0;let E=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),C=z=>z!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Su("renderFrame",{timeStamp:t})),this._applyChanges()}))}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Pu extends h.E{constructor(t,n,s){super(),this._renderFrameCallback=()=>{let c=Math.min((Xe()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(c)),c<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=s.bearingSnap,this._zoomSnap=s.zoomSnap,this.cameraHelper=n,this.on("moveend",(()=>{delete this._requestedCameraState}))}migrateProjection(t,n){t.apply(this.transform,!0),this.transform=t,this.cameraHelper=n}getCenter(){return new h.W(this.transform.center.lng,this.transform.center.lat)}setCenter(t,n){return this.jumpTo({center:t},n)}getCenterElevation(){return this.transform.elevation}setCenterElevation(t,n){return this.jumpTo({elevation:t},n),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(t){this._centerClampedToGround=t}panBy(t,n,s){return t=h.P.convert(t).mult(-1),this.panTo(this.transform.center,h.e({offset:t},n),s)}panTo(t,n,s){return this.easeTo(h.e({center:t},n),s)}getZoom(){return this.transform.zoom}setZoom(t,n){return this.jumpTo({zoom:t},n),this}zoomTo(t,n,s){return this.easeTo(h.e({zoom:t},n),s)}zoomIn(t,n){return this.zoomTo(h.cw(this.getZoom()+1,this._zoomSnap),t,n),this}zoomOut(t,n){return this.zoomTo(h.cw(this.getZoom()-1,this._zoomSnap),t,n),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(t,n){return t!=this.transform.fov&&(this.transform.setFov(t),this.fire(new h.n("movestart",n)).fire(new h.n("move",n)).fire(new h.n("moveend",n))),this}getBearing(){return this.transform.bearing}setZoomSnap(t){return this._zoomSnap=t,this}getZoomSnap(){return this._zoomSnap}setBearing(t,n){return this.jumpTo({bearing:t},n),this}getPadding(){return this.transform.padding}setPadding(t,n){return this.jumpTo({padding:t},n),this}rotateTo(t,n,s){return this.easeTo(h.e({bearing:t},n),s)}resetNorth(t,n){return this.rotateTo(0,h.e({duration:1e3},t),n),this}resetNorthPitch(t,n){return this.easeTo(h.e({bearing:0,pitch:0,roll:0,duration:1e3},t),n),this}snapToNorth(t,n){return Math.abs(this.getBearing()){j.easeFunc($),this.terrain&&!t.freezeElevation&&this._updateElevation($),this._applyUpdatedTransform(s),this._fireMoveEvents(n)}),($=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(n,$)}),t),this}_prepareEase(t,n,s={}){this._moving=!0,n||s.moving||this.fire(new h.n("movestart",t)),this._zooming&&!s.zooming&&this.fire(new h.n("zoomstart",t)),this._rotating&&!s.rotating&&this.fire(new h.n("rotatestart",t)),this._pitching&&!s.pitching&&this.fire(new h.n("pitchstart",t)),this._rolling&&!s.rolling&&this.fire(new h.n("rollstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(t){this._elevationStart!==void 0&&this._elevationCenter!==void 0||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));let n=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(t<1&&n!==this._elevationTarget){let s=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(s-(n-(s*t+this._elevationStart))/(1-t)),this._elevationTarget=n}this.transform.setElevation(h.H.number(this._elevationStart,this._elevationTarget,t))}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(t){if(!this.terrain&&t.elevation>=0&&t.pitch<=90)return{};let n=t.getCameraLngLat(),s=t.getCameraAltitude(),c=this.terrain?this.terrain.getElevationForLngLatZoom(n,t.zoom):0;if(sthis._elevateCameraIfInsideTerrain(c))),this.transformCameraUpdate&&n.push((c=>this.transformCameraUpdate(c))),!n.length)return;let s=t.clone();for(let c of n){let f=s.clone(),{center:y,zoom:v,roll:w,pitch:S,bearing:P,elevation:E}=c(f);y&&f.setCenter(y),E!==void 0&&f.setElevation(E),v!==void 0&&f.setZoom(v),w!==void 0&&f.setRoll(w),S!==void 0&&f.setPitch(S),P!==void 0&&f.setBearing(P),s.apply(f,!1)}this.transform.apply(s,!1)}_fireMoveEvents(t){this.fire(new h.n("move",t)),this._zooming&&this.fire(new h.n("zoom",t)),this._rotating&&this.fire(new h.n("rotate",t)),this._pitching&&this.fire(new h.n("pitch",t)),this._rolling&&this.fire(new h.n("roll",t))}_afterEase(t,n){if(this._easeId&&n&&this._easeId===n)return;delete this._easeId;let s=this._zooming,c=this._rotating,f=this._pitching,y=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,s&&this.fire(new h.n("zoomend",t)),c&&this.fire(new h.n("rotateend",t)),f&&this.fire(new h.n("pitchend",t)),y&&this.fire(new h.n("rollend",t)),this.fire(new h.n("moveend",t))}flyTo(t,n){if(!t.essential&&He.prefersReducedMotion){let me=h.V(t,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(me,n)}this.stop(),"zoom"in(t=h.e({offset:[0,0],speed:1.2,curve:1.42,easing:h.cy},t))&&this._zoomSnap&&(t.zoom=h.cw(t.zoom,this._zoomSnap));let s=this._getTransformForUpdate(),c=s.bearing,f=s.pitch,y=s.roll,v=s.padding,w="bearing"in t?this._normalizeBearing(t.bearing,c):c,S="pitch"in t?+t.pitch:f,P="roll"in t?this._normalizeBearing(t.roll,y):y,E="padding"in t?t.padding:s.padding,C=h.P.convert(t.offset),z=s.centerPoint.add(C),B=s.screenPointToLocation(z),j=this.cameraHelper.handleFlyTo(s,{bearing:w,pitch:S,roll:P,padding:E,locationAtOffset:B,offsetAsPoint:C,center:t.center,minZoom:t.minZoom,zoom:t.zoom}),$=t.curve,U=Math.max(s.width,s.height),Z=U/j.scaleOfZoom,Y=j.pixelPathLength;typeof j.scaleOfMinZoom=="number"&&($=Math.sqrt(U/j.scaleOfMinZoom/Y*2));let q=$*$;function G(me){let Ae=(Z*Z-U*U+(me?-1:1)*q*q*Y*Y)/(2*(me?Z:U)*q*Y);return Math.log(Math.sqrt(Ae*Ae+1)-Ae)}function X(me){return(Math.exp(me)-Math.exp(-me))/2}function W(me){return(Math.exp(me)+Math.exp(-me))/2}let te=G(!1),se=function(me){return W(te)/W(te+$*me)},le=function(me){return U*((W(te)*(X(Ae=te+$*me)/W(Ae))-X(te))/q)/Y;var Ae},ge=(G(!0)-te)/$;if(Math.abs(Y)<2e-6||!isFinite(ge)){if(Math.abs(U-Z)<1e-6)return this.easeTo(t,n);let me=Z0,se=Ae=>Math.exp(me*$*Ae)}return t.duration="duration"in t?+t.duration:1e3*ge/("screenSpeed"in t?+t.screenSpeed/$:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=c!==w,this._pitching=S!==f,this._rolling=P!==y,this._padding=!s.isPaddingEqual(E),this._prepareEase(n,!1),this.terrain&&this._prepareElevation(j.targetCenter),this._ease((me=>{let Ae=me*ge,Te=1/se(Ae),pe=le(Ae);this._rotating&&s.setBearing(h.H.number(c,w,me)),this._pitching&&s.setPitch(h.H.number(f,S,me)),this._rolling&&s.setRoll(h.H.number(y,P,me)),this._padding&&(s.interpolatePadding(v,E,me),z=s.centerPoint.add(C)),j.easeFunc(me,Te,pe,z),this.terrain&&!t.freezeElevation&&this._updateElevation(me),this._applyUpdatedTransform(s),this._fireMoveEvents(n)}),(()=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(n)}),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,n){var s;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let c=this._onEaseEnd;delete this._onEaseEnd,c.call(this,n)}return t||(s=this.handlers)===null||s===void 0||s.stop(!1),this}_ease(t,n,s){s.animate===!1||s.duration===0?(t(1),n()):(this._easeStart=Xe(),this._easeOptions=s,this._onEaseFrame=t,this._onEaseEnd=n,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(t,n){t=h.X(t,-180,180);let s=Math.abs(t-n);return Math.abs(t-360-n)MapLibre'};class Ki{constructor(t=cs){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=n=>{!n||n.sourceDataType!=="metadata"&&n.sourceDataType!=="visibility"&&n.dataType!=="style"&&n.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=t}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options.compact,this._container=_e.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=_e.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=_e.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(t,n){let s=this._map._getUIString(`AttributionControl.${n}`);t.title=s,t.setAttribute("aria-label",s)}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((c=>typeof c!="string"?"":c))):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){let c=this._map.style.stylesheet;this.styleOwner=c.owner,this.styleId=c.id}let n=this._map.style.tileManagers;for(let c in n){let f=n[c];if(f.used||f.usedForTerrain){let y=f.getSource();y.attribution&&!t.includes(y.attribution)&&t.push(y.attribution)}}t=t.filter((c=>String(c).trim())),t.sort(((c,f)=>c.length-f.length)),t=t.filter(((c,f)=>{for(let y=f+1;y{let n=this._container.children;if(n.length){let s=n[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&s.classList.add("maplibregl-compact"):s.classList.remove("maplibregl-compact")}},this.options=t}getDefaultPosition(){return"bottom-left"}onAdd(t){var n;this._map=t,this._compact=(n=this.options)===null||n===void 0?void 0:n.compact,this._container=_e.create("div","maplibregl-ctrl");let s=_e.create("a","maplibregl-ctrl-logo");return s.target="_blank",s.rel="noopener nofollow",s.href="https://maplibre.org/",s.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),s.setAttribute("rel","noopener nofollow"),this._container.appendChild(s),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class Rh{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){let n=++this._id;return this._queue.push({callback:t,id:n,cancelled:!1}),n}remove(t){let n=this._currentlyRunning,s=n?this._queue.concat(n):this._queue;for(let c of s)if(c.id===t)return void(c.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let n=this._currentlyRunning=this._queue;this._queue=[];for(let s of n)if(!s.cancelled&&(s.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Lh=h.aS([{name:"a_pos3d",type:"Int16",components:3}]);class Fh extends h.E{constructor(t){super(),this._lastTilesetChange=Xe(),this.tileManager=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=t._source.tileSize*2**this.deltaZoom,t.usedForTerrain=!0,t.tileSize=this.tileSize}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null}getSource(){return this.tileManager._source}update(t,n){this.tileManager.update(t,n),this._renderableTilesKeys=[];let s={};for(let c of un(t,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:n,calculateTileZoom:this.tileManager._source.calculateTileZoom}))s[c.key]=!0,this._renderableTilesKeys.push(c.key),this._tiles[c.key]||(c.terrainRttPosMatrix32f=new Float64Array(16),h.c7(c.terrainRttPosMatrix32f,0,h.a6,h.a6,0,0,1),this._tiles[c.key]=new Nn(c,this.tileSize),this._lastTilesetChange=Xe());for(let c in this._tiles)s[c]||delete this._tiles[c]}freeRtt(t){for(let n in this._tiles){let s=this._tiles[n];(!t||s.tileID.equals(t)||s.tileID.isChildOf(t)||t.isChildOf(s.tileID))&&(s.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t,n){return n?this._getTerrainCoordsForTileRanges(t,n):this._getTerrainCoordsForRegularTile(t)}_getTerrainCoordsForRegularTile(t){let n={};for(let s of this._renderableTilesKeys){let c=this._tiles[s].tileID,f=t.clone(),y=h.bj();if(c.canonical.equals(t.canonical))h.c7(y,0,h.a6,h.a6,0,0,1);else if(c.canonical.isChildOf(t.canonical)){let v=c.canonical.z-t.canonical.z,w=c.canonical.x-(c.canonical.x>>v<>v<>v;h.c7(y,0,P,P,0,0,1),h.Q(y,y,[-w*P,-S*P,0])}else{if(!t.canonical.isChildOf(c.canonical))continue;{let v=t.canonical.z-c.canonical.z,w=t.canonical.x-(t.canonical.x>>v<>v<>v;h.c7(y,0,h.a6,h.a6,0,0,1),h.Q(y,y,[w*P,S*P,0]),h.S(y,y,[1/2**v,1/2**v,0])}}f.terrainRttPosMatrix32f=new Float32Array(y),n[s]=f}return n}_getTerrainCoordsForTileRanges(t,n){let s={};for(let c of this._renderableTilesKeys){let f=this._tiles[c].tileID;if(!this._isWithinTileRanges(f,n))continue;let y=t.clone(),v=h.bj();if(f.canonical.z===t.canonical.z){let w=t.canonical.x-f.canonical.x+t.wrap*(1<t.canonical.z){let w=f.canonical.z-t.canonical.z,S=f.canonical.x-(f.canonical.x>>w<>w<>w),C=t.canonical.y-(f.canonical.y>>w),z=h.a6>>w;h.c7(v,0,z,z,0,0,1),h.Q(v,v,[-S*z+E*h.a6,-P*z+C*h.a6,0])}else{let w=t.canonical.z-f.canonical.z,S=t.canonical.x-(t.canonical.x>>w<>w<>w)-f.canonical.x,C=(t.canonical.y>>w)-f.canonical.y,z=h.a6<f.maxzoom&&(y=f.maxzoom),y=f.minzoom&&!v?.dem;)v=this.findTileInCaches(t.scaledTo(y--).key);return v}findTileInCaches(t){let n=this.tileManager.getTileByID(t);return n||(n=this.tileManager._outOfViewCache.getByKey(t),n)}anyTilesAfterTime(t=Date.now()){return this._lastTilesetChange>=t}_isWithinTileRanges(t,n){let s=n[t.canonical.z];return!!s&&(t.wrap>s.minWrap||t.wrap=s.minTileXWrapped&&t.canonical.x<=s.maxTileXWrapped&&t.canonical.y>=s.minTileY&&t.canonical.y<=s.maxTileY)}}class sa{constructor(t,n,s){this._meshCache={},this.painter=t,this.tileManager=new Fh(n),this.options=s,this.exaggeration=typeof s.exaggeration=="number"?s.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}destroy(){this._fbo&&(this._fbo.destroy(),this._fbo=null),this._fboCoordsTexture&&(this._fboCoordsTexture.destroy(),this._fboCoordsTexture=null),this._fboDepthTexture&&(this._fboDepthTexture.destroy(),this._fboDepthTexture=null),this._emptyDemTexture&&(this._emptyDemTexture.destroy(),this._emptyDemTexture=null),this._emptyDepthTexture&&(this._emptyDepthTexture.destroy(),this._emptyDepthTexture=null),this._coordsTexture&&(this._coordsTexture.destroy(),this._coordsTexture=null);for(let t in this._meshCache)this._meshCache[t].destroy();this._meshCache={},this.tileManager.destruct()}getDEMElevation(t,n,s,c=h.a6){var f;let y=t.normalizeCoordinates(n,s,c);if(!y)return 0;let v=this.getTerrainData(y.tileID),w=(f=v.tile)===null||f===void 0?void 0:f.dem;if(!w)return 0;let S=h.cC([],[y.x/c*h.a6,y.y/c*h.a6],v.u_terrain_matrix),P=[S[0]*w.dim,S[1]*w.dim],E=Math.floor(P[0]),C=Math.floor(P[1]),z=P[0]-E,B=P[1]-C;return w.get(E,C)*(1-z)*(1-B)+w.get(E+1,C)*z*(1-B)+w.get(E,C+1)*(1-z)*B+w.get(E+1,C+1)*z*B}getElevationForLngLatZoom(t,n){if(!h.cD(n,t.wrap()))return 0;let{tileID:s,mercatorX:c,mercatorY:f}=this._getOverscaledTileIDFromLngLatZoom(t,n);return this.getElevation(s,c%h.a6,f%h.a6,h.a6)}getElevationForLngLat(t,n){let s=un(n,{maxzoom:this.tileManager.maxzoom,minzoom:this.tileManager.minzoom,tileSize:512,terrain:this}),c=0;for(let f of s)f.canonical.z>c&&(c=Math.min(f.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(t,c)}getElevation(t,n,s,c=h.a6){return this.getDEMElevation(t,n,s,c)*this.exaggeration}getTerrainData(t){var n,s;if(!this._emptyDemTexture){let y=this.painter.context,v=new h.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new h.T(y,v,y.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new h.T(y,new h.R({width:1,height:1}),y.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(y.gl.NEAREST,y.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=h.ap([])}let c=this.tileManager.getSourceTile(t,!0);if(c?.dem&&(!c.demTexture||c.needsTerrainPrepare)){let y=this.painter.context;c.demTexture=this.painter.getTileTexture(c.dem.stride),c.demTexture?c.demTexture.update(c.dem.getPixels(),{premultiply:!1}):c.demTexture=new h.T(y,c.dem.getPixels(),y.gl.RGBA,{premultiply:!1}),c.demTexture.bind(y.gl.NEAREST,y.gl.CLAMP_TO_EDGE),c.needsTerrainPrepare=!1}let f=c&&c.toString()+c.tileID.key+t.key;if(f&&!this._demMatrixCache[f]){let y=this.tileManager.getSource().maxzoom,v=t.canonical.z-c.tileID.canonical.z;t.overscaledZ>t.canonical.z&&(t.canonical.z>=y?v=t.canonical.z-y:h.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let w=t.canonical.x-(t.canonical.x>>v<>v<>8<<4|f>>8,n[y+3]=0;let s=new h.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(n.buffer)),c=new h.T(t,s,t.gl.RGBA,{premultiply:!1});return c.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=c,c}pointCoordinate(t){this.painter.maybeDrawDepth(!0),this.painter.maybeDrawCoords();let n=new Uint8Array(4),s=this.painter.context,c=s.gl,f=Math.round(t.x*this.painter.pixelRatio/devicePixelRatio),y=Math.round(t.y*this.painter.pixelRatio/devicePixelRatio),v=Math.round(this.painter.height/devicePixelRatio);s.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),c.readPixels(f,v-y-1,1,1,c.RGBA,c.UNSIGNED_BYTE,n),s.bindFramebuffer.set(null);let w=n[0]+(n[2]>>4<<8),S=n[1]+((15&n[2])<<8),P=this.coordsIndex[255-n[3]],E=P&&this.tileManager.getTileByID(P);if(!E)return null;let C=this._coordsTextureSize,z=(1<0,c=s&&t.canonical.y===0,f=s&&t.canonical.y===(1<t.id!==n)),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(let n of this._recentlyUsed)if(!this._objects[n].inUse)return this._objects[n];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1}freeAllObjects(){for(let t of this._objects)this.freeObject(t)}isFull(){return!(this._objects.length!t.inUse))===!1}}let yt={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class Mu{constructor(t,n){this.painter=t,this.terrain=n,this.pool=new Tt(t.context,30,n.tileManager.tileSize*n.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,n){var s,c,f;this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=t._order.filter((y=>!t._layers[y].isHidden(n))),this._coordsAscending={};for(let y in t.tileManagers){this._coordsAscending[y]={};let v=t.tileManagers[y].getVisibleCoordinates(),w=t.tileManagers[y].getSource(),S=w instanceof Or?w.terrainTileRanges:null;for(let P of v){let E=this.terrain.tileManager.getTerrainCoords(P,S);for(let C in E)(f=this._coordsAscending[y])[C]||(f[C]=[]),this._coordsAscending[y][C].push(E[C])}}this._rttFingerprints={};for(let y of t._order){let v=t._layers[y],w=v.source;if(yt[v.type]&&!this._rttFingerprints[w]){this._rttFingerprints[w]={};let S=(c=(s=t.tileManagers[w])===null||s===void 0?void 0:s.getState().revision)!==null&&c!==void 0?c:0;for(let P in this._coordsAscending[w])this._rttFingerprints[w][P]=`${this._coordsAscending[w][P].map((E=>E.key)).sort().join()}#${S}`}}for(let y of this._renderableTiles)for(let v in this._rttFingerprints){let w=this._rttFingerprints[v][y.tileID.key];w&&w!==y.rttFingerprint[v]&&(y.rtt=[])}}renderLayer(t,n){if(t.isHidden(this.painter.transform.zoom))return!1;let s=Object.assign(Object.assign({},n),{isRenderingToTexture:!0}),c=t.type,f=this.painter,y=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(yt[c]&&(this._prevType&&yt[this._prevType]||this._stacks.push([]),this._prevType=c,this._stacks[this._stacks.length-1].push(t.id),!y))return!0;if(yt[this._prevType]||yt[c]&&y){this._prevType=c;let v=this._stacks.length-1,w=this._stacks[v]||[];for(let S of this._renderableTiles){if(this.pool.isFull()&&(kl(this.painter,this.terrain,this._rttTiles,s),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(S),S.rtt[v]){let E=this.pool.getObjectForId(S.rtt[v].id);if(E.stamp===S.rtt[v].stamp){this.pool.useObject(E);continue}}let P=this.pool.getOrCreateFreeObject();this.pool.useObject(P),this.pool.stampObject(P),S.rtt[v]={id:P.id,stamp:P.stamp},f.context.bindFramebuffer.set(P.fbo.framebuffer),f.context.clear({color:h.bo.transparent,stencil:0}),f.currentStencilSource=void 0;for(let E of w){let C=f.style._layers[E],z=C.source?this._coordsAscending[C.source][S.tileID.key]:[S.tileID];f.context.viewport.set([0,0,P.fbo.width,P.fbo.height]),f._renderTileClippingMasks(C,z,!0),f.renderLayer(f,f.style.tileManagers[C.source],C,z,s),C.source&&(S.rttFingerprint[C.source]=this._rttFingerprints[C.source][S.tileID.key])}}return kl(this.painter,this.terrain,this._rttTiles,s),this._rttTiles=[],this.pool.freeAllObjects(),yt[c]}return!1}}let la={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"MapLibre logo","Map.Title":"Map","Marker.Title":"Map marker","NavigationControl.ResetBearing":"Drag to rotate map, click to reset north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","Popup.Close":"Close popup","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","GlobeControl.Enable":"Enable globe","GlobeControl.Disable":"Disable globe","TerrainControl.Enable":"Enable terrain","TerrainControl.Disable":"Disable terrain","CooperativeGesturesHandler.WindowsHelpText":"Use Ctrl + scroll to zoom the map","CooperativeGesturesHandler.MacHelpText":"Use \u2318 + scroll to zoom the map","CooperativeGesturesHandler.MobileHelpText":"Use two fingers to move the map"},us=fe,hs={hash:!1,interactive:!0,bearingSnap:7,zoomSnap:0,attributionControl:cs,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:h.c.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:"sans-serif",pitchWithRotate:!0,rollEnabled:!1,reduceMotion:void 0,validateStyle:!0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0,experimentalZoomLevelsToOverscale:void 0,anisotropicFilterPitch:20},ds=class extends Pu{get _ownerWindow(){var d,t;return((t=(d=this._container)===null||d===void 0?void 0:d.ownerDocument)===null||t===void 0?void 0:t.defaultView)||window}constructor(d){var t,n,s;let c=Object.assign(Object.assign(Object.assign({},hs),d),{canvasContextAttributes:Object.assign(Object.assign({},hs.canvasContextAttributes),d.canvasContextAttributes)});if(c.minZoom!=null&&c.maxZoom!=null&&c.minZoom>c.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(c.minPitch!=null&&c.maxPitch!=null&&c.minPitch>c.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(c.minPitch!=null&&c.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(c.maxPitch!=null&&c.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");let f=new mn,y=new gn;c.minZoom!==void 0&&f.setMinZoom(c.minZoom),c.maxZoom!==void 0&&f.setMaxZoom(c.maxZoom),c.minPitch!==void 0&&f.setMinPitch(c.minPitch),c.maxPitch!==void 0&&f.setMaxPitch(c.maxPitch),c.renderWorldCopies!==void 0&&f.setRenderWorldCopies(c.renderWorldCopies),c.transformConstrain!==null&&f.setConstrainOverride(c.transformConstrain),super(f,y,{bearingSnap:c.bearingSnap,zoomSnap:c.zoomSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Rh,this._controls=[],this._mapId=h.ad(),this._lostContextStyle={style:null,images:null},this._contextLost=w=>{if(w.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy(),this._lostContextStyle=this._getStyleAndImages(),this.style){for(let S of Object.values(this.style._layers))if(S.type==="custom"&&console.warn(`Custom layer with id '${S.id}' cannot be restored after WebGL context loss. You will need to re-add it manually after context restoration.`),S._listeners)for(let[P]of Object.entries(S._listeners))console.warn(`Custom layer with id '${S.id}' had event listeners for event '${P}' which cannot be restored after WebGL context loss. You will need to re-add them manually after context restoration.`);this.style.destroy(),this.style=null,this.fire(new h.n("webglcontextlost",{originalEvent:w}))}else this.fire(new h.n("webglcontextlost",{originalEvent:w}))},this._contextRestored=w=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&this.style&&(this.style.imageManager.images=this._lostContextStyle.images),this._lostContextStyle={style:null,images:null},this._setupPainter(),this.resize(),this._update(),this._resizeInternal(),this.fire(new h.n("webglcontextrestored",{originalEvent:w}))},this._onMapScroll=w=>{if(w.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=c.interactive,this._maxTileCacheSize=c.maxTileCacheSize,this._maxTileCacheZoomLevels=c.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},c.canvasContextAttributes),this._trackResize=c.trackResize===!0,this._bearingSnap=c.bearingSnap,this._zoomSnap=c.zoomSnap,this._centerClampedToGround=c.centerClampedToGround,this._refreshExpiredTiles=c.refreshExpiredTiles===!0,this._fadeDuration=c.fadeDuration,this._crossSourceCollisions=c.crossSourceCollisions===!0,this._collectResourceTiming=c.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},la),c.locale),this._clickTolerance=c.clickTolerance,this._overridePixelRatio=c.pixelRatio,this._maxCanvasSize=c.maxCanvasSize,this._zoomLevelsToOverscale=c.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=c.transformCameraUpdate,this.transformConstrain=c.transformConstrain,this.cancelPendingTileRequestsWhileZooming=c.cancelPendingTileRequestsWhileZooming===!0,this.setAnisotropicFilterPitch(c.anisotropicFilterPitch),c.reduceMotion!==void 0&&(He.prefersReducedMotion=c.reduceMotion),this._imageQueueHandle=Ri.addThrottleControl((()=>this.isMoving())),this._requestManager=new $t(c.transformRequest),this._container=this._resolveContainer(c.container),c.maxBounds&&this.setMaxBounds(c.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.depthDirty=!0,this._update(!0)})),this.once("idle",(()=>this._idleTriggered=!0)),typeof window<"u"&&(this._ownerWindow.addEventListener("online",this._onWindowOnline,!1),this._setupResizeObserver()),this.handlers=new xi(this,c),this._hash=c.hash?new ea(typeof c.hash=="string"&&c.hash||void 0).addTo(this):void 0,!((t=this._hash)===null||t===void 0)&&t._onHashChange()||(this.jumpTo({center:c.center,elevation:c.elevation,zoom:c.zoom,bearing:c.bearing,pitch:c.pitch,roll:c.roll}),c.bounds&&(this.resize(),this.fitBounds(c.bounds,h.e({},c.fitBoundsOptions,{duration:0}))));let v=typeof c.style=="string"||((s=(n=c.style)===null||n===void 0?void 0:n.projection)===null||s===void 0?void 0:s.type)!=="globe";this.resize(null,v),this._localIdeographFontFamily=c.localIdeographFontFamily,this._validateStyle=c.validateStyle,c.style&&this.setStyle(c.style,{localIdeographFontFamily:c.localIdeographFontFamily}),c.attributionControl&&this.addControl(new Ki(typeof c.attributionControl=="boolean"?void 0:c.attributionControl)),c.maplibreLogo&&this.addControl(new Zl,c.logoPosition),this.on("style.load",(()=>{if(v||this._resizeTransform(),this.transform.unmodified){let w=h.V(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(w)}})),this.on("data",(w=>{this._update(w.dataType==="style"),this.fire(new h.n(`${w.dataType}data`,w))})),this.on("dataloading",(w=>{this.fire(new h.n(`${w.dataType}dataloading`,w))})),this.on("dataabort",(w=>{this.fire(new h.n("sourcedataabort",w))}))}_getMapId(){return this._mapId}setGlobalStateProperty(d,t){return this.style.setGlobalStateProperty(d,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(d,t){if(t===void 0&&(t=d.getDefaultPosition?d.getDefaultPosition():"top-right"),!d?.onAdd)return this.fire(new h.l(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let n=d.onAdd(this);this._controls.push(d);let s=this._controlPositions[t];return t.includes("bottom")?s.insertBefore(n,s.firstChild):s.appendChild(n),this}removeControl(d){if(!d?.onRemove)return this.fire(new h.l(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let t=this._controls.indexOf(d);return t>-1&&this._controls.splice(t,1),d.onRemove(this),this}hasControl(d){return this._controls.includes(d)}coveringTiles(d){return un(this.transform,d)}calculateCameraOptionsFromTo(d,t,n,s){return s==null&&this.terrain&&(s=this.terrain.getElevationForLngLat(n,this.transform)),super.calculateCameraOptionsFromTo(d,t,n,s)}resize(d,t=!0){if(this._lostContextStyle.style!==null)return this;this._resizeInternal(t);let n=!this._moving;return n&&(this.stop(),this.fire(new h.n("movestart",d)).fire(new h.n("move",d))),this.fire(new h.n("resize",d)),n&&this.fire(new h.n("moveend",d)),this}_resizeInternal(d=!0){let[t,n]=this._containerDimensions(),s=this._getClampedPixelRatio(t,n);if(this._resizeCanvas(t,n,s),this.painter.resize(t,n,s),this.painter.overLimit()){let c=this.painter.context.gl;this._maxCanvasSize=[c.drawingBufferWidth,c.drawingBufferHeight];let f=this._getClampedPixelRatio(t,n);this._resizeCanvas(t,n,f),this.painter.resize(t,n,f)}this._resizeTransform(d)}_resizeTransform(d=!0){var t;let[n,s]=this._containerDimensions();this.transform.resize(n,s,d),(t=this._requestedCameraState)===null||t===void 0||t.resize(n,s,d)}_getClampedPixelRatio(d,t){let{0:n,1:s}=this._maxCanvasSize,c=this.getPixelRatio(),f=d*c,y=t*c;return Math.min(f>n?n/f:1,y>s?s/y:1)*c}getPixelRatio(){var d;return(d=this._overridePixelRatio)!==null&&d!==void 0?d:devicePixelRatio}setPixelRatio(d){this._overridePixelRatio=d,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(d){return this.transform.setMaxBounds(Oe.convert(d)),this._update()}setMinZoom(d){if((d=d??-2)>=-2&&d<=this.transform.maxZoom){let t=this.transform.zoom,n=this._getTransformForUpdate();return n.setMinZoom(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.zoom&&this.fire(new h.n("zoomstart")).fire(new h.n("zoom")).fire(new h.n("zoomend")).fire(new h.n("movestart")).fire(new h.n("move")).fire(new h.n("moveend")),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(d){if((d=d??22)>=this.transform.minZoom){let t=this.transform.zoom,n=this._getTransformForUpdate();return n.setMaxZoom(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.zoom&&this.fire(new h.n("zoomstart")).fire(new h.n("zoom")).fire(new h.n("zoomend")).fire(new h.n("movestart")).fire(new h.n("move")).fire(new h.n("moveend")),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(d){if((d=d??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(d>=0&&d<=this.transform.maxPitch){let t=this.transform.pitch,n=this._getTransformForUpdate();return n.setMinPitch(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.pitch&&this.fire(new h.n("pitchstart")).fire(new h.n("pitch")).fire(new h.n("pitchend")).fire(new h.n("movestart")).fire(new h.n("move")).fire(new h.n("moveend")),this}throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(d){if((d=d??60)>180)throw new Error("maxPitch must be less than or equal to 180");if(d>=this.transform.minPitch){let t=this.transform.pitch,n=this._getTransformForUpdate();return n.setMaxPitch(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.pitch&&this.fire(new h.n("pitchstart")).fire(new h.n("pitch")).fire(new h.n("pitchend")).fire(new h.n("movestart")).fire(new h.n("move")).fire(new h.n("moveend")),this}throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getAnisotropicFilterPitch(){return this._anisotropicFilterPitch}setAnisotropicFilterPitch(d){if((d=d??20)>180)throw new Error("anisotropicFilterPitch must be less than or equal to 180");if(d<0)throw new Error("anisotropicFilterPitch must be greater than or equal to 0");return this._anisotropicFilterPitch=d,this._update()}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(d){return this.transform.setRenderWorldCopies(d),this._update()}setTransformConstrain(d){return this.transform.setConstrainOverride(d),this._update()}project(d){return this.transform.locationToScreenPoint(h.W.convert(d),this.style&&this.terrain)}unproject(d){return this.transform.screenPointToLocation(h.P.convert(d),this.terrain)}isMoving(){var d;return this._moving||((d=this.handlers)===null||d===void 0?void 0:d.isMoving())}isZooming(){var d;return this._zooming||((d=this.handlers)===null||d===void 0?void 0:d.isZooming())}isRotating(){var d;return this._rotating||((d=this.handlers)===null||d===void 0?void 0:d.isRotating())}_createDelegatedListener(d,t,n){if(d==="mouseenter"||d==="mouseover"){let s=!1;return{layers:t,listener:n,delegates:{mousemove:f=>{let y=t.filter((w=>this.getLayer(w))),v=y.length!==0?this.queryRenderedFeatures(f.point,{layers:y}):[];v.length?s||(s=!0,n.call(this,new ji(d,this,f.originalEvent,{features:v}))):s=!1},mouseout:()=>{s=!1}}}}if(d==="mouseleave"||d==="mouseout"){let s=!1;return{layers:t,listener:n,delegates:{mousemove:y=>{let v=t.filter((w=>this.getLayer(w)));(v.length!==0?this.queryRenderedFeatures(y.point,{layers:v}):[]).length?s=!0:s&&(s=!1,n.call(this,new ji(d,this,y.originalEvent)))},mouseout:y=>{s&&(s=!1,n.call(this,new ji(d,this,y.originalEvent)))}}}}{let s=c=>{let f=t.filter((v=>this.getLayer(v))),y=f.length!==0?this.queryRenderedFeatures(c.point,{layers:f}):[];y.length&&(c.features=y,n.call(this,c),delete c.features)};return{layers:t,listener:n,delegates:{[d]:s}}}}_saveDelegatedListener(d,t){var n;this._delegatedListeners||(this._delegatedListeners={}),(n=this._delegatedListeners)[d]||(n[d]=[]),this._delegatedListeners[d].push(t)}_removeDelegatedListener(d,t,n){var s;if(!(!((s=this._delegatedListeners)===null||s===void 0)&&s[d]))return;let c=this._delegatedListeners[d];for(let f=0;ft.includes(v)))){for(let v in y.delegates)this.off(v,y.delegates[v]);return void c.splice(f,1)}}}on(d,t,n){if(n===void 0)return super.on(d,t);let s=typeof t=="string"?[t]:t,c=this._createDelegatedListener(d,s,n);this._saveDelegatedListener(d,c);for(let f in c.delegates)this.on(f,c.delegates[f]);return{unsubscribe:()=>{this._removeDelegatedListener(d,s,n)}}}once(d,t,n){if(n===void 0)return super.once(d,t);let s=typeof t=="string"?[t]:t,c=this._createDelegatedListener(d,s,n);for(let f in c.delegates){let y=c.delegates[f];c.delegates[f]=(...v)=>{this._removeDelegatedListener(d,s,n),y(...v)}}this._saveDelegatedListener(d,c);for(let f in c.delegates)this.once(f,c.delegates[f]);return this}off(d,t,n){return n===void 0?super.off(d,t):(this._removeDelegatedListener(d,typeof t=="string"?[t]:t,n),this)}queryRenderedFeatures(d,t){if(!this.style)return[];let n,s=d instanceof h.P||Array.isArray(d),c=s?d:[[0,0],[this.transform.width,this.transform.height]];if(t||(t=(s?{}:d)||{}),c instanceof h.P||typeof c[0]=="number")n=[h.P.convert(c)];else{let f=h.P.convert(c[0]),y=h.P.convert(c[1]);n=[f,new h.P(y.x,f.y),y,new h.P(f.x,y.y),f]}return this.style.queryRenderedFeatures(n,t,this.transform)}querySourceFeatures(d,t){return this.style.querySourceFeatures(d,t)}setStyle(d,t){return(t=h.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},t)).diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&d?(this._diffStyle(d,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(d,t))}setTransformRequest(d){return this._requestManager.setTransformRequest(d),this}_getUIString(d){let t=this._locale[d];if(t==null)throw new Error(`Missing UI string '${d}'`);return t}_updateStyle(d,t){var n,s,c;if((n=this._diffStyleRequest)===null||n===void 0||n.abort(),this._diffStyleRequest=null,t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(d,t)));let f=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!d)),d?(this.style=new vn(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof d=="string"?this.style.loadURL(d,t,f):this.style.loadJSON(d,t,f),this):(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),(c=(s=this.style)===null||s===void 0?void 0:s.projection)===null||c===void 0||c.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new vn(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(d,t){return h._(this,void 0,void 0,(function*(){var n;if((n=this._diffStyleRequest)===null||n===void 0||n.abort(),typeof d=="string"){let s=d;this._diffStyleRequest=new AbortController;let c=this._diffStyleRequest;try{let f=yield this._requestManager.transformRequest(s,"Style");if(c.signal.aborted)return void(this._diffStyleRequest=null);let y=yield h.k(f,c);this._diffStyleRequest=null,this._updateDiff(y.data,t)}catch(f){this._diffStyleRequest=null,h.$(f)||this.fire(new h.l(h.d(f)))}}else typeof d=="object"&&(this._diffStyleRequest=null,this._updateDiff(d,t))}))}_updateDiff(d,t){try{this.style.setState(d,t)&&this._update(!0)}catch(n){h.w(`Unable to perform style diff: ${h.d(n).message}. Rebuilding the style from scratch.`),this._updateStyle(d,t)}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){if(this.style)return this.style.loaded();h.w("There is no style added to the map.")}addSource(d,t){return this._lazyInitEmptyStyle(),this.style.addSource(d,t),this._update(!0)}isSourceLoaded(d){var t;let n=(t=this.style)===null||t===void 0?void 0:t.tileManagers[d];if(n!==void 0)return n.loaded();this.fire(new h.l(new Error(`There is no tile manager with ID '${d}'`)))}setTerrain(d){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),d){let t=this.style.tileManagers[d.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${d.source}`);this.terrain===null&&t.reload();for(let n in this.style._layers){let s=this.style._layers[n];s.type==="hillshade"&&s.source===d.source&&h.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality."),s.type==="color-relief"&&s.source===d.source&&h.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new sa(this.painter,t,d),this.painter.renderToTexture=new Mu(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=n=>{var s;n.dataType==="style"?this.terrain.tileManager.freeRtt():n.dataType==="source"&&n.tile&&(n.sourceId!==d.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),((s=n.source)===null||s===void 0?void 0:s.type)==="image"?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(n.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.destroy(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new h.n("terrain",{terrain:d})),this}getTerrain(){var d,t;return(t=(d=this.terrain)===null||d===void 0?void 0:d.options)!==null&&t!==void 0?t:null}areTilesLoaded(){var d;let t=(d=this.style)===null||d===void 0?void 0:d.tileManagers;for(let n of Object.values(t))if(!n.areTilesLoaded())return!1;return!0}removeSource(d){return this.style.removeSource(d),this._update(!0)}getSource(d){return this.style.getSource(d)}setSourceTileLodParams(d,t,n){if(n){let s=this.getSource(n);if(!s)throw new Error(`There is no source with ID "${n}", cannot set LOD parameters`);s.calculateTileZoom=el(Math.max(1,d),Math.max(1,t))}else for(let s in this.style.tileManagers)this.style.tileManagers[s].getSource().calculateTileZoom=el(Math.max(1,d),Math.max(1,t));return this._update(!0),this}refreshTiles(d,t){let n=this.style.tileManagers[d];if(!n)throw new Error(`There is no tile manager with ID "${d}", cannot refresh tile`);t===void 0?n.reload(!0):n.refreshTiles(t.map((s=>new h.aa(s.z,s.x,s.y))))}addImage(d,t,n={}){let{pixelRatio:s=1,sdf:c=!1,stretchX:f,stretchY:y,content:v,textFitWidth:w,textFitHeight:S}=n;if(this._lazyInitEmptyStyle(),!(t instanceof HTMLImageElement||h.b(t))){if(t.width===void 0||t.height===void 0)return this.fire(new h.l(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:P,height:E,data:C}=t,z=t;return this.style.addImage(d,{data:new h.R({width:P,height:E},new Uint8Array(C)),pixelRatio:s,stretchX:f,stretchY:y,content:v,textFitWidth:w,textFitHeight:S,sdf:c,version:0,userImage:z}),z.onAdd&&z.onAdd(this,d),this}}{let{width:P,height:E,data:C}=He.getImageData(t);this.style.addImage(d,{data:new h.R({width:P,height:E},C),pixelRatio:s,stretchX:f,stretchY:y,content:v,textFitWidth:w,textFitHeight:S,sdf:c,version:0})}}updateImage(d,t){let n=this.style.getImage(d);if(!n)return this.fire(new h.l(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let s=t instanceof HTMLImageElement||h.b(t)?He.getImageData(t):t,{width:c,height:f,data:y}=s;if(c===void 0||f===void 0)return this.fire(new h.l(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(c!==n.data.width||f!==n.data.height)return this.fire(new h.l(new Error("The width and height of the updated image must be that same as the previous version of the image")));let v=!(t instanceof HTMLImageElement||h.b(t));return n.data.replace(y,v),this.style.updateImage(d,n),this}getImage(d){return this.style.getImage(d)}hasImage(d){return d?!!this.style.getImage(d):(this.fire(new h.l(new Error("Missing required image id"))),!1)}removeImage(d){this.style.removeImage(d)}loadImage(d){return h._(this,void 0,void 0,(function*(){return Ri.getImage(yield this._requestManager.transformRequest(d,"Image"),new AbortController)}))}listImages(){return this.style.listImages()}addLayer(d,t){return this._lazyInitEmptyStyle(),this.style.addLayer(d,t),this._update(!0)}moveLayer(d,t){return this.style.moveLayer(d,t),this._update(!0)}removeLayer(d){return this.style.removeLayer(d),this._update(!0)}getLayer(d){return this.style.getLayer(d)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(d,t,n){return this.style.setLayerZoomRange(d,t,n),this._update(!0)}setFilter(d,t,n={}){return this.style.setFilter(d,t,n),this._update(!0)}getFilter(d){return this.style.getFilter(d)}setPaintProperty(d,t,n,s={}){return this.style.setPaintProperty(d,t,n,s),this._update(!0)}getPaintProperty(d,t){return this.style.getPaintProperty(d,t)}setLayoutProperty(d,t,n,s={}){return this.style.setLayoutProperty(d,t,n,s),this._update(!0)}getLayoutProperty(d,t){return this.style.getLayoutProperty(d,t)}setGlyphs(d,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(d,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(d,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(d,t,n,(s=>{s||this._update(!0)})),this}removeSprite(d){return this._lazyInitEmptyStyle(),this.style.removeSprite(d),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(d,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(d,t,(n=>{n||this._update(!0)})),this}setLight(d,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(d,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(d,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(d,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(d,t){return this.style.setFeatureState(d,t),this._update()}removeFeatureState(d,t){return this.style.removeFeatureState(d,t),this._update()}getFeatureState(d){return this.style.getFeatureState(d)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let d=0,t=0;return this._container&&(d=this._container.clientWidth||400,t=this._container.clientHeight||300),[d,t]}_setupResizeObserver(){var d;let t=!1,n=Ll((c=>{this._trackResize&&!this._removed&&(this.resize(c),this.redraw())}),50),s=(d=this._ownerWindow.ResizeObserver)!==null&&d!==void 0?d:ResizeObserver;this._resizeObserver=new s((c=>{t?n(c):t=!0})),this._resizeObserver.observe(this._container)}_resolveContainer(d){if(typeof d=="string"){let t=document.getElementById(d);if(!t)throw new Error(`Container '${d}' not found.`);return t}if(d instanceof HTMLElement||d&&typeof d=="object"&&d.nodeType===1)return d;throw new Error("Invalid type: 'container' must be a String or HTMLElement.")}_setupContainer(){let d=this._container;d.classList.add("maplibregl-map");let t=this._canvasContainer=_e.create("div","maplibregl-canvas-container",d);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=_e.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let n=this._containerDimensions(),s=this._getClampedPixelRatio(n[0],n[1]);this._resizeCanvas(n[0],n[1],s);let c=this._controlContainer=_e.create("div","maplibregl-control-container",d),f=this._controlPositions={};for(let y of["top-left","top-right","bottom-left","bottom-right"])f[y]=_e.create("div",`maplibregl-ctrl-${y} `,c);this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(d,t,n){this._canvas.width=Math.floor(n*d),this._canvas.height=Math.floor(n*t),this._canvas.style.width=`${d}px`,this._canvas.style.height=`${t}px`}_setupPainter(){let d=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0}),t=null;this._canvas.addEventListener("webglcontextcreationerror",(s=>{t={requestedAttributes:d},s&&(t.statusMessage=s.statusMessage,t.type=s.type)}),{once:!0});let n=null;if(n=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,d):this._canvas.getContext("webgl2",d)||this._canvas.getContext("webgl",d),!n){let s="Failed to initialize WebGL";throw t?(t.message=s,new Error(JSON.stringify(t))):new Error(s)}this.painter=new Qo(n,this.transform)}migrateProjection(d,t){super.migrateProjection(d,t),this.painter.transform=d,this.fire(new h.n("projectiontransition",{newProjection:this.style.projection.name}))}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(d){var t;return!((t=this.style)===null||t===void 0)&&t._loaded?(this._styleDirty||(this._styleDirty=d),this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(d){return this._update(),this._renderTaskQueue.add(d)}_cancelRenderFrame(d){this._renderTaskQueue.remove(d)}_render(d){var t,n,s,c,f,y;let v=this._idleTriggered?this._fadeDuration:0,w=((t=this.style.projection)===null||t===void 0?void 0:t.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(d),this._removed)return;let S=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let C=this.transform.zoom,z=Xe();this.style.zoomHistory.update(C,z);let B=new h.J(C,{now:z,fadeDuration:v,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),j=B.crossFadingFactor();j===1&&j===this._crossFadingFactor||(S=!0,this._crossFadingFactor=j),this.style.update(B)}let P=((n=this.style.projection)===null||n===void 0?void 0:n.transitionState)>0!==w;(s=this.style.projection)===null||s===void 0||s.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState((c=this.style.projection)===null||c===void 0?void 0:c.transitionState,(f=this.style.projection)===null||f===void 0?void 0:f.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||P)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=(y=this.style)===null||y===void 0?void 0:y._updatePlacement(this.transform,this.showCollisionBoxes,v,this._crossSourceCollisions,P),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:v,showPadding:this.showPadding,anisotropicFilterPitch:this.getAnisotropicFilterPitch()}),this.fire(new h.n("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new h.n("load"))),this.style&&(this.style.hasTransitions()||S)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let E=this._sourcesDirty||this._styleDirty||this._placementDirty;return E||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new h.n("idle")),!this._loaded||this._fullyLoaded||E||(this._fullyLoaded=!0),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var d,t;this._hash&&this._hash.remove();for(let s of this._controls)s.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),(d=this._diffStyleRequest)===null||d===void 0||d.abort(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&this._ownerWindow.removeEventListener("online",this._onWindowOnline,!1),Ri.removeThrottleControl(this._imageQueueHandle),(t=this._resizeObserver)===null||t===void 0||t.disconnect();let n=this.painter.context.gl.getExtension("WEBGL_lose_context");n?.loseContext&&n.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),this._removed=!0,this.fire(new h.n("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,He.frame(this._frameRequest,(d=>{this._frameRequest=null;try{this._render(d)}catch(t){if(!h.$(t)&&!(function(n){return n.message===ts})(t))throw t}}),(()=>{}),this._ownerWindow))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(d){this._showTileBoundaries!==d&&(this._showTileBoundaries=d,this._update())}get showPadding(){return!!this._showPadding}set showPadding(d){this._showPadding!==d&&(this._showPadding=d,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(d){this._showCollisionBoxes!==d&&(this._showCollisionBoxes=d,d?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(d){this._showOverdrawInspector!==d&&(this._showOverdrawInspector=d,this._update())}get repaint(){return!!this._repaint}set repaint(d){this._repaint!==d&&(this._repaint=d,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(d){this._vertices=d,this._update()}get version(){return us}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(d){return this._lazyInitEmptyStyle(),this.style.setProjection(d),this._update(!0)}},ql={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0};class ca{constructor(t,n,s=!1){this.mousedown=f=>{this.startMove(f,_e.mousePos(this.element,f)),window.addEventListener("mousemove",this.mousemove),window.addEventListener("mouseup",this.mouseup)},this.mousemove=f=>{this.move(f,_e.mousePos(this.element,f))},this.mouseup=f=>{this._rotatePitchHandler.dragEnd(f),this.offTemp()},this.touchstart=f=>{f.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=_e.touchPos(this.element,f.targetTouches)[0],this.startMove(f,this._startPos),window.addEventListener("touchmove",this.touchmove,{passive:!1}),window.addEventListener("touchend",this.touchend))},this.touchmove=f=>{f.targetTouches.length!==1?this.reset():(this._lastPos=_e.touchPos(this.element,f.targetTouches)[0],this.move(f,this._lastPos))},this.touchend=f=>{f.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10,this.element=n;let c=new Bl;this._rotatePitchHandler=new Sr({clickTolerance:3,move:(f,y)=>{let v=n.getBoundingClientRect(),w=new h.P((v.bottom-v.top)/2,(v.right-v.left)/2);return{bearingDelta:h.cx(new h.P(f.x,y.y),y,w),pitchDelta:s?-.5*(y.y-f.y):void 0}},moveStateManager:c,enable:!0,assignEvents:()=>{}}),this.map=t,n.addEventListener("mousedown",this.mousedown),n.addEventListener("touchstart",this.touchstart,{passive:!1}),n.addEventListener("touchcancel",this.reset)}startMove(t,n){this._rotatePitchHandler.dragStart(t,n),_e.disableDrag()}move(t,n){let s=this.map,{bearingDelta:c,pitchDelta:f}=this._rotatePitchHandler.dragMove(t,n)||{};c&&s.setBearing(s.getBearing()+c),f&&s.setPitch(s.getPitch()+f)}off(){let t=this.element;t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("touchcancel",this.reset),this.offTemp()}offTemp(){_e.enableDrag(),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend)}}let Mr;function ps(d,t,n,s=!1){if(s||!n.getCoveringTilesDetailsProvider().allowWorldCopies())return d?.wrap();let c=new h.W(d.lng,d.lat);if(d=new h.W(d.lng,d.lat),t){let f=new h.W(d.lng-360,d.lat),y=new h.W(d.lng+360,d.lat),v=n.locationToScreenPoint(d).distSqr(t);n.locationToScreenPoint(f).distSqr(t)180;){let f=n.locationToScreenPoint(d);if(f.x>=0&&f.y>=0&&f.x<=n.width&&f.y<=n.height)break;d.lng>n.center.lng?d.lng-=360:d.lng+=360}return d.lng!==c.lng&&n.isPointOnMapSurface(n.locationToScreenPoint(d))?d:c}let ua={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function fs(d,t,n){let s=d.classList;for(let c in ua)s.remove(`maplibregl-${n}-anchor-${c}`);s.add(`maplibregl-${n}-anchor-${t}`)}class ha extends h.E{constructor(t){if(super(),this._onClick=n=>{this.fire(new h.n("click",{originalEvent:n}))},this._onKeyPress=n=>{n.code!=="Space"&&n.code!=="Enter"||this.togglePopup()},this._onMapClick=n=>{let s=n.originalEvent.target,c=this._element;this._popup&&(s===c||c.contains(s))&&this.togglePopup()},this._update=n=>{if(!this._map)return;let s=this._map.loaded()&&!this._map.isMoving();(n?.type==="terrain"||n?.type==="render"&&!s)&&this._map.once("render",this._update),this._lngLat=ps(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let c="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?c=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(c=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let f="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?f="rotateX(0deg)":this._pitchAlignment==="map"&&(f=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||n&&n.type!=="moveend"||(this._pos=this._pos.round()),this._element.style.transform=`${ua[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${f} ${c}`,He.frameAsync(new AbortController,this._map._ownerWindow).then((()=>{this._updateOpacity(n?.type==="moveend")})).catch((()=>{}))},this._onMove=n=>{if(!this._isDragging){let s=this._clickTolerance||this._map._clickTolerance;this._isDragging=n.point.dist(this._pointerdownPos)>=s}this._isDragging&&(this._pos=n.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new h.n("dragstart"))),this.fire(new h.n("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new h.n("dragend")),this._state="inactive"},this._addDragHandler=n=>{this._element.contains(n.originalEvent.target)&&(n.preventDefault(),this._positionDelta=n.point.sub(this._pos).add(this._offset),this._pointerdownPos=n.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=t?.anchor||"center",this._color=t?.color||"#3FB1CE",this._scale=t?.scale||1,this._draggable=t?.draggable||!1,this._clickTolerance=t?.clickTolerance||0,this._subpixelPositioning=t?.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=t?.rotation||0,this._rotationAlignment=t?.rotationAlignment||"auto",this._pitchAlignment=t?.pitchAlignment&&t.pitchAlignment!=="auto"?t.pitchAlignment:this._rotationAlignment,this.setOpacity(t?.opacity,t?.opacityWhenCovered),t?.element)this._element=t.element,this._offset=h.P.convert(t?.offset||[0,0]);else{this._defaultMarker=!0,this._element=_e.create("div");let n=_e.createNS("http://www.w3.org/2000/svg","svg"),s=41,c=27;n.setAttributeNS(null,"display","block"),n.setAttributeNS(null,"height",`${s}px`),n.setAttributeNS(null,"width",`${c}px`),n.setAttributeNS(null,"viewBox",`0 0 ${c} ${s}`);let f=_e.createNS("http://www.w3.org/2000/svg","g");f.setAttributeNS(null,"stroke","none"),f.setAttributeNS(null,"stroke-width","1"),f.setAttributeNS(null,"fill","none"),f.setAttributeNS(null,"fill-rule","evenodd");let y=_e.createNS("http://www.w3.org/2000/svg","g");y.setAttributeNS(null,"fill-rule","nonzero");let v=_e.createNS("http://www.w3.org/2000/svg","g");v.setAttributeNS(null,"transform","translate(3.0, 29.0)"),v.setAttributeNS(null,"fill","#000000");let w=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let U of w){let Z=_e.createNS("http://www.w3.org/2000/svg","ellipse");Z.setAttributeNS(null,"opacity","0.04"),Z.setAttributeNS(null,"cx","10.5"),Z.setAttributeNS(null,"cy","5.80029008"),Z.setAttributeNS(null,"rx",U.rx),Z.setAttributeNS(null,"ry",U.ry),v.appendChild(Z)}let S=_e.createNS("http://www.w3.org/2000/svg","g");S.setAttributeNS(null,"fill",this._color);let P=_e.createNS("http://www.w3.org/2000/svg","path");P.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),S.appendChild(P);let E=_e.createNS("http://www.w3.org/2000/svg","g");E.setAttributeNS(null,"opacity","0.25"),E.setAttributeNS(null,"fill","#000000");let C=_e.createNS("http://www.w3.org/2000/svg","path");C.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),E.appendChild(C);let z=_e.createNS("http://www.w3.org/2000/svg","g");z.setAttributeNS(null,"transform","translate(6.0, 7.0)"),z.setAttributeNS(null,"fill","#FFFFFF");let B=_e.createNS("http://www.w3.org/2000/svg","g");B.setAttributeNS(null,"transform","translate(8.0, 8.0)");let j=_e.createNS("http://www.w3.org/2000/svg","circle");j.setAttributeNS(null,"fill","#000000"),j.setAttributeNS(null,"opacity","0.25"),j.setAttributeNS(null,"cx","5.5"),j.setAttributeNS(null,"cy","5.5"),j.setAttributeNS(null,"r","5.4999962");let $=_e.createNS("http://www.w3.org/2000/svg","circle");$.setAttributeNS(null,"fill","#FFFFFF"),$.setAttributeNS(null,"cx","5.5"),$.setAttributeNS(null,"cy","5.5"),$.setAttributeNS(null,"r","5.4999962"),B.appendChild(j),B.appendChild($),y.appendChild(v),y.appendChild(S),y.appendChild(E),y.appendChild(z),y.appendChild(B),n.appendChild(y),n.setAttributeNS(null,"height",s*this._scale+"px"),n.setAttributeNS(null,"width",c*this._scale+"px"),this._element.appendChild(n),this._offset=h.P.convert(t?.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(n=>{n.preventDefault()})),this._element.addEventListener("mousedown",(n=>{n.preventDefault()})),fs(this._element,this._anchor,"marker"),t?.className)for(let n of t.className.split(" "))this._element.classList.add(n);this._popup=null}addTo(t){return this.remove(),this._map=t,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",t._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),t.on("projectiontransition",this._update),this._element.addEventListener("click",this._onClick),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),this._element.removeEventListener("click",this._onClick),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=h.W.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){let c=Math.abs(13.5)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[c,-1*(38.1-13.5+c)],"bottom-right":[-c,-1*(38.1-13.5+c)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(t){return this._subpixelPositioning=t,this}getPopup(){return this._popup}togglePopup(){let t=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:t?(t.isOpen()?t.remove():(t.setLngLat(this._lngLat),t.addTo(this._map)),this):this}_updateOpacity(t=!1){var n,s;let c=(n=this._map)===null||n===void 0?void 0:n.terrain,f=this._map.transform.isLocationOccluded(this._lngLat);if(!c||f){let z=f?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==z&&(this._element.style.opacity=z,this._element.classList.toggle("maplibregl-marker-covered",f)))}if(t)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout((()=>{this._opacityTimeout=null}),100)}let y=this._map,v=y.terrain.depthAtPoint(this._pos),w=y.terrain.getElevationForLngLat(this._lngLat,y.transform);if(y.transform.lngLatToCameraDepth(this._lngLat,w)-v<.006)return this._element.style.opacity=this._opacity,void this._element.classList.remove("maplibregl-marker-covered");let S=-this._offset.y/y.transform.pixelsPerMeter,P=Math.sin(y.getPitch()*Math.PI/180)*S,E=y.terrain.depthAtPoint(new h.P(this._pos.x,this._pos.y-this._offset.y)),C=y.transform.lngLatToCameraDepth(this._lngLat,w+P)-E>.006;!((s=this._popup)===null||s===void 0)&&s.isOpen()&&C&&this._popup.remove(),this._element.style.opacity=C?this._opacityWhenCovered:this._opacity,this._element.classList.toggle("maplibregl-marker-covered",C)}getOffset(){return this._offset}setOffset(t){return this._offset=h.P.convert(t),this._update(),this}addClassName(t){this._element.classList.add(t)}removeClassName(t){this._element.classList.remove(t)}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(t,n){return(this._opacity===void 0||t===void 0&&n===void 0)&&(this._opacity="1",this._opacityWhenCovered="0.2"),t!==void 0&&(this._opacity=String(t)),n!==void 0&&(this._opacityWhenCovered=String(n)),this._map&&this._updateOpacity(!0),this}}let Wl={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},fo=0,Cn=!1,Hl={maxWidth:100,unit:"metric"};function da(d,t,n){let s=n?.maxWidth||100,c=d._container.clientHeight/2,f=d._container.clientWidth/2,y=d.unproject([f-s/2,c]),v=d.unproject([f+s/2,c]),w=Math.round(d.project(v).x-d.project(y).x),S=Math.min(s,w,d._container.clientWidth),P=y.distanceTo(v);if(n?.unit==="imperial"){let E=3.2808*P;E>5280?An(t,S,E/5280,d._getUIString("ScaleControl.Miles")):An(t,S,E,d._getUIString("ScaleControl.Feet"))}else n?.unit==="nautical"?An(t,S,P/1852,d._getUIString("ScaleControl.NauticalMiles")):P>=1e3?An(t,S,P/1e3,d._getUIString("ScaleControl.Kilometers")):An(t,S,P,d._getUIString("ScaleControl.Meters"))}function An(d,t,n,s){let c=(function(f){let y=Math.pow(10,`${Math.floor(f)}`.length-1),v=f/y;return v=v>=10?10:v>=5?5:v>=3?3:v>=2?2:v>=1?1:(function(w){let S=Math.pow(10,Math.ceil(-Math.log(w)/Math.LN10));return Math.round(w*S)/S})(v),y*v})(n);d.style.width=t*(c/n)+"px",d.innerHTML=`${c} ${s}`}let Xl={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0,padding:void 0},ms=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function gs(d){if(d){if(typeof d=="number"){let t=Math.round(Math.abs(d)/Math.SQRT2);return{center:new h.P(0,0),top:new h.P(0,d),"top-left":new h.P(t,t),"top-right":new h.P(-t,t),bottom:new h.P(0,-d),"bottom-left":new h.P(t,-t),"bottom-right":new h.P(-t,-t),left:new h.P(d,0),right:new h.P(-d,0)}}if(d instanceof h.P||Array.isArray(d)){let t=h.P.convert(d);return{center:t,top:t,"top-left":t,"top-right":t,bottom:t,"bottom-left":t,"bottom-right":t,left:t,right:t}}return{center:h.P.convert(d.center||[0,0]),top:h.P.convert(d.top||[0,0]),"top-left":h.P.convert(d["top-left"]||[0,0]),"top-right":h.P.convert(d["top-right"]||[0,0]),bottom:h.P.convert(d.bottom||[0,0]),"bottom-left":h.P.convert(d["bottom-left"]||[0,0]),"bottom-right":h.P.convert(d["bottom-right"]||[0,0]),left:h.P.convert(d.left||[0,0]),right:h.P.convert(d.right||[0,0])}}return gs(new h.P(0,0))}let Yl=fe;k.AJAXError=h.cG,k.EXTENT=h.a6,k.Event=h.n,k.Evented=h.E,k.LngLat=h.W,k.MercatorCoordinate=h.a7,k.Point=h.P,k.addProtocol=h.cH,k.config=h.c,k.removeProtocol=h.cI,k.AttributionControl=Ki,k.BoxZoomHandler=mr,k.CanvasSource=Ys,k.CooperativeGesturesHandler=Re,k.DoubleClickZoomHandler=$l,k.DragPanHandler=cr,k.DragRotateHandler=aa,k.EdgeInsets=Xn,k.FullscreenControl=class extends h.E{constructor(d={}){var t;super(),this._onFullscreenChange=()=>{var n;let s=window.document.fullscreenElement||window.document.webkitFullscreenElement;for(;!((n=s?.shadowRoot)===null||n===void 0)&&n.fullscreenElement;)s=s.shadowRoot.fullscreenElement;s===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,this._pseudo=(t=d.pseudo)!==null&&t!==void 0&&t,d?.container&&(d.container instanceof HTMLElement?this._container=d.container:h.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(d){return this._map=d,this._container||(this._container=this._map.getContainer()),this._controlContainer=_e.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let d=this._fullscreenButton=_e.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);_e.create("span","maplibregl-ctrl-icon",d).setAttribute("aria-hidden","true"),d.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let d=this._getTitle();this._fullscreenButton.setAttribute("aria-label",d),this._fullscreenButton.title=d}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new h.n("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new h.n("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){this._pseudo?this._togglePseudoFullScreen():window.document.exitFullscreen?window.document.exitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._pseudo?this._togglePseudoFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},k.GeoJSONSource=Pa,k.GeolocateControl=class extends h.E{constructor(d){super(),this._onSuccess=t=>{if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new h.n("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(t),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new h.n("geolocate",t)),this._finish()}},this._updateCamera=t=>{let n=new h.W(t.coords.longitude,t.coords.latitude),s=t.coords.accuracy,c=this._map.getBearing(),f=h.e({bearing:c},this.options.fitBoundsOptions),y=Oe.fromLngLat(n,s);this._map.fitBounds(y,f,{geolocateSource:!0})},this._updateMarker=t=>{if(t){let n=new h.W(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(n).addTo(this._map),this._userLocationDotMarker.setLngLat(n).addTo(this._map),this._accuracy=t.coords.accuracy,this._updateCircleRadiusIfNeeded()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded()},this._onError=t=>{if(this._map){if(t.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(t.code===3&&Cn)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new h.n("error",t)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._onMoveStart=t=>{if(!this._map)return;let n=t?.[0]instanceof ResizeObserverEntry;t.geolocateSource||this._watchState!=="ACTIVE_LOCK"||n||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new h.n("trackuserlocationend")),this.fire(new h.n("userlocationlostfocus")))},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",(t=>{t.preventDefault()})),this._geolocateButton=_e.create("button","maplibregl-ctrl-geolocate",this._container),_e.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=t=>{if(this._map){if(t===!1){h.w("Geolocation support is not available so the GeolocateControl will be disabled.");let n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}else{let n=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=_e.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ha({element:this._dotElement}),this._circleElement=_e.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ha({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",(()=>this.trigger())),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",this._onMoveStart)}},this.options=h.e({},Wl,d)}onAdd(d){return this._map=d,this._container=_e.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),(function(){return h._(this,arguments,void 0,(function*(t=!1){if(Mr!==void 0&&!t)return Mr;if(window.navigator.permissions===void 0)return Mr=!!window.navigator.geolocation,Mr;try{Mr=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch{Mr=!!window.navigator.geolocation}return Mr}))})().then((t=>this._finishSetupUI(t))),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("movestart",this._onMoveStart),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,fo=0,Cn=!1}_isOutOfMapMaxBounds(d){let t=this._map.getMaxBounds(),n=d.coords;return t&&(n.longitudet.getEast()||n.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":case"BACKGROUND_ERROR":case"OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){let d=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&d))return;let t=this._map.project(d),n=this._map.unproject([t.x+100,t.y]),s=d.distanceTo(n)/100,c=2*this._accuracy/s;this._circleElement.style.width=`${c.toFixed(2)}px`,this._circleElement.style.height=`${c.toFixed(2)}px`}trigger(){if(!this._setup)return h.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new h.n("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":fo--,Cn=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new h.n("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new h.n("trackuserlocationstart")),this.fire(new h.n("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let d;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),fo++,fo>1?(d={maximumAge:6e5,timeout:0},Cn=!0):(d=this.options.positionOptions,Cn=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,d)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},k.GlobeControl=class{constructor(){this._toggleProjection=()=>{var d;let t=(d=this._map.getProjection())===null||d===void 0?void 0:d.type;this._map.setProjection(t!=="mercator"&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon()},this._updateGlobeIcon=()=>{var d;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),((d=this._map.getProjection())===null||d===void 0?void 0:d.type)==="globe"?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"))}}onAdd(d){return this._map=d,this._container=_e.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=_e.create("button","maplibregl-ctrl-globe",this._container),_e.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._map.on("projectiontransition",this._updateGlobeIcon),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateGlobeIcon),this._map.off("projectiontransition",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0}},k.Hash=ea,k.ImageSource=Or,k.KeyboardHandler=wu,k.LngLatBounds=Oe,k.LogoControl=Zl,k.Map=ds,k.MapLibreMap=ds,k.MapMouseEvent=ji,k.MapTouchEvent=ia,k.MapWheelEvent=fu,k.Marker=ha,k.NavigationControl=class{constructor(d){this._updateZoomButtons=()=>{let t=this._map.getZoom(),n=t===this._map.getMaxZoom(),s=t===this._map.getMinZoom();this._zoomInButton.disabled=n,this._zoomOutButton.disabled=s,this._zoomInButton.setAttribute("aria-disabled",n.toString()),this._zoomOutButton.setAttribute("aria-disabled",s.toString())},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`},this._setButtonTitle=(t,n)=>{let s=this._map._getUIString(`NavigationControl.${n}`);t.title=s,t.setAttribute("aria-label",s)},this.options=h.e({},ql,d),this._container=_e.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(t=>this._map.zoomIn({},{originalEvent:t}))),_e.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(t=>this._map.zoomOut({},{originalEvent:t}))),_e.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})})),this._compassIcon=_e.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(d){return this._map=d,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ca(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){this._container.remove(),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(d,t){let n=_e.create("button",d,this._container);return n.type="button",n.addEventListener("click",t),n}},k.Popup=class extends h.E{constructor(d){super(),this._updateOpacity=()=>{this.options.locationOccludedOpacity!==void 0&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"")},this.remove=()=>(this._content&&this._content.remove(),this._container&&(this._container.remove(),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("terrain",this._update),this._map.off("projectiontransition",this._update),this._map.off("mousemove",this._update),this._map.off("mouseup",this._update),this._map.off("drag",this._update),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new h.n("close"))),this),this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=_e.create("div","maplibregl-popup",this._map.getContainer()),this._tip=_e.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let v of this.options.className.split(" "))this._container.classList.add(v);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}let n;if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=ps(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),t&&"point"in t&&t.point&&(n=t.point),this._trackPointer&&!n)return;let s=this._flatPos=this._pos=this._trackPointer&&n?n:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&n?n:this._map.transform.locationToScreenPoint(this._lngLat));let c=this.options.anchor,f=gs(this.options.offset);if(!c){let v=this._container.offsetWidth,w=this._container.offsetHeight,S=(function(E){var C,z,B,j;return E?{top:(C=E.top)!==null&&C!==void 0?C:0,right:(z=E.right)!==null&&z!==void 0?z:0,bottom:(B=E.bottom)!==null&&B!==void 0?B:0,left:(j=E.left)!==null&&j!==void 0?j:0}:{top:0,right:0,bottom:0,left:0}})(this.options.padding),P;P=s.y+f.bottom.ythis._map.transform.height-w-S.bottom?["bottom"]:[],s.xthis._map.transform.width-v/2-S.right&&P.push("right"),c=P.length===0?"bottom":P.join("-")}let y=s.add(f[c]);this.options.subpixelPositioning||(y=y.round()),this._container.style.transform=`${ua[c]} translate(${y.x}px,${y.y}px)`,fs(this._container,c,"popup"),this._updateOpacity()},this._onClose=()=>{this.remove()},this.options=h.e(Object.create(Xl),d)}addTo(d){return this._map&&this.remove(),this._map=d,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._map.on("terrain",this._update),this._map.on("projectiontransition",this._update),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._update),this._map.on("mouseup",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new h.n("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(d){return this._lngLat=h.W.convert(d),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._update),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._update),this._map.on("drag",this._update),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(d){return this.setDOMContent(document.createTextNode(d))}setHTML(d){let t=document.createDocumentFragment(),n=document.createElement("body"),s;for(n.innerHTML=d;s=n.firstChild,s;)t.appendChild(s);return this.setDOMContent(t)}getMaxWidth(){var d;return(d=this._container)===null||d===void 0?void 0:d.style.maxWidth}setMaxWidth(d){return this.options.maxWidth=d,this._update(),this}setDOMContent(d){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=_e.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(d),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(d){return this._container&&this._container.classList.add(d),this}removeClassName(d){return this._container&&this._container.classList.remove(d),this}setOffset(d){return this.options.offset=d,this._update(),this}toggleClassName(d){if(this._container)return this._container.classList.toggle(d)}setSubpixelPositioning(d){this.options.subpixelPositioning=d}setPadding(d){this.options.padding=d,this._update()}_createCloseButton(){this.options.closeButton&&(this._closeButton=_e.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let d=this._container.querySelector(ms);d&&d.focus()}},k.RasterDEMTileSource=ii,k.RasterTileSource=Li,k.ScaleControl=class{constructor(d){this._onMove=()=>{da(this._map,this._container,this.options)},this.setUnit=t=>{this.options.unit=t,da(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Hl),d)}getDefaultPosition(){return"bottom-left"}onAdd(d){return this._map=d,this._container=_e.create("div","maplibregl-ctrl maplibregl-ctrl-scale",d.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._onMove),this._map=void 0}},k.ScrollZoomHandler=Gl,k.Style=vn,k.TerrainControl=class{constructor(d){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=d}onAdd(d){return this._map=d,this._container=_e.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=_e.create("button","maplibregl-ctrl-terrain",this._container),_e.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){this._container.remove(),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},k.TwoFingersTouchPitchHandler=Pr,k.TwoFingersTouchRotateHandler=bu,k.TwoFingersTouchZoomHandler=vu,k.TwoFingersTouchZoomRotateHandler=De,k.VectorTileSource=ti,k.VideoSource=sn,k.addSourceType=(d,t)=>h._(void 0,void 0,void 0,(function*(){if(Ma(d))throw new Error(`A source type called "${d}" already exists.`);((n,s)=>{Ks[n]=s})(d,t)})),k.clearPrewarmedResources=function(){let d=qi;d&&(d.isPreloaded()&&d.numActive()===1?(d.release(Et),qi=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},k.createTileMesh=Qn,k.getGlobalDispatcher=gi,k.getMaxParallelImageRequests=function(){return h.c.MAX_PARALLEL_IMAGE_REQUESTS},k.getRTLTextPluginStatus=function(){return Vr().getRTLTextPluginStatus()},k.getVersion=function(){return Yl},k.getWorkerCount=function(){return Ct.workerCount},k.getWorkerUrl=function(){return h.c.WORKER_URL},k.importScriptInWorkers=function(d){return gi().broadcast("IS",d)},k.isTimeFrozen=function(){return It.isFrozen()},k.now=Xe,k.prewarm=function(){nn().acquire(Et)},k.restoreNow=function(){It.restoreNow()},k.setMaxParallelImageRequests=function(d){h.c.MAX_PARALLEL_IMAGE_REQUESTS=d},k.setNow=function(d){It.setNow(d)},k.setRTLTextPlugin=function(d,t){return Vr().setRTLTextPlugin(d,t)},k.setWorkerCount=function(d){Ct.workerCount=d},k.setWorkerUrl=function(d){h.c.WORKER_URL=d}}));var Se=V;return Se}))});var qx={};Qm(qx,{chromatic:()=>Cp,maplibregl:()=>T_.default,topojsonFeature:()=>Hd});var T_=Sx(ig(),1);function Wd(V){return V}function eh(V){if(V==null)return Wd;var ee,de,Se=V.scale[0],k=V.scale[1],h=V.translate[0],fe=V.translate[1];return function(Ze,nt){nt||(ee=de=0);var Gt=2,We=Ze.length,He=new Array(We);for(He[0]=(ee+=Ze[0])*Se+h,He[1]=(de+=Ze[1])*k+fe;Gta_,interpolateBrBG:()=>Vg,interpolateBuGn:()=>Hg,interpolateBuPu:()=>Xg,interpolateCividis:()=>d_,interpolateCool:()=>m_,interpolateCubehelixDefault:()=>p_,interpolateGnBu:()=>Yg,interpolateGreens:()=>s_,interpolateGreys:()=>l_,interpolateInferno:()=>b_,interpolateMagma:()=>v_,interpolateOrRd:()=>Kg,interpolateOranges:()=>h_,interpolatePRGn:()=>jg,interpolatePiYG:()=>Ng,interpolatePlasma:()=>w_,interpolatePuBu:()=>Qg,interpolatePuBuGn:()=>Jg,interpolatePuOr:()=>Ug,interpolatePuRd:()=>e_,interpolatePurples:()=>c_,interpolateRainbow:()=>g_,interpolateRdBu:()=>Gg,interpolateRdGy:()=>$g,interpolateRdPu:()=>t_,interpolateRdYlBu:()=>Zg,interpolateRdYlGn:()=>qg,interpolateReds:()=>u_,interpolateSinebow:()=>__,interpolateSpectral:()=>Wg,interpolateTurbo:()=>y_,interpolateViridis:()=>x_,interpolateWarm:()=>f_,interpolateYlGn:()=>r_,interpolateYlGnBu:()=>i_,interpolateYlOrBr:()=>n_,interpolateYlOrRd:()=>o_,schemeAccent:()=>ag,schemeBlues:()=>Tp,schemeBrBG:()=>ip,schemeBuGn:()=>hp,schemeBuPu:()=>dp,schemeCategory10:()=>og,schemeDark2:()=>sg,schemeGnBu:()=>pp,schemeGreens:()=>Sp,schemeGreys:()=>Pp,schemeObservable10:()=>lg,schemeOrRd:()=>fp,schemeOranges:()=>Ep,schemePRGn:()=>rp,schemePaired:()=>cg,schemePastel1:()=>ug,schemePastel2:()=>hg,schemePiYG:()=>np,schemePuBu:()=>gp,schemePuBuGn:()=>mp,schemePuOr:()=>op,schemePuRd:()=>_p,schemePurples:()=>Mp,schemeRdBu:()=>ap,schemeRdGy:()=>sp,schemeRdPu:()=>yp,schemeRdYlBu:()=>lp,schemeRdYlGn:()=>cp,schemeReds:()=>Ip,schemeSet1:()=>dg,schemeSet2:()=>pg,schemeSet3:()=>fg,schemeSpectral:()=>up,schemeTableau10:()=>mg,schemeYlGn:()=>vp,schemeYlGnBu:()=>xp,schemeYlOrBr:()=>bp,schemeYlOrRd:()=>wp});function Ce(V){for(var ee=V.length/6|0,de=new Array(ee),Se=0;Se>8&15|ee>>4&240,ee>>4&15|ee&240,(ee&15)<<4|ee&15,1):de===8?th(ee>>24&255,ee>>16&255,ee>>8&255,(ee&255)/255):de===4?th(ee>>12&15|ee>>8&240,ee>>8&15|ee>>4&240,ee>>4&15|ee&240,((ee&15)<<4|ee&15)/255):null):(ee=Ax.exec(V))?new Mi(ee[1],ee[2],ee[3],1):(ee=Dx.exec(V))?new Mi(ee[1]*255/100,ee[2]*255/100,ee[3]*255/100,1):(ee=zx.exec(V))?th(ee[1],ee[2],ee[3],ee[4]):(ee=kx.exec(V))?th(ee[1]*255/100,ee[2]*255/100,ee[3]*255/100,ee[4]):(ee=Rx.exec(V))?wg(ee[1],ee[2]/100,ee[3]/100,1):(ee=Lx.exec(V))?wg(ee[1],ee[2]/100,ee[3]/100,ee[4]):gg.hasOwnProperty(V)?xg(gg[V]):V==="transparent"?new Mi(NaN,NaN,NaN,0):null}function xg(V){return new Mi(V>>16&255,V>>8&255,V&255,1)}function th(V,ee,de,Se){return Se<=0&&(V=ee=de=NaN),new Mi(V,ee,de,Se)}function Kd(V){return V instanceof Ta||(V=bc(V)),V?(V=V.rgb(),new Mi(V.r,V.g,V.b,V.opacity)):new Mi}function So(V,ee,de,Se){return arguments.length===1?Kd(V):new Mi(V,ee,de,Se??1)}function Mi(V,ee,de,Se){this.r=+V,this.g=+ee,this.b=+de,this.opacity=+Se}Zs(Mi,So,xc(Ta,{brighter(V){return V=V==null?wa:Math.pow(wa,V),new Mi(this.r*V,this.g*V,this.b*V,this.opacity)},darker(V){return V=V==null?To:Math.pow(To,V),new Mi(this.r*V,this.g*V,this.b*V,this.opacity)},rgb(){return this},clamp(){return new Mi(ba(this.r),ba(this.g),ba(this.b),rh(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:vg,formatHex:vg,formatHex8:Ox,formatRgb:bg,toString:bg}));function vg(){return`#${va(this.r)}${va(this.g)}${va(this.b)}`}function Ox(){return`#${va(this.r)}${va(this.g)}${va(this.b)}${va((isNaN(this.opacity)?1:this.opacity)*255)}`}function bg(){let V=rh(this.opacity);return`${V===1?"rgb(":"rgba("}${ba(this.r)}, ${ba(this.g)}, ${ba(this.b)}${V===1?")":`, ${V})`}`}function rh(V){return isNaN(V)?1:Math.max(0,Math.min(1,V))}function ba(V){return Math.max(0,Math.min(255,Math.round(V)||0))}function va(V){return V=ba(V),(V<16?"0":"")+V.toString(16)}function wg(V,ee,de,Se){return Se<=0?V=ee=de=NaN:de<=0||de>=1?V=ee=NaN:ee<=0&&(V=NaN),new Rr(V,ee,de,Se)}function Sg(V){if(V instanceof Rr)return new Rr(V.h,V.s,V.l,V.opacity);if(V instanceof Ta||(V=bc(V)),!V)return new Rr;if(V instanceof Rr)return V;V=V.rgb();var ee=V.r/255,de=V.g/255,Se=V.b/255,k=Math.min(ee,de,Se),h=Math.max(ee,de,Se),fe=NaN,Ze=h-k,nt=(h+k)/2;return Ze?(ee===h?fe=(de-Se)/Ze+(de0&&nt<1?0:fe,new Rr(fe,Ze,nt,V.opacity)}function Pg(V,ee,de,Se){return arguments.length===1?Sg(V):new Rr(V,ee,de,Se??1)}function Rr(V,ee,de,Se){this.h=+V,this.s=+ee,this.l=+de,this.opacity=+Se}Zs(Rr,Pg,xc(Ta,{brighter(V){return V=V==null?wa:Math.pow(wa,V),new Rr(this.h,this.s,this.l*V,this.opacity)},darker(V){return V=V==null?To:Math.pow(To,V),new Rr(this.h,this.s,this.l*V,this.opacity)},rgb(){var V=this.h%360+(this.h<0)*360,ee=isNaN(V)||isNaN(this.s)?0:this.s,de=this.l,Se=de+(de<.5?de:1-de)*ee,k=2*de-Se;return new Mi(Yd(V>=240?V-240:V+120,k,Se),Yd(V,k,Se),Yd(V<120?V+240:V-120,k,Se),this.opacity)},clamp(){return new Rr(Tg(this.h),ih(this.s),ih(this.l),rh(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let V=rh(this.opacity);return`${V===1?"hsl(":"hsla("}${Tg(this.h)}, ${ih(this.s)*100}%, ${ih(this.l)*100}%${V===1?")":`, ${V})`}`}}));function Tg(V){return V=(V||0)%360,V<0?V+360:V}function ih(V){return Math.max(0,Math.min(1,V||0))}function Yd(V,ee,de){return(V<60?ee+(de-ee)*V/60:V<180?de:V<240?ee+(de-ee)*(240-V)/60:ee)*255}var Mg=Math.PI/180,Ig=180/Math.PI;var Dg=-.14861,Jd=1.78277,Qd=-.29227,nh=-.90649,wc=1.97294,Eg=wc*nh,Cg=wc*Jd,Ag=Jd*Qd-nh*Dg;function Vx(V){if(V instanceof Sa)return new Sa(V.h,V.s,V.l,V.opacity);V instanceof Mi||(V=Kd(V));var ee=V.r/255,de=V.g/255,Se=V.b/255,k=(Ag*Se+Eg*ee-Cg*de)/(Ag+Eg-Cg),h=Se-k,fe=(wc*(de-k)-Qd*h)/nh,Ze=Math.sqrt(fe*fe+h*h)/(wc*k*(1-k)),nt=Ze?Math.atan2(fe,h)*Ig-120:NaN;return new Sa(nt<0?nt+360:nt,Ze,k,V.opacity)}function Zi(V,ee,de,Se){return arguments.length===1?Vx(V):new Sa(V,ee,de,Se??1)}function Sa(V,ee,de,Se){this.h=+V,this.s=+ee,this.l=+de,this.opacity=+Se}Zs(Sa,Zi,xc(Ta,{brighter(V){return V=V==null?wa:Math.pow(wa,V),new Sa(this.h,this.s,this.l*V,this.opacity)},darker(V){return V=V==null?To:Math.pow(To,V),new Sa(this.h,this.s,this.l*V,this.opacity)},rgb(){var V=isNaN(this.h)?0:(this.h+120)*Mg,ee=+this.l,de=isNaN(this.s)?0:this.s*ee*(1-ee),Se=Math.cos(V),k=Math.sin(V);return new Mi(255*(ee+de*(Dg*Se+Jd*k)),255*(ee+de*(Qd*Se+nh*k)),255*(ee+de*(wc*Se)),this.opacity)}}));function ep(V,ee,de,Se,k){var h=V*V,fe=h*V;return((1-3*V+3*h-fe)*ee+(4-6*h+3*fe)*de+(1+3*V+3*h-3*fe)*Se+fe*k)/6}function zg(V){var ee=V.length-1;return function(de){var Se=de<=0?de=0:de>=1?(de=1,ee-1):Math.floor(de*ee),k=V[Se],h=V[Se+1],fe=Se>0?V[Se-1]:2*k-h,Ze=Se()=>V;function Rg(V,ee){return function(de){return V+de*ee}}function jx(V,ee,de){return V=Math.pow(V,de),ee=Math.pow(ee,de)-V,de=1/de,function(Se){return Math.pow(V+Se*ee,de)}}function Lg(V,ee){var de=ee-V;return de?Rg(V,de>180||de<-180?de-360*Math.round(de/360):de):oh(isNaN(V)?ee:V)}function Fg(V){return(V=+V)==1?Bn:function(ee,de){return de-ee?jx(ee,de,V):oh(isNaN(ee)?de:ee)}}function Bn(V,ee){var de=ee-V;return de?Rg(V,de):oh(isNaN(V)?ee:V)}var Nx=(function V(ee){var de=Fg(ee);function Se(k,h){var fe=de((k=So(k)).r,(h=So(h)).r),Ze=de(k.g,h.g),nt=de(k.b,h.b),Gt=Bn(k.opacity,h.opacity);return function(We){return k.r=fe(We),k.g=Ze(We),k.b=nt(We),k.opacity=Gt(We),k+""}}return Se.gamma=V,Se})(1);function Bg(V){return function(ee){var de=ee.length,Se=new Array(de),k=new Array(de),h=new Array(de),fe,Ze;for(fe=0;fetp(V[V.length-1]);var ip=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Ce),Vg=je(ip);var rp=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Ce),jg=je(rp);var np=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Ce),Ng=je(np);var op=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Ce),Ug=je(op);var ap=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Ce),Gg=je(ap);var sp=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Ce),$g=je(sp);var lp=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Ce),Zg=je(lp);var cp=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Ce),qg=je(cp);var up=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Ce),Wg=je(up);var hp=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Ce),Hg=je(hp);var dp=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Ce),Xg=je(dp);var pp=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Ce),Yg=je(pp);var fp=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Ce),Kg=je(fp);var mp=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Ce),Jg=je(mp);var gp=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Ce),Qg=je(gp);var _p=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Ce),e_=je(_p);var yp=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Ce),t_=je(yp);var xp=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Ce),i_=je(xp);var vp=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Ce),r_=je(vp);var bp=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Ce),n_=je(bp);var wp=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Ce),o_=je(wp);var Tp=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Ce),a_=je(Tp);var Sp=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Ce),s_=je(Sp);var Pp=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Ce),l_=je(Pp);var Mp=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Ce),c_=je(Mp);var Ip=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Ce),u_=je(Ip);var Ep=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Ce),h_=je(Ep);function d_(V){return V=Math.max(0,Math.min(1,V)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-V*(35.34-V*(2381.73-V*(6402.7-V*(7024.72-V*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+V*(170.73+V*(52.82-V*(131.46-V*(176.58-V*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+V*(442.36-V*(2482.43-V*(6167.24-V*(6614.94-V*2475.67)))))))+")"}var p_=Ws(Zi(300,.5,0),Zi(-240,.5,1));var f_=Ws(Zi(-100,.75,.35),Zi(80,1.5,.8)),m_=Ws(Zi(260,.75,.35),Zi(80,1.5,.8)),ah=Zi();function g_(V){(V<0||V>1)&&(V-=Math.floor(V));var ee=Math.abs(V-.5);return ah.h=360*V-100,ah.s=1.5-1.5*ee,ah.l=.8-.9*ee,ah+""}var sh=So(),$x=Math.PI/3,Zx=Math.PI*2/3;function __(V){var ee;return V=(.5-V)*Math.PI,sh.r=255*(ee=Math.sin(V))*ee,sh.g=255*(ee=Math.sin(V+$x))*ee,sh.b=255*(ee=Math.sin(V+Zx))*ee,sh+""}function y_(V){return V=Math.max(0,Math.min(1,V)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+V*(1172.33-V*(10793.56-V*(33300.12-V*(38394.49-V*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+V*(557.33+V*(1225.33-V*(3574.96-V*(1073.77+V*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+V*(3211.1-V*(15327.97-V*(27814-V*(22569.18-V*6838.66)))))))+")"}function lh(V){var ee=V.length;return function(de){return V[Math.max(0,Math.min(ee-1,Math.floor(de*ee)))]}}var x_=lh(Ce("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),v_=lh(Ce("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),b_=lh(Ce("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),w_=lh(Ce("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));return Px(qx);})(); diff --git a/r/inst/htmlwidgets/lib/sigma/rtemis-graph-deps.js b/r/inst/htmlwidgets/lib/sigma/rtemis-graph-deps.js new file mode 100644 index 0000000..8347709 --- /dev/null +++ b/r/inst/htmlwidgets/lib/sigma/rtemis-graph-deps.js @@ -0,0 +1,3154 @@ +var RtemisGraph=(()=>{var Ls=Object.create;var sn=Object.defineProperty;var Ps=Object.getOwnPropertyDescriptor;var ks=Object.getOwnPropertyNames;var Is=Object.getPrototypeOf,Fs=Object.prototype.hasOwnProperty;var se=(n,a)=>()=>(a||n((a={exports:{}}).exports,a),a.exports),zs=(n,a)=>{for(var e in a)sn(n,e,{get:a[e],enumerable:!0})},tr=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of ks(a))!Fs.call(n,r)&&r!==e&&sn(n,r,{get:()=>a[r],enumerable:!(t=Ps(a,r))||t.enumerable});return n};var Ye=(n,a,e)=>(e=n!=null?Ls(Is(n)):{},tr(a||!n||!n.__esModule?sn(e,"default",{value:n,enumerable:!0}):e,n)),Gs=n=>tr(sn({},"__esModule",{value:!0}),n);var Nt=se((Jc,la)=>{"use strict";var bt=typeof Reflect=="object"?Reflect:null,nr=bt&&typeof bt.apply=="function"?bt.apply:function(a,e,t){return Function.prototype.apply.call(a,e,t)},ln;bt&&typeof bt.ownKeys=="function"?ln=bt.ownKeys:Object.getOwnPropertySymbols?ln=function(a){return Object.getOwnPropertyNames(a).concat(Object.getOwnPropertySymbols(a))}:ln=function(a){return Object.getOwnPropertyNames(a)};function Ms(n){console&&console.warn&&console.warn(n)}var rr=Number.isNaN||function(a){return a!==a};function ae(){ae.init.call(this)}la.exports=ae;la.exports.once=Bs;ae.EventEmitter=ae;ae.prototype._events=void 0;ae.prototype._eventsCount=0;ae.prototype._maxListeners=void 0;var ar=10;function un(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(ae,"defaultMaxListeners",{enumerable:!0,get:function(){return ar},set:function(n){if(typeof n!="number"||n<0||rr(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");ar=n}});ae.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};ae.prototype.setMaxListeners=function(a){if(typeof a!="number"||a<0||rr(a))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+a+".");return this._maxListeners=a,this};function ir(n){return n._maxListeners===void 0?ae.defaultMaxListeners:n._maxListeners}ae.prototype.getMaxListeners=function(){return ir(this)};ae.prototype.emit=function(a){for(var e=[],t=1;t0&&(o=e[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=i[a];if(l===void 0)return!1;if(typeof l=="function")nr(l,this,e);else for(var u=l.length,d=dr(l,u),t=0;t0&&o.length>r&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(a)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=n,s.type=a,s.count=o.length,Ms(s)}return n}ae.prototype.addListener=function(a,e){return or(this,a,e,!1)};ae.prototype.on=ae.prototype.addListener;ae.prototype.prependListener=function(a,e){return or(this,a,e,!0)};function Ns(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function sr(n,a,e){var t={fired:!1,wrapFn:void 0,target:n,type:a,listener:e},r=Ns.bind(t);return r.listener=e,t.wrapFn=r,r}ae.prototype.once=function(a,e){return un(e),this.on(a,sr(this,a,e)),this};ae.prototype.prependOnceListener=function(a,e){return un(e),this.prependListener(a,sr(this,a,e)),this};ae.prototype.removeListener=function(a,e){var t,r,i,o,s;if(un(e),r=this._events,r===void 0)return this;if(t=r[a],t===void 0)return this;if(t===e||t.listener===e)--this._eventsCount===0?this._events=Object.create(null):(delete r[a],r.removeListener&&this.emit("removeListener",a,t.listener||e));else if(typeof t!="function"){for(i=-1,o=t.length-1;o>=0;o--)if(t[o]===e||t[o].listener===e){s=t[o].listener,i=o;break}if(i<0)return this;i===0?t.shift():Ws(t,i),t.length===1&&(r[a]=t[0]),r.removeListener!==void 0&&this.emit("removeListener",a,s||e)}return this};ae.prototype.off=ae.prototype.removeListener;ae.prototype.removeAllListeners=function(a){var e,t,r;if(t=this._events,t===void 0)return this;if(t.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):t[a]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete t[a]),this;if(arguments.length===0){var i=Object.keys(t),o;for(r=0;r=0;r--)this.removeListener(a,e[r]);return this};function lr(n,a,e){var t=n._events;if(t===void 0)return[];var r=t[a];return r===void 0?[]:typeof r=="function"?e?[r.listener||r]:[r]:e?Os(r):dr(r,r.length)}ae.prototype.listeners=function(a){return lr(this,a,!0)};ae.prototype.rawListeners=function(a){return lr(this,a,!1)};ae.listenerCount=function(n,a){return typeof n.listenerCount=="function"?n.listenerCount(a):ur.call(n,a)};ae.prototype.listenerCount=ur;function ur(n){var a=this._events;if(a!==void 0){var e=a[n];if(typeof e=="function")return 1;if(e!==void 0)return e.length}return 0}ae.prototype.eventNames=function(){return this._eventsCount>0?ln(this._events):[]};function dr(n,a){for(var e=new Array(a),t=0;t{Jr.exports=function(a){return a!==null&&typeof a=="object"&&typeof a.addUndirectedEdgeWithKey=="function"&&typeof a.dropNode=="function"&&typeof a.multi=="boolean"}});var mt=se((Kf,fo)=>{function Jh(n){return!n||typeof n!="object"||typeof n=="function"||Array.isArray(n)||n instanceof Set||n instanceof Map||n instanceof RegExp||n instanceof Date}function co(n,a){n=n||{};var e={};for(var t in a){var r=n[t],i=a[t];if(!Jh(i)){e[t]=co(r,i);continue}r===void 0?e[t]=i:e[t]=r}return e}fo.exports=co});var vo=se((Zf,go)=>{var ec=Ue();go.exports=function(a){if(!ec(a))throw new Error("graphology-utils/infer-type: expecting a valid graphology instance.");var e=a.type;return e!=="mixed"?e:a.directedSize===0&&a.undirectedSize===0||a.directedSize>0&&a.undirectedSize>0?"mixed":a.directedSize>0?"directed":"undirected"}});var ja=se((Qf,po)=>{function Ve(n){if(typeof n!="function")throw new Error("obliterator/iterator: expecting a function!");this.next=n}typeof Symbol<"u"&&(Ve.prototype[Symbol.iterator]=function(){return this});Ve.of=function(){var n=arguments,a=n.length,e=0;return new Ve(function(){return e>=a?{done:!0}:{done:!1,value:n[e++]}})};Ve.empty=function(){var n=new Ve(function(){return{done:!0}});return n};Ve.fromSequence=function(n){var a=0,e=n.length;return new Ve(function(){return a>=e?{done:!0}:{done:!1,value:n[a++]}})};Ve.is=function(n){return n instanceof Ve?!0:typeof n=="object"&&n!==null&&typeof n.next=="function"};po.exports=Ve});var Kn=se(je=>{var tc=Math.pow(2,8)-1,nc=Math.pow(2,16)-1,ac=Math.pow(2,32)-1,rc=Math.pow(2,7)-1,ic=Math.pow(2,15)-1,oc=Math.pow(2,31)-1;je.getPointerArray=function(n){var a=n-1;if(a<=tc)return Uint8Array;if(a<=nc)return Uint16Array;if(a<=ac)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};je.getSignedPointerArray=function(n){var a=n-1;return a<=rc?Int8Array:a<=ic?Int16Array:a<=oc?Int32Array:Float64Array};je.getNumberType=function(n){return n===(n|0)?Math.sign(n)===-1?n<=127&&n>=-128?Int8Array:n<=32767&&n>=-32768?Int16Array:Int32Array:n<=255?Uint8Array:n<=65535?Uint16Array:Uint32Array:Float64Array};var sc={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};je.getMinimalRepresentation=function(n,a){var e=null,t=0,r,i,o,s,l;for(s=0,l=n.length;st&&(t=r,e=i);return e};je.isTypedArray=function(n){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView(n)};je.concat=function(){var n=0,a,e,t;for(a=0,t=arguments.length;a{var qa=ja(),lc=Kn().getPointerArray;function xe(n,a){arguments.length<2&&(a=n,n=Array);var e=lc(a);this.size=0,this.length=a,this.dense=new e(a),this.sparse=new e(a),this.vals=new n(a)}xe.prototype.clear=function(){this.size=0};xe.prototype.has=function(n){var a=this.sparse[n];return a=this.size||this.dense[a]!==n?!1:(a=this.dense[this.size-1],this.dense[this.sparse[n]]=a,this.sparse[a]=this.sparse[n],this.size--,!0)};xe.prototype.forEach=function(n,a){a=arguments.length>1?a:this;for(var e=0;e{var uc=ja(),dc=Kn().getPointerArray;function Le(n){var a=dc(n);this.start=0,this.size=0,this.capacity=n,this.dense=new a(n),this.sparse=new a(n)}Le.prototype.clear=function(){this.start=0,this.size=0};Le.prototype.has=function(n){if(this.size===0)return!1;var a=this.sparse[n],e=a=this.start&&a=this.start&&a1?a:this;for(var e=this.capacity,t=this.size,r=this.start,i=0;i=e)return{done:!0};var i=n[t];return t++,r++,t===a&&(t=0),{value:i,done:!1}})};typeof Symbol<"u"&&(Le.prototype[Symbol.iterator]=Le.prototype.values);Le.prototype.inspect=function(){var n=[];return this.forEach(function(a){n.push(a)}),Object.defineProperty(n,"constructor",{value:Le,enumerable:!1}),n.capacity=this.capacity,n};typeof Symbol<"u"&&(Le.prototype[Symbol.for("nodejs.util.inspect.custom")]=Le.prototype.inspect);bo.exports=Le});var Eo=se((ng,So)=>{function _o(n){return function(a){return typeof a!="number"&&(a=a.length),Math.floor(n()*a)}}var To=_o(Math.random);To.createRandomIndex=_o;So.exports=To});var Xa=se(Zn=>{function hc(n){return typeof n!="number"||isNaN(n)?1:n}function cc(n,a){var e={},t=function(o){return typeof o>"u"?a:o};typeof a=="function"&&(t=a);var r=function(o){return t(o[n])},i=function(){return t(void 0)};return typeof n=="string"?(e.fromAttributes=r,e.fromGraph=function(o,s){return r(o.getNodeAttributes(s))},e.fromEntry=function(o,s){return r(s)}):typeof n=="function"?(e.fromAttributes=function(){throw new Error("graphology-utils/getters/createNodeValueGetter: irrelevant usage.")},e.fromGraph=function(o,s){return t(n(s,o.getNodeAttributes(s)))},e.fromEntry=function(o,s){return t(n(o,s))}):(e.fromAttributes=i,e.fromGraph=i,e.fromEntry=i),e}function wo(n,a){var e={},t=function(o){return typeof o>"u"?a:o};typeof a=="function"&&(t=a);var r=function(o){return t(o[n])},i=function(){return t(void 0)};return typeof n=="string"?(e.fromAttributes=r,e.fromGraph=function(o,s){return r(o.getEdgeAttributes(s))},e.fromEntry=function(o,s){return r(s)},e.fromPartialEntry=e.fromEntry,e.fromMinimalEntry=e.fromEntry):typeof n=="function"?(e.fromAttributes=function(){throw new Error("graphology-utils/getters/createEdgeValueGetter: irrelevant usage.")},e.fromGraph=function(o,s){var l=o.extremities(s);return t(n(s,o.getEdgeAttributes(s),l[0],l[1],o.getNodeAttributes(l[0]),o.getNodeAttributes(l[1]),o.isUndirected(s)))},e.fromEntry=function(o,s,l,u,d,h,c){return t(n(o,s,l,u,d,h,c))},e.fromPartialEntry=function(o,s,l,u){return t(n(o,s,l,u))},e.fromMinimalEntry=function(o,s){return t(n(o,s))}):(e.fromAttributes=i,e.fromGraph=i,e.fromEntry=i,e.fromMinimalEntry=i),e}Zn.createNodeValueGetter=cc;Zn.createEdgeValueGetter=wo;Zn.createEdgeWeightGetter=function(n){return wo(n,hc)}});var Lo=se(Ya=>{var st=Kn(),Ao=mt(),Do=Xa().createEdgeWeightGetter,Ro=Symbol.for("nodejs.util.inspect.custom"),Co={getEdgeWeight:"weight",keepDendrogram:!1,resolution:1};function ue(n,a){a=Ao(a,Co);var e=a.resolution,t=Do(a.getEdgeWeight).fromEntry,r=(n.size-n.selfLoopCount)*2,i=st.getPointerArray(r),o=st.getPointerArray(n.order+1),s=a.getEdgeWeight?Float64Array:st.getPointerArray(n.size*2);this.C=n.order,this.M=0,this.E=r,this.U=0,this.resolution=e,this.level=0,this.graph=n,this.nodes=new Array(n.order),this.keepDendrogram=a.keepDendrogram,this.neighborhood=new o(r),this.weights=new s(r),this.loops=new s(n.order),this.starts=new i(n.order+1),this.belongings=new o(n.order),this.dendrogram=[],this.mapping=null,this.counts=new o(n.order),this.unused=new o(n.order),this.totalWeights=new s(n.order);var l={},u,d=0,h=0,c=this;n.forEachNode(function(f){c.nodes[d]=f,l[f]=d,h+=n.undirectedDegreeWithoutSelfLoops(f),c.starts[d]=h,c.belongings[d]=d,c.counts[d]=1,d++}),n.forEachEdge(function(f,g,v,y,p,m,b){if(u=t(f,g,v,y,p,m,b),v=l[v],y=l[y],c.M+=u,v===y)c.totalWeights[v]+=u*2,c.loops[v]=u*2;else{c.totalWeights[v]+=u,c.totalWeights[y]+=u;var _=--c.starts[v],x=--c.starts[y];c.neighborhood[_]=y,c.neighborhood[x]=v,c.weights[_]=u,c.weights[x]=u}}),this.starts[d]=this.E,this.keepDendrogram?this.dendrogram.push(this.belongings.slice()):this.mapping=this.belongings.slice()}ue.prototype.isolate=function(n,a){var e=this.belongings[n];if(this.counts[e]===1)return e;var t=this.unused[--this.U],r=this.loops[n];return this.totalWeights[e]-=a+r,this.totalWeights[t]+=a+r,this.belongings[n]=t,this.counts[e]--,this.counts[t]++,t};ue.prototype.move=function(n,a,e){var t=this.belongings[n],r=this.loops[n];this.totalWeights[t]-=a+r,this.totalWeights[e]+=a+r,this.belongings[n]=e;var i=this.counts[t]--===1;this.counts[e]++,i&&(this.unused[this.U++]=t)};ue.prototype.computeNodeDegree=function(n){var a,e,t,r=0;for(a=this.starts[n],e=this.starts[n+1];a{var fc=mt(),gc=Ue(),vc=vo(),Po=yo(),ko=xo(),Io=Eo().createRandomIndex,Fo=Lo(),pc=Fo.UndirectedLouvainIndex,mc=Fo.DirectedLouvainIndex,zo={nodeCommunityAttribute:"community",getEdgeWeight:"weight",fastLocalMoves:!0,randomWalk:!0,resolution:1,rng:Math.random};function Qn(n,a,e){var t=n.get(a);typeof t>"u"&&(t=0),t+=e,n.set(a,t)}var yc=1e-10;function Jn(n,a,e,t,r){return Math.abs(t-r)n:t>r}function bc(n,a,e){var t=new pc(a,{getEdgeWeight:e.getEdgeWeight,keepDendrogram:n,resolution:e.resolution}),r=Io(e.rng),i=!0,o=!0,s,l,u=new Po(Float64Array,t.C),d,h,c,f,g,v,y,p,m,b,_,x,S,E,w,T,R=0,A=0,P=[],C,L;for(e.fastLocalMoves&&(d=new ko(t.C));i;){if(b=t.C,i=!1,o=!0,e.fastLocalMoves){for(L=0,v=e.randomWalk?r(b):0,y=0;y{var fe=0,le=1,K=2,Z=3,Je=4,et=5,ee=6,No=7,ta=8,Wo=9,_c=0,Tc=1,Sc=2,me=0,Me=1,Se=2,yt=3,lt=4,de=5,Ee=6,qe=7,Xe=8,Oo=3,Oe=10,Ec=3,_e=9,Za=10;Bo.exports=function(a,e,t){var r,i,o,s,l,u,d,h,c,f,g=e.length,v=t.length,y=a.adjustSizes,p=a.barnesHutTheta*a.barnesHutTheta,m,b,_,x,S,E,w,T=[];for(o=0;oN?(P-=(z-N)/2,C=P+z):(R-=(N-z)/2,A=R+N),T[0+me]=-1,T[0+Me]=(R+A)/2,T[0+Se]=(P+C)/2,T[0+yt]=Math.max(A-R,C-P),T[0+lt]=-1,T[0+de]=-1,T[0+Ee]=0,T[0+qe]=0,T[0+Xe]=0,r=1,o=0;o=0){e[o+fe]=0)if(E=Math.pow(e[o+fe]-T[i+qe],2)+Math.pow(e[o+le]-T[i+Xe],2),f=T[i+yt],4*f*f/E0?(w=b*e[o+ee]*T[i+Ee]/E,e[o+K]+=_*w,e[o+Z]+=x*w):E<0&&(w=-b*e[o+ee]*T[i+Ee]/Math.sqrt(E),e[o+K]+=_*w,e[o+Z]+=x*w):E>0&&(w=b*e[o+ee]*T[i+Ee]/E,e[o+K]+=_*w,e[o+Z]+=x*w),i=T[i+lt],i<0)break;continue}else{i=T[i+de];continue}else{if(u=T[i+me],u>=0&&u!==o&&(_=e[o+fe]-e[u+fe],x=e[o+le]-e[u+le],E=_*_+x*x,y===!0?E>0?(w=b*e[o+ee]*e[u+ee]/E,e[o+K]+=_*w,e[o+Z]+=x*w):E<0&&(w=-b*e[o+ee]*e[u+ee]/Math.sqrt(E),e[o+K]+=_*w,e[o+Z]+=x*w):E>0&&(w=b*e[o+ee]*e[u+ee]/E,e[o+K]+=_*w,e[o+Z]+=x*w)),i=T[i+lt],i<0)break;continue}else for(b=a.scalingRatio,s=0;s0?(w=b*e[s+ee]*e[l+ee]/E/E,e[s+K]+=_*w,e[s+Z]+=x*w,e[l+K]-=_*w,e[l+Z]-=x*w):E<0&&(w=100*b*e[s+ee]*e[l+ee],e[s+K]+=_*w,e[s+Z]+=x*w,e[l+K]-=_*w,e[l+Z]-=x*w)):(E=Math.sqrt(_*_+x*x),E>0&&(w=b*e[s+ee]*e[l+ee]/E/E,e[s+K]+=_*w,e[s+Z]+=x*w,e[l+K]-=_*w,e[l+Z]-=x*w));for(c=a.gravity/a.scalingRatio,b=a.scalingRatio,o=0;o0&&(w=b*e[o+ee]*c):E>0&&(w=b*e[o+ee]*c/E),e[o+K]-=_*w,e[o+Z]-=x*w;for(b=1*(a.outboundAttractionDistribution?m:1),d=0;d0&&(w=-b*S*Math.log(1+E)/E/e[s+ee]):E>0&&(w=-b*S*Math.log(1+E)/E):a.outboundAttractionDistribution?E>0&&(w=-b*S/e[s+ee]):E>0&&(w=-b*S)):(E=Math.sqrt(Math.pow(_,2)+Math.pow(x,2)),a.linLogMode?a.outboundAttractionDistribution?E>0&&(w=-b*S*Math.log(1+E)/E/e[s+ee]):E>0&&(w=-b*S*Math.log(1+E)/E):a.outboundAttractionDistribution?(E=1,w=-b*S/e[s+ee]):(E=1,w=-b*S)),E>0&&(e[s+K]+=_*w,e[s+Z]+=x*w,e[l+K]-=_*w,e[l+Z]-=x*w);var O,B,$,H,Q,he;if(y===!0)for(o=0;oZa&&(e[o+K]=e[o+K]*Za/O,e[o+Z]=e[o+Z]*Za/O),B=e[o+ee]*Math.sqrt((e[o+Je]-e[o+K])*(e[o+Je]-e[o+K])+(e[o+et]-e[o+Z])*(e[o+et]-e[o+Z])),$=Math.sqrt((e[o+Je]+e[o+K])*(e[o+Je]+e[o+K])+(e[o+et]+e[o+Z])*(e[o+et]+e[o+Z]))/2,H=.1*Math.log(1+$)/(1+Math.sqrt(B)),Q=e[o+fe]+e[o+K]*(H/a.slowDown),e[o+fe]=Q,he=e[o+le]+e[o+Z]*(H/a.slowDown),e[o+le]=he);else for(o=0;o{var tn=10,Ho=3;ut.assign=function(n){n=n||{};var a=Array.prototype.slice.call(arguments).slice(1),e,t,r;for(e=0,r=a.length;e=0)?{message:"the `scalingRatio` setting should be a number >= 0."}:"strongGravityMode"in n&&typeof n.strongGravityMode!="boolean"?{message:"the `strongGravityMode` setting should be a boolean."}:"gravity"in n&&!(typeof n.gravity=="number"&&n.gravity>=0)?{message:"the `gravity` setting should be a number >= 0."}:"slowDown"in n&&!(typeof n.slowDown=="number"||n.slowDown>=0)?{message:"the `slowDown` setting should be a number >= 0."}:"barnesHutOptimize"in n&&typeof n.barnesHutOptimize!="boolean"?{message:"the `barnesHutOptimize` setting should be a boolean."}:"barnesHutTheta"in n&&!(typeof n.barnesHutTheta=="number"&&n.barnesHutTheta>=0)?{message:"the `barnesHutTheta` setting should be a number >= 0."}:null};ut.graphToByteArrays=function(n,a){var e=n.order,t=n.size,r={},i,o=new Float32Array(e*tn),s=new Float32Array(t*Ho);return i=0,n.forEachNode(function(l,u){r[l]=i,o[i]=u.x,o[i+1]=u.y,o[i+2]=0,o[i+3]=0,o[i+4]=0,o[i+5]=0,o[i+6]=1,o[i+7]=1,o[i+8]=u.size||1,o[i+9]=u.fixed?1:0,i+=tn}),i=0,n.forEachEdge(function(l,u,d,h,c,f,g){var v=r[d],y=r[h],p=a(l,u,d,h,c,f,g);o[v+6]+=p,o[y+6]+=p,s[i]=v,s[i+1]=y,s[i+2]=p,i+=Ho}),{nodes:o,edges:s}};ut.assignLayoutChanges=function(n,a,e){var t=0;n.updateEachNodeAttributes(function(r,i){return i.x=a[t],i.y=a[t+1],t+=tn,e?e(r,i):i})};ut.readGraphPositions=function(n,a){var e=0;n.forEachNode(function(t,r){a[e]=r.x,a[e+1]=r.y,e+=tn})};ut.collectLayoutChanges=function(n,a,e){for(var t=n.nodes(),r={},i=0,o=0,s=a.length;i{Vo.exports={linLogMode:!1,outboundAttractionDistribution:!1,adjustSizes:!1,edgeWeightInfluence:1,scalingRatio:1,strongGravityMode:!1,gravity:1,slowDown:1,barnesHutOptimize:!1,barnesHutTheta:.5}});var Yo=se((ug,Xo)=>{var wc=Ue(),Ac=Xa().createEdgeWeightGetter,Dc=Uo(),nn=$o(),Rc=jo();function qo(n,a,e){if(!wc(a))throw new Error("graphology-layout-forceatlas2: the given graph is not a valid graphology instance.");typeof e=="number"&&(e={iterations:e});var t=e.iterations;if(typeof t!="number")throw new Error("graphology-layout-forceatlas2: invalid number of iterations.");if(t<=0)throw new Error("graphology-layout-forceatlas2: you should provide a positive number of iterations.");var r=Ac("getEdgeWeight"in e?e.getEdgeWeight:"weight").fromEntry,i=typeof e.outputReducer=="function"?e.outputReducer:null,o=nn.assign({},Rc,e.settings),s=nn.validateSettings(o);if(s)throw new Error("graphology-layout-forceatlas2: "+s.message);var l=nn.graphToByteArrays(a,r),u;for(u=0;u2e3,strongGravityMode:!0,gravity:.05,scalingRatio:10,slowDown:1+Math.log(a)}}var Qa=qo.bind(null,!1);Qa.assign=qo.bind(null,!0);Qa.inferSettings=Cc;Xo.exports=Qa});var Jo=se((dg,Qo)=>{function Ko(n){return function(a,e){return a+Math.floor(n()*(e-a+1))}}var Zo=Ko(Math.random);Zo.createRandom=Ko;Qo.exports=Zo});var as=se((hg,ns)=>{var Lc=Jo().createRandom;function es(n){var a=Lc(n);return function(e){for(var t=e.length,r=t-1,i=-1;++i{var Pc=mt(),kc=Ue(),Ic=as(),Fc={attributes:{x:"x",y:"y"},center:0,hierarchyAttributes:[],rng:Math.random,scale:1};function we(n,a,e,t,r){this.wrappedCircle=r||null,this.children={},this.countChildren=0,this.id=n||null,this.next=null,this.previous=null,this.x=a||null,this.y=e||null,r?this.r=1010101:this.r=t||999}we.prototype.hasChildren=function(){return this.countChildren>0};we.prototype.addChild=function(n,a){this.children[n]=a,++this.countChildren};we.prototype.getChild=function(n){if(!this.children.hasOwnProperty(n)){var a=new we;this.children[n]=a,++this.countChildren}return this.children[n]};we.prototype.applyPositionToChildren=function(){if(this.hasChildren()){var n=this;for(var a in n.children){var e=n.children[a];e.x+=n.x,e.y+=n.y,e.applyPositionToChildren()}}};function ss(n,a,e){for(var t in a.children){var r=a.children[t];r.hasChildren()?ss(n,r,e):e[r.id]={x:r.x,y:r.y}}}function na(n,a){var e=n.r-a.r,t=a.x-n.x,r=a.y-n.y;return e<0||e*e0&&e*e>t*t+r*r}function Ja(n,a){for(var e=0;el?(r=(u+l-i)/(2*u),s=Math.sqrt(Math.max(0,l/u-r*r)),e.x=n.x-r*t-s*o,e.y=n.y-r*o+s*t):(r=(u+i-l)/(2*u),s=Math.sqrt(Math.max(0,i/u-r*r)),e.x=a.x+r*t-s*o,e.y=a.y+r*o+s*t)):(e.x=a.x+e.r,e.y=a.y)}function os(n,a){var e=n.r+a.r-1e-6,t=a.x-n.x,r=a.y-n.y;return e>0&&e*e>t*t+r*r}function Wc(n,a){var e=n.length;if(e===0)return 0;var t,r,i,o,s,l,u,d,h,c;if(t=n[0],t.x=0,t.y=0,e<=1)return t.r;if(r=n[1],t.x=-r.r,r.x=t.r,r.y=0,e<=2)return t.r+r.r;i=n[2],is(r,t,i),t=new we(null,null,null,null,t),r=new we(null,null,null,null,r),i=new we(null,null,null,null,i),t.next=i.previous=r,r.next=t.previous=i,i.next=r.previous=t;e:for(l=3;l{var Bc=mt(),Uc=Ue(),Hc={dimensions:["x","y"],center:.5,scale:1};function vs(n,a,e){if(!Uc(a))throw new Error("graphology-layout/random: the given graph is not a valid graphology instance.");e=Bc(e,Hc);var t=e.dimensions;if(!Array.isArray(t)||t.length!==2)throw new Error("graphology-layout/random: given dimensions are invalid.");var r=e.center,i=e.scale,o=Math.PI*2,s=(r-.5)*i,l=a.order,u=t[0],d=t[1];function h(g,v){return v[u]=i*Math.cos(g*o/l)+s,v[d]=i*Math.sin(g*o/l)+s,v}var c=0;if(!n){var f={};return a.forEachNode(function(g){f[g]=h(c++,{})}),f}a.updateEachNodeAttributes(function(g,v){return h(c++,v),v},{attributes:t})}var ps=vs.bind(null,!1);ps.assign=vs.bind(null,!0);ms.exports=ps});var Ts=se((gg,_s)=>{var $c=mt(),Vc=Ue(),jc={dimensions:["x","y"],center:.5,rng:Math.random,scale:1};function bs(n,a,e){if(!Vc(a))throw new Error("graphology-layout/random: the given graph is not a valid graphology instance.");e=$c(e,jc);var t=e.dimensions;if(!Array.isArray(t)||t.length<1)throw new Error("graphology-layout/random: given dimensions are invalid.");var r=t.length,i=e.center,o=e.rng,s=e.scale,l=(i-.5)*s;function u(h){for(var c=0;c{var qc=mt(),Xc=Ue(),Yc=Math.PI/180,Kc={dimensions:["x","y"],centeredOnZero:!1,degrees:!1};function Ss(n,a,e,t){if(!Xc(a))throw new Error("graphology-layout/rotation: the given graph is not a valid graphology instance.");t=qc(t,Kc),t.degrees&&(e*=Yc);var r=t.dimensions;if(!Array.isArray(r)||r.length!==2)throw new Error("graphology-layout/random: given dimensions are invalid.");if(a.order===0)return n?void 0:{};var i=r[0],o=r[1],s=0,l=0;if(!t.centeredOnZero){var u=1/0,d=-1/0,h=1/0,c=-1/0;a.forEachNode(function(p,m){var b=m[i],_=m[o];bd&&(d=b),_c&&(c=_)}),s=(u+d)/2,l=(h+c)/2}var f=Math.cos(e),g=Math.sin(e);function v(p){var m=p[i],b=p[o];return p[i]=s+(m-s)*f-(b-l)*g,p[o]=l+(m-s)*g+(b-l)*f,p}if(!n){var y={};return a.forEachNode(function(p,m){var b={};b[i]=m[i],b[o]=m[o],y[p]=v(b)}),y}a.updateEachNodeAttributes(function(p,m){return v(m),m},{attributes:r})}var Es=Ss.bind(null,!1);Es.assign=Ss.bind(null,!0);ws.exports=Es});var Ds=se(rn=>{rn.circlepack=gs();rn.circular=ys();rn.random=Ts();rn.rotation=As()});var Zc={};zs(Zc,{Graph:()=>re,Sigma:()=>ho,circlepack:()=>aa.circlepack,forceAtlas2:()=>Cs.default,louvain:()=>Rs.default,random:()=>aa.random});var vr=Ye(Nt(),1);function Hs(){let n=arguments[0];for(let a=1,e=arguments.length;an++}function Ke(){let n=arguments,a=null,e=-1;return{[Symbol.iterator](){return this},next(){let t=null;do{if(a===null){if(e++,e>=n.length)return{done:!0};a=n[e][Symbol.iterator]()}if(t=a.next(),t.done){a=null;continue}break}while(!0);return t}}}function _t(){return{[Symbol.iterator](){return this},next(){return{done:!0}}}}var Bt=class extends Error{constructor(a){super(),this.name="GraphError",this.message=a}},W=class n extends Bt{constructor(a){super(a),this.name="InvalidArgumentsGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,n.prototype.constructor)}},G=class n extends Bt{constructor(a){super(a),this.name="NotFoundGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,n.prototype.constructor)}},U=class n extends Bt{constructor(a){super(a),this.name="UsageGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,n.prototype.constructor)}};function mr(n,a){this.key=n,this.attributes=a,this.clear()}mr.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.undirectedDegree=0,this.undirectedLoops=0,this.directedLoops=0,this.in={},this.out={},this.undirected={}};function yr(n,a){this.key=n,this.attributes=a,this.clear()}yr.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.directedLoops=0,this.in={},this.out={}};function br(n,a){this.key=n,this.attributes=a,this.clear()}br.prototype.clear=function(){this.undirectedDegree=0,this.undirectedLoops=0,this.undirected={}};function Tt(n,a,e,t,r){this.key=a,this.attributes=r,this.undirected=n,this.source=e,this.target=t}Tt.prototype.attach=function(){let n="out",a="in";this.undirected&&(n=a="undirected");let e=this.source.key,t=this.target.key;this.source[n][t]=this,!(this.undirected&&e===t)&&(this.target[a][e]=this)};Tt.prototype.attachMulti=function(){let n="out",a="in",e=this.source.key,t=this.target.key;this.undirected&&(n=a="undirected");let r=this.source[n],i=r[t];if(typeof i>"u"){r[t]=this,this.undirected&&e===t||(this.target[a][e]=this);return}i.previous=this,this.next=i,r[t]=this,this.target[a][e]=this};Tt.prototype.detach=function(){let n=this.source.key,a=this.target.key,e="out",t="in";this.undirected&&(e=t="undirected"),delete this.source[e][a],delete this.target[t][n]};Tt.prototype.detachMulti=function(){let n=this.source.key,a=this.target.key,e="out",t="in";this.undirected&&(e=t="undirected"),this.previous===void 0?this.next===void 0?(delete this.source[e][a],delete this.target[t][n]):(this.next.previous=void 0,this.source[e][a]=this.next,this.target[t][n]=this.next):(this.previous.next=this.next,this.next!==void 0&&(this.next.previous=this.previous))};var xr=0,_r=1,Vs=2,Tr=3;function Ze(n,a,e,t,r,i,o){let s,l,u,d;if(t=""+t,e===xr){if(s=n._nodes.get(t),!s)throw new G(`Graph.${a}: could not find the "${t}" node in the graph.`);u=r,d=i}else if(e===Tr){if(r=""+r,l=n._edges.get(r),!l)throw new G(`Graph.${a}: could not find the "${r}" edge in the graph.`);let h=l.source.key,c=l.target.key;if(t===h)s=l.target;else if(t===c)s=l.source;else throw new G(`Graph.${a}: the "${t}" node is not attached to the "${r}" edge (${h}, ${c}).`);u=i,d=o}else{if(l=n._edges.get(t),!l)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`);e===_r?s=l.source:s=l.target,u=r,d=i}return[s,u,d]}function js(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);return o.attributes[s]}}function qs(n,a,e){n.prototype[a]=function(t,r){let[i]=Ze(this,a,e,t,r);return i.attributes}}function Xs(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);return o.attributes.hasOwnProperty(s)}}function Ys(n,a,e){n.prototype[a]=function(t,r,i,o){let[s,l,u]=Ze(this,a,e,t,r,i,o);return s.attributes[l]=u,this.emit("nodeAttributesUpdated",{key:s.key,type:"set",attributes:s.attributes,name:l}),this}}function Ks(n,a,e){n.prototype[a]=function(t,r,i,o){let[s,l,u]=Ze(this,a,e,t,r,i,o);if(typeof u!="function")throw new W(`Graph.${a}: updater should be a function.`);let d=s.attributes,h=u(d[l]);return d[l]=h,this.emit("nodeAttributesUpdated",{key:s.key,type:"set",attributes:s.attributes,name:l}),this}}function Zs(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);return delete o.attributes[s],this.emit("nodeAttributesUpdated",{key:o.key,type:"remove",attributes:o.attributes,name:s}),this}}function Qs(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);if(!ye(s))throw new W(`Graph.${a}: provided attributes are not a plain object.`);return o.attributes=s,this.emit("nodeAttributesUpdated",{key:o.key,type:"replace",attributes:o.attributes}),this}}function Js(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);if(!ye(s))throw new W(`Graph.${a}: provided attributes are not a plain object.`);return ve(o.attributes,s),this.emit("nodeAttributesUpdated",{key:o.key,type:"merge",attributes:o.attributes,data:s}),this}}function el(n,a,e){n.prototype[a]=function(t,r,i){let[o,s]=Ze(this,a,e,t,r,i);if(typeof s!="function")throw new W(`Graph.${a}: provided updater is not a function.`);return o.attributes=s(o.attributes),this.emit("nodeAttributesUpdated",{key:o.key,type:"update",attributes:o.attributes}),this}}var tl=[{name:n=>`get${n}Attribute`,attacher:js},{name:n=>`get${n}Attributes`,attacher:qs},{name:n=>`has${n}Attribute`,attacher:Xs},{name:n=>`set${n}Attribute`,attacher:Ys},{name:n=>`update${n}Attribute`,attacher:Ks},{name:n=>`remove${n}Attribute`,attacher:Zs},{name:n=>`replace${n}Attributes`,attacher:Qs},{name:n=>`merge${n}Attributes`,attacher:Js},{name:n=>`update${n}Attributes`,attacher:el}];function nl(n){tl.forEach(function({name:a,attacher:e}){e(n,a("Node"),xr),e(n,a("Source"),_r),e(n,a("Target"),Vs),e(n,a("Opposite"),Tr)})}function al(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}return i.attributes[r]}}function rl(n,a,e){n.prototype[a]=function(t){let r;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>1){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let i=""+t,o=""+arguments[1];if(r=Ie(this,i,o,e),!r)throw new G(`Graph.${a}: could not find an edge for the given path ("${i}" - "${o}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,r=this._edges.get(t),!r)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}return r.attributes}}function il(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}return i.attributes.hasOwnProperty(r)}}function ol(n,a,e){n.prototype[a]=function(t,r,i){let o;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>3){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let s=""+t,l=""+r;if(r=arguments[2],i=arguments[3],o=Ie(this,s,l,e),!o)throw new G(`Graph.${a}: could not find an edge for the given path ("${s}" - "${l}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,o=this._edges.get(t),!o)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}return o.attributes[r]=i,this.emit("edgeAttributesUpdated",{key:o.key,type:"set",attributes:o.attributes,name:r}),this}}function sl(n,a,e){n.prototype[a]=function(t,r,i){let o;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>3){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let s=""+t,l=""+r;if(r=arguments[2],i=arguments[3],o=Ie(this,s,l,e),!o)throw new G(`Graph.${a}: could not find an edge for the given path ("${s}" - "${l}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,o=this._edges.get(t),!o)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}if(typeof i!="function")throw new W(`Graph.${a}: updater should be a function.`);return o.attributes[r]=i(o.attributes[r]),this.emit("edgeAttributesUpdated",{key:o.key,type:"set",attributes:o.attributes,name:r}),this}}function ll(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}return delete i.attributes[r],this.emit("edgeAttributesUpdated",{key:i.key,type:"remove",attributes:i.attributes,name:r}),this}}function ul(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}if(!ye(r))throw new W(`Graph.${a}: provided attributes are not a plain object.`);return i.attributes=r,this.emit("edgeAttributesUpdated",{key:i.key,type:"replace",attributes:i.attributes}),this}}function dl(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}if(!ye(r))throw new W(`Graph.${a}: provided attributes are not a plain object.`);return ve(i.attributes,r),this.emit("edgeAttributesUpdated",{key:i.key,type:"merge",attributes:i.attributes,data:r}),this}}function hl(n,a,e){n.prototype[a]=function(t,r){let i;if(this.type!=="mixed"&&e!=="mixed"&&e!==this.type)throw new U(`Graph.${a}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new U(`Graph.${a}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);let o=""+t,s=""+r;if(r=arguments[2],i=Ie(this,o,s,e),!i)throw new G(`Graph.${a}: could not find an edge for the given path ("${o}" - "${s}").`)}else{if(e!=="mixed")throw new U(`Graph.${a}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(t=""+t,i=this._edges.get(t),!i)throw new G(`Graph.${a}: could not find the "${t}" edge in the graph.`)}if(typeof r!="function")throw new W(`Graph.${a}: provided updater is not a function.`);return i.attributes=r(i.attributes),this.emit("edgeAttributesUpdated",{key:i.key,type:"update",attributes:i.attributes}),this}}var cl=[{name:n=>`get${n}Attribute`,attacher:al},{name:n=>`get${n}Attributes`,attacher:rl},{name:n=>`has${n}Attribute`,attacher:il},{name:n=>`set${n}Attribute`,attacher:ol},{name:n=>`update${n}Attribute`,attacher:sl},{name:n=>`remove${n}Attribute`,attacher:ll},{name:n=>`replace${n}Attributes`,attacher:ul},{name:n=>`merge${n}Attributes`,attacher:dl},{name:n=>`update${n}Attributes`,attacher:hl}];function fl(n){cl.forEach(function({name:a,attacher:e}){e(n,a("Edge"),"mixed"),e(n,a("DirectedEdge"),"directed"),e(n,a("UndirectedEdge"),"undirected")})}var gl=[{name:"edges",type:"mixed"},{name:"inEdges",type:"directed",direction:"in"},{name:"outEdges",type:"directed",direction:"out"},{name:"inboundEdges",type:"mixed",direction:"in"},{name:"outboundEdges",type:"mixed",direction:"out"},{name:"directedEdges",type:"directed"},{name:"undirectedEdges",type:"undirected"}];function vl(n,a,e,t){let r=!1;for(let i in a){if(i===t)continue;let o=a[i];if(r=e(o.key,o.attributes,o.source.key,o.target.key,o.source.attributes,o.target.attributes,o.undirected),n&&r)return o.key}}function pl(n,a,e,t){let r,i,o,s=!1;for(let l in a)if(l!==t){r=a[l];do{if(i=r.source,o=r.target,s=e(r.key,r.attributes,i.key,o.key,i.attributes,o.attributes,r.undirected),n&&s)return r.key;r=r.next}while(r!==void 0)}}function ua(n,a){let e=Object.keys(n),t=e.length,r,i=0;return{[Symbol.iterator](){return this},next(){do if(r)r=r.next;else{if(i>=t)return{done:!0};let o=e[i++];if(o===a){r=void 0;continue}r=n[o]}while(!r);return{done:!1,value:{edge:r.key,attributes:r.attributes,source:r.source.key,target:r.target.key,sourceAttributes:r.source.attributes,targetAttributes:r.target.attributes,undirected:r.undirected}}}}}function ml(n,a,e,t){let r=a[e];if(!r)return;let i=r.source,o=r.target;if(t(r.key,r.attributes,i.key,o.key,i.attributes,o.attributes,r.undirected)&&n)return r.key}function yl(n,a,e,t){let r=a[e];if(!r)return;let i=!1;do{if(i=t(r.key,r.attributes,r.source.key,r.target.key,r.source.attributes,r.target.attributes,r.undirected),n&&i)return r.key;r=r.next}while(r!==void 0)}function da(n,a){let e=n[a];if(e.next!==void 0)return{[Symbol.iterator](){return this},next(){if(!e)return{done:!0};let r={edge:e.key,attributes:e.attributes,source:e.source.key,target:e.target.key,sourceAttributes:e.source.attributes,targetAttributes:e.target.attributes,undirected:e.undirected};return e=e.next,{done:!1,value:r}}};let t=!1;return{[Symbol.iterator](){return this},next(){return t===!0?{done:!0}:(t=!0,{done:!1,value:{edge:e.key,attributes:e.attributes,source:e.source.key,target:e.target.key,sourceAttributes:e.source.attributes,targetAttributes:e.target.attributes,undirected:e.undirected}})}}}function bl(n,a){if(n.size===0)return[];if(a==="mixed"||a===n.type)return Array.from(n._edges.keys());let e=a==="undirected"?n.undirectedSize:n.directedSize,t=new Array(e),r=a==="undirected",i=n._edges.values(),o=0,s,l;for(;s=i.next(),s.done!==!0;)l=s.value,l.undirected===r&&(t[o++]=l.key);return t}function Sr(n,a,e,t){if(a.size===0)return;let r=e!=="mixed"&&e!==a.type,i=e==="undirected",o,s,l=!1,u=a._edges.values();for(;o=u.next(),o.done!==!0;){if(s=o.value,r&&s.undirected!==i)continue;let{key:d,attributes:h,source:c,target:f}=s;if(l=t(d,h,c.key,f.key,c.attributes,f.attributes,s.undirected),n&&l)return d}}function xl(n,a){if(n.size===0)return _t();let e=a!=="mixed"&&a!==n.type,t=a==="undirected",r=n._edges.values();return{[Symbol.iterator](){return this},next(){let i,o;for(;;){if(i=r.next(),i.done)return i;if(o=i.value,!(e&&o.undirected!==t))break}return{value:{edge:o.key,attributes:o.attributes,source:o.source.key,target:o.target.key,sourceAttributes:o.source.attributes,targetAttributes:o.target.attributes,undirected:o.undirected},done:!1}}}}function ha(n,a,e,t,r,i){let o=a?pl:vl,s;if(e!=="undirected"&&(t!=="out"&&(s=o(n,r.in,i),n&&s)||t!=="in"&&(s=o(n,r.out,i,t?void 0:r.key),n&&s))||e!=="directed"&&(s=o(n,r.undirected,i),n&&s))return s}function _l(n,a,e,t){let r=[];return ha(!1,n,a,e,t,function(i){r.push(i)}),r}function Tl(n,a,e){let t=_t();return n!=="undirected"&&(a!=="out"&&typeof e.in<"u"&&(t=Ke(t,ua(e.in))),a!=="in"&&typeof e.out<"u"&&(t=Ke(t,ua(e.out,a?void 0:e.key)))),n!=="directed"&&typeof e.undirected<"u"&&(t=Ke(t,ua(e.undirected))),t}function ca(n,a,e,t,r,i,o){let s=e?yl:ml,l;if(a!=="undirected"&&(typeof r.in<"u"&&t!=="out"&&(l=s(n,r.in,i,o),n&&l)||typeof r.out<"u"&&t!=="in"&&(t||r.key!==i)&&(l=s(n,r.out,i,o),n&&l))||a!=="directed"&&typeof r.undirected<"u"&&(l=s(n,r.undirected,i,o),n&&l))return l}function Sl(n,a,e,t,r){let i=[];return ca(!1,n,a,e,t,r,function(o){i.push(o)}),i}function El(n,a,e,t){let r=_t();return n!=="undirected"&&(typeof e.in<"u"&&a!=="out"&&t in e.in&&(r=Ke(r,da(e.in,t))),typeof e.out<"u"&&a!=="in"&&t in e.out&&(a||e.key!==t)&&(r=Ke(r,da(e.out,t)))),n!=="directed"&&typeof e.undirected<"u"&&t in e.undirected&&(r=Ke(r,da(e.undirected,t))),r}function wl(n,a){let{name:e,type:t,direction:r}=a;n.prototype[e]=function(i,o){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return[];if(!arguments.length)return bl(this,t);if(arguments.length===1){i=""+i;let s=this._nodes.get(i);if(typeof s>"u")throw new G(`Graph.${e}: could not find the "${i}" node in the graph.`);return _l(this.multi,t==="mixed"?this.type:t,r,s)}if(arguments.length===2){i=""+i,o=""+o;let s=this._nodes.get(i);if(!s)throw new G(`Graph.${e}: could not find the "${i}" source node in the graph.`);if(!this._nodes.has(o))throw new G(`Graph.${e}: could not find the "${o}" target node in the graph.`);return Sl(t,this.multi,r,s,o)}throw new W(`Graph.${e}: too many arguments (expecting 0, 1 or 2 and got ${arguments.length}).`)}}function Al(n,a){let{name:e,type:t,direction:r}=a,i="forEach"+e[0].toUpperCase()+e.slice(1,-1);n.prototype[i]=function(u,d,h){if(!(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)){if(arguments.length===1)return h=u,Sr(!1,this,t,h);if(arguments.length===2){u=""+u,h=d;let c=this._nodes.get(u);if(typeof c>"u")throw new G(`Graph.${i}: could not find the "${u}" node in the graph.`);return ha(!1,this.multi,t==="mixed"?this.type:t,r,c,h)}if(arguments.length===3){u=""+u,d=""+d;let c=this._nodes.get(u);if(!c)throw new G(`Graph.${i}: could not find the "${u}" source node in the graph.`);if(!this._nodes.has(d))throw new G(`Graph.${i}: could not find the "${d}" target node in the graph.`);return ca(!1,t,this.multi,r,c,d,h)}throw new W(`Graph.${i}: too many arguments (expecting 1, 2 or 3 and got ${arguments.length}).`)}};let o="map"+e[0].toUpperCase()+e.slice(1);n.prototype[o]=function(){let u=Array.prototype.slice.call(arguments),d=u.pop(),h;if(u.length===0){let c=0;t!=="directed"&&(c+=this.undirectedSize),t!=="undirected"&&(c+=this.directedSize),h=new Array(c);let f=0;u.push((g,v,y,p,m,b,_)=>{h[f++]=d(g,v,y,p,m,b,_)})}else h=[],u.push((c,f,g,v,y,p,m)=>{h.push(d(c,f,g,v,y,p,m))});return this[i].apply(this,u),h};let s="filter"+e[0].toUpperCase()+e.slice(1);n.prototype[s]=function(){let u=Array.prototype.slice.call(arguments),d=u.pop(),h=[];return u.push((c,f,g,v,y,p,m)=>{d(c,f,g,v,y,p,m)&&h.push(c)}),this[i].apply(this,u),h};let l="reduce"+e[0].toUpperCase()+e.slice(1);n.prototype[l]=function(){let u=Array.prototype.slice.call(arguments);if(u.length<2||u.length>4)throw new W(`Graph.${l}: invalid number of arguments (expecting 2, 3 or 4 and got ${u.length}).`);if(typeof u[u.length-1]=="function"&&typeof u[u.length-2]!="function")throw new W(`Graph.${l}: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.`);let d,h;u.length===2?(d=u[0],h=u[1],u=[]):u.length===3?(d=u[1],h=u[2],u=[u[0]]):u.length===4&&(d=u[2],h=u[3],u=[u[0],u[1]]);let c=h;return u.push((f,g,v,y,p,m,b)=>{c=d(c,f,g,v,y,p,m,b)}),this[i].apply(this,u),c}}function Dl(n,a){let{name:e,type:t,direction:r}=a,i="find"+e[0].toUpperCase()+e.slice(1,-1);n.prototype[i]=function(l,u,d){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return!1;if(arguments.length===1)return d=l,Sr(!0,this,t,d);if(arguments.length===2){l=""+l,d=u;let h=this._nodes.get(l);if(typeof h>"u")throw new G(`Graph.${i}: could not find the "${l}" node in the graph.`);return ha(!0,this.multi,t==="mixed"?this.type:t,r,h,d)}if(arguments.length===3){l=""+l,u=""+u;let h=this._nodes.get(l);if(!h)throw new G(`Graph.${i}: could not find the "${l}" source node in the graph.`);if(!this._nodes.has(u))throw new G(`Graph.${i}: could not find the "${u}" target node in the graph.`);return ca(!0,t,this.multi,r,h,u,d)}throw new W(`Graph.${i}: too many arguments (expecting 1, 2 or 3 and got ${arguments.length}).`)};let o="some"+e[0].toUpperCase()+e.slice(1,-1);n.prototype[o]=function(){let l=Array.prototype.slice.call(arguments),u=l.pop();return l.push((h,c,f,g,v,y,p)=>u(h,c,f,g,v,y,p)),!!this[i].apply(this,l)};let s="every"+e[0].toUpperCase()+e.slice(1,-1);n.prototype[s]=function(){let l=Array.prototype.slice.call(arguments),u=l.pop();return l.push((h,c,f,g,v,y,p)=>!u(h,c,f,g,v,y,p)),!this[i].apply(this,l)}}function Rl(n,a){let{name:e,type:t,direction:r}=a,i=e.slice(0,-1)+"Entries";n.prototype[i]=function(o,s){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return _t();if(!arguments.length)return xl(this,t);if(arguments.length===1){o=""+o;let l=this._nodes.get(o);if(!l)throw new G(`Graph.${i}: could not find the "${o}" node in the graph.`);return Tl(t,r,l)}if(arguments.length===2){o=""+o,s=""+s;let l=this._nodes.get(o);if(!l)throw new G(`Graph.${i}: could not find the "${o}" source node in the graph.`);if(!this._nodes.has(s))throw new G(`Graph.${i}: could not find the "${s}" target node in the graph.`);return El(t,r,l,s)}throw new W(`Graph.${i}: too many arguments (expecting 0, 1 or 2 and got ${arguments.length}).`)}}function Cl(n){gl.forEach(a=>{wl(n,a),Al(n,a),Dl(n,a),Rl(n,a)})}var Ll=[{name:"neighbors",type:"mixed"},{name:"inNeighbors",type:"directed",direction:"in"},{name:"outNeighbors",type:"directed",direction:"out"},{name:"inboundNeighbors",type:"mixed",direction:"in"},{name:"outboundNeighbors",type:"mixed",direction:"out"},{name:"directedNeighbors",type:"directed"},{name:"undirectedNeighbors",type:"undirected"}];function pn(){this.A=null,this.B=null}pn.prototype.wrap=function(n){this.A===null?this.A=n:this.B===null&&(this.B=n)};pn.prototype.has=function(n){return this.A!==null&&n in this.A||this.B!==null&&n in this.B};function Wt(n,a,e,t,r){for(let i in t){let o=t[i],s=o.source,l=o.target,u=s===e?l:s;if(a&&a.has(u.key))continue;let d=r(u.key,u.attributes);if(n&&d)return u.key}}function fa(n,a,e,t,r){if(a!=="mixed"){if(a==="undirected")return Wt(n,null,t,t.undirected,r);if(typeof e=="string")return Wt(n,null,t,t[e],r)}let i=new pn,o;if(a!=="undirected"){if(e!=="out"){if(o=Wt(n,null,t,t.in,r),n&&o)return o;i.wrap(t.in)}if(e!=="in"){if(o=Wt(n,i,t,t.out,r),n&&o)return o;i.wrap(t.out)}}if(a!=="directed"&&(o=Wt(n,i,t,t.undirected,r),n&&o))return o}function Pl(n,a,e){if(n!=="mixed"){if(n==="undirected")return Object.keys(e.undirected);if(typeof a=="string")return Object.keys(e[a])}let t=[];return fa(!1,n,a,e,function(r){t.push(r)}),t}function Ot(n,a,e){let t=Object.keys(e),r=t.length,i=0;return{[Symbol.iterator](){return this},next(){let o=null;do{if(i>=r)return n&&n.wrap(e),{done:!0};let s=e[t[i++]],l=s.source,u=s.target;if(o=l===a?u:l,n&&n.has(o.key)){o=null;continue}}while(o===null);return{done:!1,value:{neighbor:o.key,attributes:o.attributes}}}}}function kl(n,a,e){if(n!=="mixed"){if(n==="undirected")return Ot(null,e,e.undirected);if(typeof a=="string")return Ot(null,e,e[a])}let t=_t(),r=new pn;return n!=="undirected"&&(a!=="out"&&(t=Ke(t,Ot(r,e,e.in))),a!=="in"&&(t=Ke(t,Ot(r,e,e.out)))),n!=="directed"&&(t=Ke(t,Ot(r,e,e.undirected))),t}function Il(n,a){let{name:e,type:t,direction:r}=a;n.prototype[e]=function(i){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return[];i=""+i;let o=this._nodes.get(i);if(typeof o>"u")throw new G(`Graph.${e}: could not find the "${i}" node in the graph.`);return Pl(t==="mixed"?this.type:t,r,o)}}function Fl(n,a){let{name:e,type:t,direction:r}=a,i="forEach"+e[0].toUpperCase()+e.slice(1,-1);n.prototype[i]=function(u,d){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return;u=""+u;let h=this._nodes.get(u);if(typeof h>"u")throw new G(`Graph.${i}: could not find the "${u}" node in the graph.`);fa(!1,t==="mixed"?this.type:t,r,h,d)};let o="map"+e[0].toUpperCase()+e.slice(1);n.prototype[o]=function(u,d){let h=[];return this[i](u,(c,f)=>{h.push(d(c,f))}),h};let s="filter"+e[0].toUpperCase()+e.slice(1);n.prototype[s]=function(u,d){let h=[];return this[i](u,(c,f)=>{d(c,f)&&h.push(c)}),h};let l="reduce"+e[0].toUpperCase()+e.slice(1);n.prototype[l]=function(u,d,h){if(arguments.length<3)throw new W(`Graph.${l}: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.`);let c=h;return this[i](u,(f,g)=>{c=d(c,f,g)}),c}}function zl(n,a){let{name:e,type:t,direction:r}=a,i=e[0].toUpperCase()+e.slice(1,-1),o="find"+i;n.prototype[o]=function(u,d){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return;u=""+u;let h=this._nodes.get(u);if(typeof h>"u")throw new G(`Graph.${o}: could not find the "${u}" node in the graph.`);return fa(!0,t==="mixed"?this.type:t,r,h,d)};let s="some"+i;n.prototype[s]=function(u,d){return!!this[o](u,d)};let l="every"+i;n.prototype[l]=function(u,d){return!this[o](u,(c,f)=>!d(c,f))}}function Gl(n,a){let{name:e,type:t,direction:r}=a,i=e.slice(0,-1)+"Entries";n.prototype[i]=function(o){if(t!=="mixed"&&this.type!=="mixed"&&t!==this.type)return _t();o=""+o;let s=this._nodes.get(o);if(typeof s>"u")throw new G(`Graph.${i}: could not find the "${o}" node in the graph.`);return kl(t==="mixed"?this.type:t,r,s)}}function Ml(n){Ll.forEach(a=>{Il(n,a),Fl(n,a),zl(n,a),Gl(n,a)})}function dn(n,a,e,t,r){let i=t._nodes.values(),o=t.type,s,l,u,d,h,c,f;for(;s=i.next(),s.done!==!0;){let g=!1;if(l=s.value,o!=="undirected"){d=l.out;for(u in d){h=d[u];do{if(c=h.target,g=!0,f=r(l.key,c.key,l.attributes,c.attributes,h.key,h.attributes,h.undirected),n&&f)return h;h=h.next}while(h)}}if(o!=="directed"){d=l.undirected;for(u in d)if(!(a&&l.key>u)){h=d[u];do{if(c=h.target,c.key!==u&&(c=h.source),g=!0,f=r(l.key,c.key,l.attributes,c.attributes,h.key,h.attributes,h.undirected),n&&f)return h;h=h.next}while(h)}}if(e&&!g&&(f=r(l.key,null,l.attributes,null,null,null,null),n&&f))return null}}function Nl(n,a){let e={key:n};return pr(a.attributes)||(e.attributes=ve({},a.attributes)),e}function Wl(n,a,e){let t={key:a,source:e.source.key,target:e.target.key};return pr(e.attributes)||(t.attributes=ve({},e.attributes)),n==="mixed"&&e.undirected&&(t.undirected=!0),t}function Ol(n){if(!ye(n))throw new W('Graph.import: invalid serialized node. A serialized node should be a plain object with at least a "key" property.');if(!("key"in n))throw new W("Graph.import: serialized node is missing its key.");if("attributes"in n&&(!ye(n.attributes)||n.attributes===null))throw new W("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.")}function Bl(n){if(!ye(n))throw new W('Graph.import: invalid serialized edge. A serialized edge should be a plain object with at least a "source" & "target" property.');if(!("source"in n))throw new W("Graph.import: serialized edge is missing its source.");if(!("target"in n))throw new W("Graph.import: serialized edge is missing its target.");if("attributes"in n&&(!ye(n.attributes)||n.attributes===null))throw new W("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.");if("undirected"in n&&typeof n.undirected!="boolean")throw new W("Graph.import: invalid undirectedness information. Undirected should be boolean or omitted.")}var Ul=$s(),Hl=new Set(["directed","undirected","mixed"]),fr=new Set(["domain","_events","_eventsCount","_maxListeners"]),$l=[{name:n=>`${n}Edge`,generateKey:!0},{name:n=>`${n}DirectedEdge`,generateKey:!0,type:"directed"},{name:n=>`${n}UndirectedEdge`,generateKey:!0,type:"undirected"},{name:n=>`${n}EdgeWithKey`},{name:n=>`${n}DirectedEdgeWithKey`,type:"directed"},{name:n=>`${n}UndirectedEdgeWithKey`,type:"undirected"}],Vl={allowSelfLoops:!0,multi:!1,type:"mixed"};function jl(n,a,e){if(e&&!ye(e))throw new W(`Graph.addNode: invalid attributes. Expecting an object but got "${e}"`);if(a=""+a,e=e||{},n._nodes.has(a))throw new U(`Graph.addNode: the "${a}" node already exist in the graph.`);let t=new n.NodeDataClass(a,e);return n._nodes.set(a,t),n.emit("nodeAdded",{key:a,attributes:e}),t}function gr(n,a,e){let t=new n.NodeDataClass(a,e);return n._nodes.set(a,t),n.emit("nodeAdded",{key:a,attributes:e}),t}function Er(n,a,e,t,r,i,o,s){if(!t&&n.type==="undirected")throw new U(`Graph.${a}: you cannot add a directed edge to an undirected graph. Use the #.addEdge or #.addUndirectedEdge instead.`);if(t&&n.type==="directed")throw new U(`Graph.${a}: you cannot add an undirected edge to a directed graph. Use the #.addEdge or #.addDirectedEdge instead.`);if(s&&!ye(s))throw new W(`Graph.${a}: invalid attributes. Expecting an object but got "${s}"`);if(i=""+i,o=""+o,s=s||{},!n.allowSelfLoops&&i===o)throw new U(`Graph.${a}: source & target are the same ("${i}"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`);let l=n._nodes.get(i),u=n._nodes.get(o);if(!l)throw new G(`Graph.${a}: source node "${i}" not found.`);if(!u)throw new G(`Graph.${a}: target node "${o}" not found.`);let d={key:null,undirected:t,source:i,target:o,attributes:s};if(e)r=n._edgeKeyGenerator();else if(r=""+r,n._edges.has(r))throw new U(`Graph.${a}: the "${r}" edge already exists in the graph.`);if(!n.multi&&(t?typeof l.undirected[o]<"u":typeof l.out[o]<"u"))throw new U(`Graph.${a}: an edge linking "${i}" to "${o}" already exists. If you really want to add multiple edges linking those nodes, you should create a multi graph by using the 'multi' option.`);let h=new Tt(t,r,l,u,s);n._edges.set(r,h);let c=i===o;return t?(l.undirectedDegree++,u.undirectedDegree++,c&&(l.undirectedLoops++,n._undirectedSelfLoopCount++)):(l.outDegree++,u.inDegree++,c&&(l.directedLoops++,n._directedSelfLoopCount++)),n.multi?h.attachMulti():h.attach(),t?n._undirectedSize++:n._directedSize++,d.key=r,n.emit("edgeAdded",d),r}function ql(n,a,e,t,r,i,o,s,l){if(!t&&n.type==="undirected")throw new U(`Graph.${a}: you cannot merge/update a directed edge to an undirected graph. Use the #.mergeEdge/#.updateEdge or #.addUndirectedEdge instead.`);if(t&&n.type==="directed")throw new U(`Graph.${a}: you cannot merge/update an undirected edge to a directed graph. Use the #.mergeEdge/#.updateEdge or #.addDirectedEdge instead.`);if(s){if(l){if(typeof s!="function")throw new W(`Graph.${a}: invalid updater function. Expecting a function but got "${s}"`)}else if(!ye(s))throw new W(`Graph.${a}: invalid attributes. Expecting an object but got "${s}"`)}i=""+i,o=""+o;let u;if(l&&(u=s,s=void 0),!n.allowSelfLoops&&i===o)throw new U(`Graph.${a}: source & target are the same ("${i}"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`);let d=n._nodes.get(i),h=n._nodes.get(o),c,f;if(!e&&(c=n._edges.get(r),c)){if((c.source.key!==i||c.target.key!==o)&&(!t||c.source.key!==o||c.target.key!==i))throw new U(`Graph.${a}: inconsistency detected when attempting to merge the "${r}" edge with "${i}" source & "${o}" target vs. ("${c.source.key}", "${c.target.key}").`);f=c}if(!f&&!n.multi&&d&&(f=t?d.undirected[o]:d.out[o]),f){let m=[f.key,!1,!1,!1];if(l?!u:!s)return m;if(l){let b=f.attributes;f.attributes=u(b),n.emit("edgeAttributesUpdated",{type:"replace",key:f.key,attributes:f.attributes})}else ve(f.attributes,s),n.emit("edgeAttributesUpdated",{type:"merge",key:f.key,attributes:f.attributes,data:s});return m}s=s||{},l&&u&&(s=u(s));let g={key:null,undirected:t,source:i,target:o,attributes:s};if(e)r=n._edgeKeyGenerator();else if(r=""+r,n._edges.has(r))throw new U(`Graph.${a}: the "${r}" edge already exists in the graph.`);let v=!1,y=!1;d||(d=gr(n,i,{}),v=!0,i===o&&(h=d,y=!0)),h||(h=gr(n,o,{}),y=!0),c=new Tt(t,r,d,h,s),n._edges.set(r,c);let p=i===o;return t?(d.undirectedDegree++,h.undirectedDegree++,p&&(d.undirectedLoops++,n._undirectedSelfLoopCount++)):(d.outDegree++,h.inDegree++,p&&(d.directedLoops++,n._directedSelfLoopCount++)),n.multi?c.attachMulti():c.attach(),t?n._undirectedSize++:n._directedSize++,g.key=r,n.emit("edgeAdded",g),[r,!0,v,y]}function xt(n,a){n._edges.delete(a.key);let{source:e,target:t,attributes:r}=a,i=a.undirected,o=e===t;i?(e.undirectedDegree--,t.undirectedDegree--,o&&(e.undirectedLoops--,n._undirectedSelfLoopCount--)):(e.outDegree--,t.inDegree--,o&&(e.directedLoops--,n._directedSelfLoopCount--)),n.multi?a.detachMulti():a.detach(),i?n._undirectedSize--:n._directedSize--,n.emit("edgeDropped",{key:a.key,attributes:r,source:e.key,target:t.key,undirected:i})}var re=class n extends vr.EventEmitter{constructor(a){if(super(),a=ve({},Vl,a),typeof a.multi!="boolean")throw new W(`Graph.constructor: invalid 'multi' option. Expecting a boolean but got "${a.multi}".`);if(!Hl.has(a.type))throw new W(`Graph.constructor: invalid 'type' option. Should be one of "mixed", "directed" or "undirected" but got "${a.type}".`);if(typeof a.allowSelfLoops!="boolean")throw new W(`Graph.constructor: invalid 'allowSelfLoops' option. Expecting a boolean but got "${a.allowSelfLoops}".`);let e=a.type==="mixed"?mr:a.type==="directed"?yr:br;ke(this,"NodeDataClass",e);let t="geid_"+Ul()+"_",r=0,i=()=>{let o;do o=t+r++;while(this._edges.has(o));return o};ke(this,"_attributes",{}),ke(this,"_nodes",new Map),ke(this,"_edges",new Map),ke(this,"_directedSize",0),ke(this,"_undirectedSize",0),ke(this,"_directedSelfLoopCount",0),ke(this,"_undirectedSelfLoopCount",0),ke(this,"_edgeKeyGenerator",i),ke(this,"_options",a),fr.forEach(o=>ke(this,o,this[o])),Ne(this,"order",()=>this._nodes.size),Ne(this,"size",()=>this._edges.size),Ne(this,"directedSize",()=>this._directedSize),Ne(this,"undirectedSize",()=>this._undirectedSize),Ne(this,"selfLoopCount",()=>this._directedSelfLoopCount+this._undirectedSelfLoopCount),Ne(this,"directedSelfLoopCount",()=>this._directedSelfLoopCount),Ne(this,"undirectedSelfLoopCount",()=>this._undirectedSelfLoopCount),Ne(this,"multi",this._options.multi),Ne(this,"type",this._options.type),Ne(this,"allowSelfLoops",this._options.allowSelfLoops),Ne(this,"implementation",()=>"graphology")}_resetInstanceCounters(){this._directedSize=0,this._undirectedSize=0,this._directedSelfLoopCount=0,this._undirectedSelfLoopCount=0}hasNode(a){return this._nodes.has(""+a)}hasDirectedEdge(a,e){if(this.type==="undirected")return!1;if(arguments.length===1){let t=""+a,r=this._edges.get(t);return!!r&&!r.undirected}else if(arguments.length===2){a=""+a,e=""+e;let t=this._nodes.get(a);return t?t.out.hasOwnProperty(e):!1}throw new W(`Graph.hasDirectedEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}hasUndirectedEdge(a,e){if(this.type==="directed")return!1;if(arguments.length===1){let t=""+a,r=this._edges.get(t);return!!r&&r.undirected}else if(arguments.length===2){a=""+a,e=""+e;let t=this._nodes.get(a);return t?t.undirected.hasOwnProperty(e):!1}throw new W(`Graph.hasDirectedEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}hasEdge(a,e){if(arguments.length===1){let t=""+a;return this._edges.has(t)}else if(arguments.length===2){a=""+a,e=""+e;let t=this._nodes.get(a);return t?typeof t.out<"u"&&t.out.hasOwnProperty(e)||typeof t.undirected<"u"&&t.undirected.hasOwnProperty(e):!1}throw new W(`Graph.hasEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}directedEdge(a,e){if(this.type==="undirected")return;if(a=""+a,e=""+e,this.multi)throw new U("Graph.directedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.directedEdges instead.");let t=this._nodes.get(a);if(!t)throw new G(`Graph.directedEdge: could not find the "${a}" source node in the graph.`);if(!this._nodes.has(e))throw new G(`Graph.directedEdge: could not find the "${e}" target node in the graph.`);let r=t.out&&t.out[e]||void 0;if(r)return r.key}undirectedEdge(a,e){if(this.type==="directed")return;if(a=""+a,e=""+e,this.multi)throw new U("Graph.undirectedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.undirectedEdges instead.");let t=this._nodes.get(a);if(!t)throw new G(`Graph.undirectedEdge: could not find the "${a}" source node in the graph.`);if(!this._nodes.has(e))throw new G(`Graph.undirectedEdge: could not find the "${e}" target node in the graph.`);let r=t.undirected&&t.undirected[e]||void 0;if(r)return r.key}edge(a,e){if(this.multi)throw new U("Graph.edge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.edges instead.");a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.edge: could not find the "${a}" source node in the graph.`);if(!this._nodes.has(e))throw new G(`Graph.edge: could not find the "${e}" target node in the graph.`);let r=t.out&&t.out[e]||t.undirected&&t.undirected[e]||void 0;if(r)return r.key}areDirectedNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areDirectedNeighbors: could not find the "${a}" node in the graph.`);return this.type==="undirected"?!1:e in t.in||e in t.out}areOutNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areOutNeighbors: could not find the "${a}" node in the graph.`);return this.type==="undirected"?!1:e in t.out}areInNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areInNeighbors: could not find the "${a}" node in the graph.`);return this.type==="undirected"?!1:e in t.in}areUndirectedNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areUndirectedNeighbors: could not find the "${a}" node in the graph.`);return this.type==="directed"?!1:e in t.undirected}areNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areNeighbors: could not find the "${a}" node in the graph.`);return this.type!=="undirected"&&(e in t.in||e in t.out)||this.type!=="directed"&&e in t.undirected}areInboundNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areInboundNeighbors: could not find the "${a}" node in the graph.`);return this.type!=="undirected"&&e in t.in||this.type!=="directed"&&e in t.undirected}areOutboundNeighbors(a,e){a=""+a,e=""+e;let t=this._nodes.get(a);if(!t)throw new G(`Graph.areOutboundNeighbors: could not find the "${a}" node in the graph.`);return this.type!=="undirected"&&e in t.out||this.type!=="directed"&&e in t.undirected}inDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.inDegree: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.inDegree}outDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.outDegree: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.outDegree}directedDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.directedDegree: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.inDegree+e.outDegree}undirectedDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.undirectedDegree: could not find the "${a}" node in the graph.`);return this.type==="directed"?0:e.undirectedDegree}inboundDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.inboundDegree: could not find the "${a}" node in the graph.`);let t=0;return this.type!=="directed"&&(t+=e.undirectedDegree),this.type!=="undirected"&&(t+=e.inDegree),t}outboundDegree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.outboundDegree: could not find the "${a}" node in the graph.`);let t=0;return this.type!=="directed"&&(t+=e.undirectedDegree),this.type!=="undirected"&&(t+=e.outDegree),t}degree(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.degree: could not find the "${a}" node in the graph.`);let t=0;return this.type!=="directed"&&(t+=e.undirectedDegree),this.type!=="undirected"&&(t+=e.inDegree+e.outDegree),t}inDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.inDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.inDegree-e.directedLoops}outDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.outDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.outDegree-e.directedLoops}directedDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.directedDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);return this.type==="undirected"?0:e.inDegree+e.outDegree-e.directedLoops*2}undirectedDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.undirectedDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);return this.type==="directed"?0:e.undirectedDegree-e.undirectedLoops*2}inboundDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.inboundDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);let t=0,r=0;return this.type!=="directed"&&(t+=e.undirectedDegree,r+=e.undirectedLoops*2),this.type!=="undirected"&&(t+=e.inDegree,r+=e.directedLoops),t-r}outboundDegreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.outboundDegreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);let t=0,r=0;return this.type!=="directed"&&(t+=e.undirectedDegree,r+=e.undirectedLoops*2),this.type!=="undirected"&&(t+=e.outDegree,r+=e.directedLoops),t-r}degreeWithoutSelfLoops(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.degreeWithoutSelfLoops: could not find the "${a}" node in the graph.`);let t=0,r=0;return this.type!=="directed"&&(t+=e.undirectedDegree,r+=e.undirectedLoops*2),this.type!=="undirected"&&(t+=e.inDegree+e.outDegree,r+=e.directedLoops*2),t-r}source(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.source: could not find the "${a}" edge in the graph.`);return e.source.key}target(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.target: could not find the "${a}" edge in the graph.`);return e.target.key}extremities(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.extremities: could not find the "${a}" edge in the graph.`);return[e.source.key,e.target.key]}opposite(a,e){a=""+a,e=""+e;let t=this._edges.get(e);if(!t)throw new G(`Graph.opposite: could not find the "${e}" edge in the graph.`);let r=t.source.key,i=t.target.key;if(a===r)return i;if(a===i)return r;throw new G(`Graph.opposite: the "${a}" node is not attached to the "${e}" edge (${r}, ${i}).`)}hasExtremity(a,e){a=""+a,e=""+e;let t=this._edges.get(a);if(!t)throw new G(`Graph.hasExtremity: could not find the "${a}" edge in the graph.`);return t.source.key===e||t.target.key===e}isUndirected(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.isUndirected: could not find the "${a}" edge in the graph.`);return e.undirected}isDirected(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.isDirected: could not find the "${a}" edge in the graph.`);return!e.undirected}isSelfLoop(a){a=""+a;let e=this._edges.get(a);if(!e)throw new G(`Graph.isSelfLoop: could not find the "${a}" edge in the graph.`);return e.source===e.target}addNode(a,e){return jl(this,a,e).key}mergeNode(a,e){if(e&&!ye(e))throw new W(`Graph.mergeNode: invalid attributes. Expecting an object but got "${e}"`);a=""+a,e=e||{};let t=this._nodes.get(a);return t?(e&&(ve(t.attributes,e),this.emit("nodeAttributesUpdated",{type:"merge",key:a,attributes:t.attributes,data:e})),[a,!1]):(t=new this.NodeDataClass(a,e),this._nodes.set(a,t),this.emit("nodeAdded",{key:a,attributes:e}),[a,!0])}updateNode(a,e){if(e&&typeof e!="function")throw new W(`Graph.updateNode: invalid updater function. Expecting a function but got "${e}"`);a=""+a;let t=this._nodes.get(a);if(t){if(e){let i=t.attributes;t.attributes=e(i),this.emit("nodeAttributesUpdated",{type:"replace",key:a,attributes:t.attributes})}return[a,!1]}let r=e?e({}):{};return t=new this.NodeDataClass(a,r),this._nodes.set(a,t),this.emit("nodeAdded",{key:a,attributes:r}),[a,!0]}dropNode(a){a=""+a;let e=this._nodes.get(a);if(!e)throw new G(`Graph.dropNode: could not find the "${a}" node in the graph.`);let t;if(this.type!=="undirected"){for(let r in e.out){t=e.out[r];do xt(this,t),t=t.next;while(t)}for(let r in e.in){t=e.in[r];do xt(this,t),t=t.next;while(t)}}if(this.type!=="directed")for(let r in e.undirected){t=e.undirected[r];do xt(this,t),t=t.next;while(t)}this._nodes.delete(a),this.emit("nodeDropped",{key:a,attributes:e.attributes})}dropEdge(a){let e;if(arguments.length>1){let t=""+arguments[0],r=""+arguments[1];if(e=Ie(this,t,r,this.type),!e)throw new G(`Graph.dropEdge: could not find the "${t}" -> "${r}" edge in the graph.`)}else if(a=""+a,e=this._edges.get(a),!e)throw new G(`Graph.dropEdge: could not find the "${a}" edge in the graph.`);return xt(this,e),this}dropDirectedEdge(a,e){if(arguments.length<2)throw new U("Graph.dropDirectedEdge: it does not make sense to try and drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new U("Graph.dropDirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");a=""+a,e=""+e;let t=Ie(this,a,e,"directed");if(!t)throw new G(`Graph.dropDirectedEdge: could not find a "${a}" -> "${e}" edge in the graph.`);return xt(this,t),this}dropUndirectedEdge(a,e){if(arguments.length<2)throw new U("Graph.dropUndirectedEdge: it does not make sense to drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new U("Graph.dropUndirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");let t=Ie(this,a,e,"undirected");if(!t)throw new G(`Graph.dropUndirectedEdge: could not find a "${a}" -> "${e}" edge in the graph.`);return xt(this,t),this}clear(){this._edges.clear(),this._nodes.clear(),this._resetInstanceCounters(),this.emit("cleared")}clearEdges(){let a=this._nodes.values(),e;for(;e=a.next(),e.done!==!0;)e.value.clear();this._edges.clear(),this._resetInstanceCounters(),this.emit("edgesCleared")}getAttribute(a){return this._attributes[a]}getAttributes(){return this._attributes}hasAttribute(a){return this._attributes.hasOwnProperty(a)}setAttribute(a,e){return this._attributes[a]=e,this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:a}),this}updateAttribute(a,e){if(typeof e!="function")throw new W("Graph.updateAttribute: updater should be a function.");let t=this._attributes[a];return this._attributes[a]=e(t),this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:a}),this}removeAttribute(a){return delete this._attributes[a],this.emit("attributesUpdated",{type:"remove",attributes:this._attributes,name:a}),this}replaceAttributes(a){if(!ye(a))throw new W("Graph.replaceAttributes: provided attributes are not a plain object.");return this._attributes=a,this.emit("attributesUpdated",{type:"replace",attributes:this._attributes}),this}mergeAttributes(a){if(!ye(a))throw new W("Graph.mergeAttributes: provided attributes are not a plain object.");return ve(this._attributes,a),this.emit("attributesUpdated",{type:"merge",attributes:this._attributes,data:a}),this}updateAttributes(a){if(typeof a!="function")throw new W("Graph.updateAttributes: provided updater is not a function.");return this._attributes=a(this._attributes),this.emit("attributesUpdated",{type:"update",attributes:this._attributes}),this}updateEachNodeAttributes(a,e){if(typeof a!="function")throw new W("Graph.updateEachNodeAttributes: expecting an updater function.");if(e&&!cr(e))throw new W("Graph.updateEachNodeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");let t=this._nodes.values(),r,i;for(;r=t.next(),r.done!==!0;)i=r.value,i.attributes=a(i.key,i.attributes);this.emit("eachNodeAttributesUpdated",{hints:e||null})}updateEachEdgeAttributes(a,e){if(typeof a!="function")throw new W("Graph.updateEachEdgeAttributes: expecting an updater function.");if(e&&!cr(e))throw new W("Graph.updateEachEdgeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");let t=this._edges.values(),r,i,o,s;for(;r=t.next(),r.done!==!0;)i=r.value,o=i.source,s=i.target,i.attributes=a(i.key,i.attributes,o.key,s.key,o.attributes,s.attributes,i.undirected);this.emit("eachEdgeAttributesUpdated",{hints:e||null})}forEachAdjacencyEntry(a){if(typeof a!="function")throw new W("Graph.forEachAdjacencyEntry: expecting a callback.");dn(!1,!1,!1,this,a)}forEachAdjacencyEntryWithOrphans(a){if(typeof a!="function")throw new W("Graph.forEachAdjacencyEntryWithOrphans: expecting a callback.");dn(!1,!1,!0,this,a)}forEachAssymetricAdjacencyEntry(a){if(typeof a!="function")throw new W("Graph.forEachAssymetricAdjacencyEntry: expecting a callback.");dn(!1,!0,!1,this,a)}forEachAssymetricAdjacencyEntryWithOrphans(a){if(typeof a!="function")throw new W("Graph.forEachAssymetricAdjacencyEntryWithOrphans: expecting a callback.");dn(!1,!0,!0,this,a)}nodes(){return Array.from(this._nodes.keys())}forEachNode(a){if(typeof a!="function")throw new W("Graph.forEachNode: expecting a callback.");let e=this._nodes.values(),t,r;for(;t=e.next(),t.done!==!0;)r=t.value,a(r.key,r.attributes)}findNode(a){if(typeof a!="function")throw new W("Graph.findNode: expecting a callback.");let e=this._nodes.values(),t,r;for(;t=e.next(),t.done!==!0;)if(r=t.value,a(r.key,r.attributes))return r.key}mapNodes(a){if(typeof a!="function")throw new W("Graph.mapNode: expecting a callback.");let e=this._nodes.values(),t,r,i=new Array(this.order),o=0;for(;t=e.next(),t.done!==!0;)r=t.value,i[o++]=a(r.key,r.attributes);return i}someNode(a){if(typeof a!="function")throw new W("Graph.someNode: expecting a callback.");let e=this._nodes.values(),t,r;for(;t=e.next(),t.done!==!0;)if(r=t.value,a(r.key,r.attributes))return!0;return!1}everyNode(a){if(typeof a!="function")throw new W("Graph.everyNode: expecting a callback.");let e=this._nodes.values(),t,r;for(;t=e.next(),t.done!==!0;)if(r=t.value,!a(r.key,r.attributes))return!1;return!0}filterNodes(a){if(typeof a!="function")throw new W("Graph.filterNodes: expecting a callback.");let e=this._nodes.values(),t,r,i=[];for(;t=e.next(),t.done!==!0;)r=t.value,a(r.key,r.attributes)&&i.push(r.key);return i}reduceNodes(a,e){if(typeof a!="function")throw new W("Graph.reduceNodes: expecting a callback.");if(arguments.length<2)throw new W("Graph.reduceNodes: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.");let t=e,r=this._nodes.values(),i,o;for(;i=r.next(),i.done!==!0;)o=i.value,t=a(t,o.key,o.attributes);return t}nodeEntries(){let a=this._nodes.values();return{[Symbol.iterator](){return this},next(){let e=a.next();if(e.done)return e;let t=e.value;return{value:{node:t.key,attributes:t.attributes},done:!1}}}}export(){let a=new Array(this._nodes.size),e=0;this._nodes.forEach((r,i)=>{a[e++]=Nl(i,r)});let t=new Array(this._edges.size);return e=0,this._edges.forEach((r,i)=>{t[e++]=Wl(this.type,i,r)}),{options:{type:this.type,multi:this.multi,allowSelfLoops:this.allowSelfLoops},attributes:this.getAttributes(),nodes:a,edges:t}}import(a,e=!1){if(a instanceof n)return a.forEachNode((l,u)=>{e?this.mergeNode(l,u):this.addNode(l,u)}),a.forEachEdge((l,u,d,h,c,f,g)=>{e?g?this.mergeUndirectedEdgeWithKey(l,d,h,u):this.mergeDirectedEdgeWithKey(l,d,h,u):g?this.addUndirectedEdgeWithKey(l,d,h,u):this.addDirectedEdgeWithKey(l,d,h,u)}),this;if(!ye(a))throw new W("Graph.import: invalid argument. Expecting a serialized graph or, alternatively, a Graph instance.");if(a.attributes){if(!ye(a.attributes))throw new W("Graph.import: invalid attributes. Expecting a plain object.");e?this.mergeAttributes(a.attributes):this.replaceAttributes(a.attributes)}let t,r,i,o,s;if(a.nodes){if(i=a.nodes,!Array.isArray(i))throw new W("Graph.import: invalid nodes. Expecting an array.");for(t=0,r=i.length;t{let i=ve({},t.attributes);t=new e.NodeDataClass(r,i),e._nodes.set(r,t)}),e}copy(a){if(a=a||{},typeof a.type=="string"&&a.type!==this.type&&a.type!=="mixed")throw new U(`Graph.copy: cannot create an incompatible copy from "${this.type}" type to "${a.type}" because this would mean losing information about the current graph.`);if(typeof a.multi=="boolean"&&a.multi!==this.multi&&a.multi!==!0)throw new U("Graph.copy: cannot create an incompatible copy by downgrading a multi graph to a simple one because this would mean losing information about the current graph.");if(typeof a.allowSelfLoops=="boolean"&&a.allowSelfLoops!==this.allowSelfLoops&&a.allowSelfLoops!==!0)throw new U("Graph.copy: cannot create an incompatible copy from a graph allowing self loops to one that does not because this would mean losing information about the current graph.");let e=this.emptyCopy(a),t=this._edges.values(),r,i;for(;r=t.next(),r.done!==!0;)i=r.value,Er(e,"copy",!1,i.undirected,i.key,i.source.key,i.target.key,ve({},i.attributes));return e}toJSON(){return this.export()}toString(){return"[object Graph]"}inspect(){let a={};this._nodes.forEach((i,o)=>{a[o]=i.attributes});let e={},t={};this._edges.forEach((i,o)=>{let s=i.undirected?"--":"->",l="",u=i.source.key,d=i.target.key,h;i.undirected&&u>d&&(h=u,u=d,d=h);let c=`(${u})${s}(${d})`;o.startsWith("geid_")?this.multi&&(typeof t[c]>"u"?t[c]=0:t[c]++,l+=`${t[c]}. `):l+=`[${o}]: `,l+=c,e[l]=i.attributes});let r={};for(let i in this)this.hasOwnProperty(i)&&!fr.has(i)&&typeof this[i]!="function"&&typeof i!="symbol"&&(r[i]=this[i]);return r.attributes=this._attributes,r.nodes=a,r.edges=e,ke(r,"constructor",this.constructor),r}};typeof Symbol<"u"&&(re.prototype[Symbol.for("nodejs.util.inspect.custom")]=re.prototype.inspect);$l.forEach(n=>{["add","merge","update"].forEach(a=>{let e=n.name(a),t=a==="add"?Er:ql;n.generateKey?re.prototype[e]=function(r,i,o){return t(this,e,!0,(n.type||this.type)==="undirected",null,r,i,o,a==="update")}:re.prototype[e]=function(r,i,o,s){return t(this,e,!1,(n.type||this.type)==="undirected",r,i,o,s,a==="update")}})});nl(re);fl(re);Cl(re);Ml(re);var hn=class extends re{constructor(a){let e=ve({type:"directed"},a);if("multi"in e&&e.multi!==!1)throw new W("DirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if(e.type!=="directed")throw new W('DirectedGraph.from: inconsistent "'+e.type+'" type in given options!');super(e)}},cn=class extends re{constructor(a){let e=ve({type:"undirected"},a);if("multi"in e&&e.multi!==!1)throw new W("UndirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if(e.type!=="undirected")throw new W('UndirectedGraph.from: inconsistent "'+e.type+'" type in given options!');super(e)}},fn=class extends re{constructor(a){let e=ve({multi:!0},a);if("multi"in e&&e.multi!==!0)throw new W("MultiGraph.from: inconsistent indication that the graph should be simple in given options!");super(e)}},gn=class extends re{constructor(a){let e=ve({type:"directed",multi:!0},a);if("multi"in e&&e.multi!==!0)throw new W("MultiDirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if(e.type!=="directed")throw new W('MultiDirectedGraph.from: inconsistent "'+e.type+'" type in given options!');super(e)}},vn=class extends re{constructor(a){let e=ve({type:"undirected",multi:!0},a);if("multi"in e&&e.multi!==!0)throw new W("MultiUndirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if(e.type!=="undirected")throw new W('MultiUndirectedGraph.from: inconsistent "'+e.type+'" type in given options!');super(e)}};function St(n){n.from=function(a,e){let t=ve({},a.options,e),r=new n(t);return r.import(a),r}}St(re);St(hn);St(cn);St(fn);St(gn);St(vn);re.Graph=re;re.DirectedGraph=hn;re.UndirectedGraph=cn;re.MultiGraph=fn;re.MultiDirectedGraph=gn;re.MultiUndirectedGraph=vn;re.InvalidArgumentsGraphError=W;re.NotFoundGraphError=G;re.UsageGraphError=U;function yn(n,a){(a==null||a>n.length)&&(a=n.length);for(var e=0,t=Array(a);e=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(l){throw l},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,o=!0,s=!1;return{s:function(){e=e.call(n)},n:function(){var l=e.next();return o=l.done,l},e:function(l){s=!0,i=l},f:function(){try{o||e.return==null||e.return()}finally{if(s)throw i}}}}function Xl(n){if(Array.isArray(n))return n}function Yl(n,a){var e=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(e!=null){var t,r,i,o,s=[],l=!0,u=!1;try{if(i=(e=e.call(n)).next,a===0){if(Object(e)!==e)return;l=!1}else for(;!(l=(t=i.call(e)).done)&&(s.push(t.value),s.length!==a);l=!0);}catch(d){u=!0,r=d}finally{try{if(!l&&e.return!=null&&(o=e.return(),Object(o)!==o))return}finally{if(u)throw r}}return s}}function Kl(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ie(n,a){return Xl(n)||Yl(n,a)||bn(n,a)||Kl()}var Ht={black:"#000000",silver:"#C0C0C0",gray:"#808080",grey:"#808080",white:"#FFFFFF",maroon:"#800000",red:"#FF0000",purple:"#800080",fuchsia:"#FF00FF",green:"#008000",lime:"#00FF00",olive:"#808000",yellow:"#FFFF00",navy:"#000080",blue:"#0000FF",teal:"#008080",aqua:"#00FFFF",darkblue:"#00008B",mediumblue:"#0000CD",darkgreen:"#006400",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",rebeccapurple:"#663399",mediumaquamarine:"#66CDAA",dimgray:"#696969",dimgrey:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",slategrey:"#708090",lightslategray:"#778899",lightslategrey:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370DB",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",palevioletred:"#DB7093",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",lightyellow:"#FFFFE0",ivory:"#FFFFF0"},wr=new Int8Array(4),mn=new Int32Array(wr.buffer,0,1),Ar=new Float32Array(wr.buffer,0,1),Zl=/^\s*rgba?\s*\(/,Ql=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)(?:\s*,\s*(.*)?)?\)\s*$/;function va(n){var a=0,e=0,t=0,r=1,i=n.toLowerCase();if(i==="transparent")return{r:0,g:0,b:0,a:0};if(i in Ht)return va(Ht[i]);if(n[0]==="#")n.length===4?(a=parseInt(n.charAt(1)+n.charAt(1),16),e=parseInt(n.charAt(2)+n.charAt(2),16),t=parseInt(n.charAt(3)+n.charAt(3),16)):(a=parseInt(n.charAt(1)+n.charAt(2),16),e=parseInt(n.charAt(3)+n.charAt(4),16),t=parseInt(n.charAt(5)+n.charAt(6),16)),n.length===9&&(r=parseInt(n.charAt(7)+n.charAt(8),16)/255);else if(Zl.test(n)){var o=n.match(Ql);o&&(a=+o[1],e=+o[2],t=+o[3],o[4]&&(r=+o[4]))}return{r:a,g:e,b:t,a:r}}var Et={};for(Ut in Ht)Et[Ut]=Fe(Ht[Ut]),Et[Ht[Ut]]=Et[Ut];var Ut;function xn(n,a,e,t,r){return mn[0]=t<<24|e<<16|a<<8|n,r&&(mn[0]=mn[0]&4278190079),Ar[0]}function Fe(n){if(n=n.toLowerCase(),typeof Et[n]<"u")return Et[n];var a=va(n),e=a.r,t=a.g,r=a.b,i=a.a;i=i*255|0;var o=xn(e,t,r,i,!0);return Et[n]=o,o}function dt(n,a){Ar[0]=Fe(n);var e=mn[0];a&&(e=e|16777216);var t=e&255,r=e>>8&255,i=e>>16&255,o=e>>24&255;return[t,r,i,o]}var ga={};function wt(n){if(typeof ga[n]<"u")return ga[n];var a=(n&16711680)>>>16,e=(n&65280)>>>8,t=n&255,r=255,i=xn(a,e,t,r,!0);return ga[n]=i,i}function Dr(n,a,e,t){return e+(a<<8)+(n<<16)}function Rr(n,a,e,t,r,i){var o=Math.floor(e/i*r),s=Math.floor(n.drawingBufferHeight/i-t/i*r),l=new Uint8Array(4);n.bindFramebuffer(n.FRAMEBUFFER,a),n.readPixels(o,s,1,1,n.RGBA,n.UNSIGNED_BYTE,l);var u=ie(l,4),d=u[0],h=u[1],c=u[2],f=u[3];return[d,h,c,f]}function Cr(n){var a=va(n),e=a.r,t=a.g,r=a.b,i=a.a,o=(e/255).toFixed(6),s=(t/255).toFixed(6),l=(r/255).toFixed(6),u=i.toFixed(6);return"vec4(".concat(o,", ").concat(s,", ").concat(l,", ").concat(u,")")}function Jl(n,a){if(typeof n!="object"||!n)return n;var e=n[Symbol.toPrimitive];if(e!==void 0){var t=e.call(n,a||"default");if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(n)}function kr(n){var a=Jl(n,"string");return typeof a=="symbol"?a:a+""}function D(n,a,e){return(a=kr(a))in n?Object.defineProperty(n,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[a]=e,n}function Lr(n,a){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);a&&(t=t.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),e.push.apply(e,t)}return e}function M(n){for(var a=1;a 0.5 ? u_cameraAngle : 0.0); + float halfSpread = v_loopSpread * 0.5; + + float exitAngle = angle - halfSpread; + float entryAngle = angle + halfSpread; + + // Control point distance: at t=0.5 the B\xE9zier reaches 0.75 * cpDist * cos(halfSpread) + // from source. Solve for cpDist so the loop tip reaches exactly R. + float cpDist = R / (0.75 * cos(halfSpread)); + + vec2 cp1 = source + cpDist * vec2(cos(exitAngle), sin(exitAngle)); + vec2 cp2 = source + cpDist * vec2(cos(entryAngle), sin(entryAngle)); + + float u = 1.0 - t; + vec2 d1 = cp1 - source; + vec2 d2 = cp2 - source; + return source + 3.0 * t * u * (u * d1 + t * d2); +} + +// Approximate arc length via chord sampling +float path_loop_length(vec2 source, vec2 target) { + float len = 0.0; + vec2 prev = path_loop_position(0.0, source, target); + const int STEPS = 16; + for (int i = 1; i <= STEPS; i++) { + float t = float(i) / float(STEPS); + vec2 cur = path_loop_position(t, source, target); + len += length(cur - prev); + prev = cur; + } + return len; +} +`;return{name:"loop",segments:t,glsl:r,uniforms:[],attributes:[{name:"loopRadius",size:1,type:WebGL2RenderingContext.FLOAT},{name:"loopAngle",size:1,type:WebGL2RenderingContext.FLOAT},{name:"loopSpread",size:1,type:WebGL2RenderingContext.FLOAT},{name:"loopFixedOrientation",size:1,type:WebGL2RenderingContext.FLOAT}],variables:{loopRadius:{type:"number",default:4},loopAngle:{type:"number",default:Math.PI/4},loopSpread:{type:"number",default:80*Math.PI/180},loopFixedOrientation:{type:"number",default:0}},spread:{variable:"loopRadius",compute:function(o){return o+4}}}}var $r=Ye(Nt());var iu=function(a){return a},ou=function(a){return a*a},su=function(a){return a*(2-a)},lu=function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)},uu=function(a){return a*a*a},du=function(a){return--a*a*a+1},hu=function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)},cu=function(a){return a===0?0:Math.pow(2,10*(a-1))},fu=function(a){return a===1?1:1-Math.pow(2,-10*a)},gu=function(a){return a===0?0:a===1?1:a<.5?Math.pow(2,10*(2*a-1))/2:(2-Math.pow(2,-10*(2*a-1)))/2},Nr={linear:iu,quadraticIn:ou,quadraticOut:su,quadraticInOut:lu,cubicIn:uu,cubicOut:du,cubicInOut:hu,exponentialIn:cu,exponentialOut:fu,exponentialInOut:gu};function _n(n){return n?typeof n=="function"?n:Nr[n]:Nr.linear}function Wr(n){return X(n)==="object"&&"glsl"in n&&!("attributes"in n)}function Or(n){return X(n)==="object"&&"glsl"in n&&!("attributes"in n)}var Tn={shapes:[Fr()],variables:{},layers:[zr()],rotateWithCamera:!1,label:{},backdrop:{},labelAttachments:{}},$t={paths:[Gr(),Mr()],extremities:[],variables:{},layers:[ct()],defaultHead:"none",defaultTail:"none",label:{}},Sn=["nodes","topNodes"],En=["edges","topEdges"],wn=[].concat(En,Sn),Br={nodes:Tn,edges:$t,depthLayers:V(wn)};function ya(n){return X(n)==="object"&&n!==null&&"attribute"in n}function Vr(n){return typeof n=="function"}function jr(n){return X(n)==="object"&&n!==null&&"when"in n&&typeof n.when=="function"&&"then"in n}function qr(n){return X(n)==="object"&&n!==null&&"whenState"in n&&"then"in n}function Xr(n){return X(n)==="object"&&n!==null&&"whenData"in n&&"then"in n}var vu={isHovered:!1,isLabelHovered:!1,isHidden:!1,isHighlighted:!1,isDragged:!1},pu={isHovered:!1,isLabelHovered:!1,isHidden:!1,isHighlighted:!1,parallelIndex:0,parallelCount:1},mu={isIdle:!0,isPanning:!1,isZooming:!1,isDragging:!1,hasHovered:!1,hasHighlighted:!1};function Yr(n){return M(M({},vu),n)}function Kr(n){return M(M({},pu),n)}function ba(n){return M(M({},mu),n)}var yu={x:{attribute:"x"},y:{attribute:"y"},size:{whenState:"isHovered",then:{attribute:"size",defaultValue:12},else:{attribute:"size",defaultValue:10}},color:{attribute:"color",defaultValue:"#666"},label:{attribute:"label"},visibility:{whenState:"isHidden",then:"hidden",else:"visible"},labelVisibility:{whenState:"isHovered",then:"visible",else:"auto"},backdropVisibility:{whenState:"isHovered",then:"visible",else:"hidden"},backdropColor:"#ffffff",backdropShadowColor:"rgba(0, 0, 0, 0.5)",backdropShadowBlur:12,backdropPadding:6},bu={size:{attribute:"size",defaultValue:1},color:{attribute:"color",defaultValue:"#ccc"},label:{attribute:"label"},visibility:{whenState:"isHidden",then:"hidden",else:"visible"}};var Dn={nodes:M(M({},yu),{},{depth:{whenState:"isHovered",then:"topNodes",else:"nodes"}}),edges:M(M({},bu),{},{depth:{whenState:["isHighlighted","isHovered"],then:"topEdges",else:"edges"}})};function xu(n){return"min"in n||"max"in n||"minValue"in n||"maxValue"in n||"easing"in n}function _u(n){return"dict"in n}function Rn(n,a){return typeof n=="string"?a[n]===!0:Array.isArray(n)?n.every(function(e){return a[e]===!0}):X(n)==="object"&&n!==null?Object.entries(n).every(function(e){var t=ie(e,2),r=t[0],i=t[1];return a[r]===i}):!1}function Tu(n,a){var e=a[n.attribute];return e===void 0?n.defaultValue:e}function Su(n,a,e){var t,r,i,o,s=a[n.attribute];if(s===void 0)return n.defaultValue;var l=Number(s);if(isNaN(l))return n.defaultValue;if(n.min===void 0&&n.max===void 0)return l;var u=(t=n.minValue)!==null&&t!==void 0?t:l,d=(r=n.maxValue)!==null&&r!==void 0?r:l;if(d===u){var h;return(h=n.min)!==null&&h!==void 0?h:l}var c=(l-u)/(d-u);c=Math.max(0,Math.min(1,c));var f=_n(n.easing);c=f(c);var g=(i=n.min)!==null&&i!==void 0?i:0,v=(o=n.max)!==null&&o!==void 0?o:1;return g+c*(v-g)}function Eu(n,a){var e=a[n.attribute];if(e===void 0)return n.defaultValue;var t=String(e);return t in n.dict?n.dict[t]:n.defaultValue}function wu(n,a,e){return _u(n)?Eu(n,a):xu(n)?Su(n,a):Tu(n,a)}function Zr(n,a){return typeof n=="string"?!!a[n]:Array.isArray(n)?n.every(function(e){return!!a[e]}):X(n)==="object"&&n!==null?Object.entries(n).every(function(e){var t=ie(e,2),r=t[0],i=t[1];return a[r]===i}):!1}function An(n,a,e,t,r,i){if(n==null)return i;if(X(n)!=="object"&&typeof n!="function")return n;if(jr(n)){var o=n.when(a,e,t,r)?n.then:n.else;return o===void 0?i:An(o,a,e,t,r,i)}if(qr(n)){var s=Rn(n.whenState,e)?n.then:n.else;return s===void 0?i:An(s,a,e,t,r,i)}if(Xr(n)){var l=Zr(n.whenData,a)?n.then:n.else;return l===void 0?i:An(l,a,e,t,r,i)}if(Vr(n)){var u=n(a,e,t,r);return u??i}if(ya(n)){var d=wu(n,a);return d??i}return n}function We(n){if(n==null)return"static";if(jr(n))return"graph-state";if(qr(n)){var a=We(n.then),e=n.else!==void 0?We(n.else):"static";return ze("item-state",ze(a,e))}if(Xr(n)){var t=We(n.then),r=n.else!==void 0?We(n.else):"static";return ze(t,r)}return Vr(n)?"graph-state":(ya(n),"static")}function ze(n,a){return n==="graph-state"||a==="graph-state"?"graph-state":n==="item-state"||a==="item-state"?"item-state":"static"}function xa(n){if(!n)return{dependency:"static",xAttribute:null,yAttribute:null};var a=Array.isArray(n)?n:[n],e="static",t=null,r=null,i=F(a),o;try{for(i.s();!(o=i.n()).done;){var s=o.value;if("matchData"in s&&"cases"in s)for(var l=s.cases,u=0,d=Object.values(l);u2&&arguments[2]!==void 0?arguments[2]:1,t=n[0],r=n[1],i=n[3],o=n[4],s=n[6],l=n[7],u=a.x,d=a.y;return{x:u*t+d*i+s*e,y:u*r+d*o+l*e}}function Cu(n,a){var e=n.height/n.width,t=a.height/a.width;return e<1&&t>1||e>1&&t<1?1:Math.min(Math.max(t,1/t),Math.max(1/e,e))}function ft(n,a,e,t,r){var i=n.angle,o=n.ratio,s=n.x,l=n.y,u=a.width,d=a.height,h=Ge(),c=Math.min(u,d)-2*t,f=Cu(a,e);return r?(nt(h,ti(Ge(),s,l)),nt(h,Ln(Ge(),o)),nt(h,ei(Ge(),i)),nt(h,Ln(Ge(),u/c/2/f,d/c/2/f))):(nt(h,Ln(Ge(),2*(c/u)*f,2*(c/d)*f)),nt(h,ei(Ge(),-i)),nt(h,Ln(Ge(),1/o)),nt(h,ti(Ge(),-s,-l))),h}function ri(n,a,e){var t=Vt(n,{x:Math.cos(a.angle),y:Math.sin(a.angle)},0),r=t.x,i=t.y;return 1/Math.sqrt(Math.pow(r,2)+Math.pow(i,2))/e.width}function Da(n,a,e){var t=n[a];if(t)for(var r=0;r=i.offset+i.count)){if(i.count===1)t.splice(r,1);else if(e===i.offset)i.offset++,i.count--;else if(e===i.offset+i.count-1)i.count--;else{var o=e+1,s=i.offset+i.count-o;i.count=e-i.offset,t.splice(r+1,0,{offset:o,count:s})}return}}}function Ra(n,a,e){if(!n[a]){n[a]=[{offset:e,count:1}];return}for(var t=n[a],r=t.length,i=0;i0?t[r-1]:null,s=r2&&arguments[2]!==void 0?arguments[2]:Mu;j(this,n),D(this,"texture",null),D(this,"dirty",!1),D(this,"dirtyRangeStart",1/0),D(this,"dirtyRangeEnd",-1),D(this,"indexMap",new Map),D(this,"freeIndices",[]),D(this,"nextIndex",0),this.gl=a,this.TEXELS_PER_ITEM=e,this.capacity=this.roundUpToPowerOfTwo(t);var r=this.computeTextureDimensions(this.capacity);this.textureWidth=r.width,this.textureHeight=r.height,this.data=new Float32Array(this.textureWidth*this.textureHeight*4),this.createTexture()}return q(n,[{key:"computeTextureDimensions",value:function(e){var t=e*this.TEXELS_PER_ITEM,r=Math.min(t,Wu),i=Math.ceil(t/r);return{width:r,height:i}}},{key:"roundUpToPowerOfTwo",value:function(e){return Math.pow(2,Math.ceil(Math.log2(Math.max(1,e))))}},{key:"createTexture",value:function(){var e=this.gl;this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA32F,this.textureWidth,this.textureHeight,0,e.RGBA,e.FLOAT,this.data),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null)}},{key:"resize",value:function(e){if(!(e<=this.capacity)){var t=this.roundUpToPowerOfTwo(Math.ceil(e*Nu)),r=this.gl,i=this.computeTextureDimensions(t),o=new Float32Array(i.width*i.height*4);o.set(this.data),this.texture&&r.deleteTexture(this.texture),this.data=o,this.capacity=t,this.textureWidth=i.width,this.textureHeight=i.height,this.createTexture(),this.dirty=!0,this.dirtyRangeStart=0,this.dirtyRangeEnd=this.nextIndex}}},{key:"allocate",value:function(e){var t=this.indexMap.get(e);if(t!==void 0)return t;var r;return this.freeIndices.length>0?r=this.freeIndices.pop():(r=this.nextIndex++,r>=this.capacity&&this.resize(r+1)),this.indexMap.set(e,r),r}},{key:"free",value:function(e){var t=this.indexMap.get(e);if(t!==void 0){this.indexMap.delete(e),this.freeIndices.push(t);for(var r=t*this.TEXELS_PER_ITEM*4,i=0;i0&&(e+="#"+t.join("#")),a&&(e+="#rwc"),e}function Vu(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,e=$u(n,a);if(!Wn.has(e)){var t={},r=F(n.uniforms),i;try{for(r.s();!(i=r.n()).done;){var o=i.value;o.type==="float"&&o.value!==void 0&&(t[o.name]=o.value)}}catch(s){r.e(s)}finally{r.f()}Wn.set(e,{shape:n,uniformValues:t,rotatesWithCamera:a,slug:e}),wi.set(e,Hu++)}return e}function vt(n){var a;return(a=wi.get(n))!==null&&a!==void 0?a:-1}function Ai(n){var a=[],e=new Set,t=new Set,r=/mat2 rotate2D\(float angle\)\s*\{[^}]+\}/,i=F(n),o;try{for(i.s();!(o=i.n()).done;){var s=o.value;if(!t.has(s.name)){t.add(s.name);var l=s.glsl;r.test(l)&&(e.has("rotate2D")?l=l.replace(r,""):e.add("rotate2D")),a.push(l)}}}catch(u){i.e(u)}finally{i.f()}return a.join(` +`)}function Di(){return Ai(Array.from(Wn.values()).map(function(n){return n.shape}))}function Ri(){var n=Array.from(Wn.entries());if(n.length===0)return` +float querySDF(int shapeId, vec2 uv, float size) { + return length(uv) - size; +} +`;var a=n.map(function(e,t){var r=ie(e,2),i=r[0],o=r[1],s=o.shape,l=o.uniformValues,u=o.rotatesWithCamera,d=s.uniforms.filter(function(f){return f.type==="float"}),h=d.map(function(f){var g;return J((g=l[f.name])!==null&&g!==void 0?g:0)}),c=h.length===0?"sdf_".concat(s.name,"(queryUV, size)"):"sdf_".concat(s.name,"(queryUV, size, ").concat(h.join(", "),")");return u?" case ".concat(t,": // ").concat(i,` + return `).concat(c.replace("queryUV","uv"),";"):" case ".concat(t,": { // ").concat(i,` + float c = cos(u_cameraAngle), s = sin(u_cameraAngle); + vec2 queryUV = mat2(c, -s, s, c) * uv; + return `).concat(c,`; + }`)}).join(` +`);return` +float querySDF(int shapeId, vec2 uv, float size) { + switch (shapeId) { +`.concat(a,` + default: return length(uv) - size; + } +} +`)}function Qt(n){return Ai(n)}function ju(n,a,e){var t;if(n.length===0)return` +void queryNodeSDF(int shapeId, vec2 uv, float size) { + context.sdf = length(uv) - size; + context.inradiusFactor = 1.0; +} +`;var r=function(f){var g=f.uniforms.filter(function(y){return y.type==="float"}),v=g.map(function(y){var p;return J((p=y.value)!==null&&p!==void 0?p:0)});return v.length===0?"sdf_".concat(f.name,"(uv, size)"):"sdf_".concat(f.name,"(uv, size, ").concat(v.join(", "),")")};if(n.length===1){var i,o=n[0];return` +void queryNodeSDF(int shapeId, vec2 uv, float size) { + context.sdf = `.concat(r(o),`; + context.inradiusFactor = `).concat(J((i=o.inradiusFactor)!==null&&i!==void 0?i:1),`; +} +`)}var s=n.map(function(c,f){var g;return" case ".concat(f,": // ").concat(c.name,` + context.sdf = `).concat(r(c),`; + context.inradiusFactor = `).concat(J((g=c.inradiusFactor)!==null&&g!==void 0?g:1),`; + break;`)}).join(` +`),l=n[0],u="",d="shapeId";if(e&&e.length>1){var h=e.map(function(c,f){return" case ".concat(c,": return ").concat(f,"; // ").concat(n[f].name)}).join(` +`);u=` +int globalToLocalShapeId(int globalId) { + switch (globalId) { +`.concat(h,` + default: return 0; + } +} +`),d="globalToLocalShapeId(shapeId)"}return"".concat(u,` +void queryNodeSDF(int shapeId, vec2 uv, float size) { + switch (`).concat(d,`) { +`).concat(s,` + default: + context.sdf = `).concat(r(l),`; + context.inradiusFactor = `).concat(J((t=l.inradiusFactor)!==null&&t!==void 0?t:1),`; + } +} +`)}var qu=D(D(D(D(D(D(D(D({},WebGL2RenderingContext.BOOL,1),WebGL2RenderingContext.BYTE,1),WebGL2RenderingContext.UNSIGNED_BYTE,1),WebGL2RenderingContext.SHORT,2),WebGL2RenderingContext.UNSIGNED_SHORT,2),WebGL2RenderingContext.INT,4),WebGL2RenderingContext.UNSIGNED_INT,4),WebGL2RenderingContext.FLOAT,4);function hi(n){var a=n.match(/^(#version[^\n]*\n)/);return a?a[1]+`#define PICKING_MODE +`+n.slice(a[1].length):`#define PICKING_MODE +`+n}var rt=(function(){function n(a,e,t){j(this,n),D(this,"array",new Float32Array),D(this,"constantArray",new Float32Array),D(this,"capacity",0),D(this,"verticesCount",0),D(this,"bufferGeneration",0),D(this,"uploadedGeneration",new Map),D(this,"constantBufferGeneration",0),D(this,"uploadedConstantGeneration",new Map),D(this,"renderOffset",0),D(this,"renderCount",-1),D(this,"pickProgram",null),D(this,"prePassProgram",null),D(this,"prePassOutputBuffer",null),D(this,"prePassTF",null),D(this,"prePassVAO",null),D(this,"prePassUniformLocations",{}),D(this,"prePassInputAttrLoc",-1),D(this,"prePassDef",null),D(this,"prePassLastFrameId",-1);var r=this.getDefinition();if(this.VERTICES=r.VERTICES,this.VERTEX_SHADER_SOURCE=r.VERTEX_SHADER_SOURCE,this.FRAGMENT_SHADER_SOURCE=r.FRAGMENT_SHADER_SOURCE,this.UNIFORMS=r.UNIFORMS,this.ATTRIBUTES=r.ATTRIBUTES,this.METHOD=r.METHOD,this.CONSTANT_ATTRIBUTES="CONSTANT_ATTRIBUTES"in r?r.CONSTANT_ATTRIBUTES:[],this.CONSTANT_DATA="CONSTANT_DATA"in r?r.CONSTANT_DATA:[],this.isInstanced="CONSTANT_ATTRIBUTES"in r,this.ATTRIBUTES_ITEMS_COUNT=ka(this.ATTRIBUTES),this.STRIDE=this.VERTICES*this.ATTRIBUTES_ITEMS_COUNT,this.renderer=t,this.normalProgram=this.getProgramInfo("normal",a,r.VERTEX_SHADER_SOURCE,r.FRAGMENT_SHADER_SOURCE,null),this.pickProgram=this.getProgramInfo("pick",a,hi(r.VERTEX_SHADER_SOURCE),hi(r.FRAGMENT_SHADER_SOURCE),null),this.isInstanced){var i=ka(this.CONSTANT_ATTRIBUTES);if(this.CONSTANT_DATA.length!==this.VERTICES)throw new Error("Program: error while getting constant data (expected ".concat(this.VERTICES," items, received ").concat(this.CONSTANT_DATA.length," instead)"));this.constantArray=new Float32Array(this.CONSTANT_DATA.length*i);for(var o=0;o=0&&(i.enableVertexAttribArray(c),i.vertexAttribPointer(c,h.size,i.FLOAT,!1,s,l+h.floatOffset*4),i.vertexAttribDivisor(c,1))}}catch(f){u.e(f)}finally{u.f()}i.bindBuffer(i.ARRAY_BUFFER,null)}}},{key:"unbindProgram",value:function(e){var t=this;if(this.isInstanced?(this.CONSTANT_ATTRIBUTES.forEach(function(u){return t.unbindAttribute(u,e,!1)}),this.ATTRIBUTES.forEach(function(u){return t.unbindAttribute(u,e,!0)})):this.ATTRIBUTES.forEach(function(u){return t.unbindAttribute(u,e)}),this.prePassDef){var r=F(this.prePassDef.outputAttributes),i;try{for(r.s();!(i=r.n()).done;){var o=i.value,s=e.attributeLocations[o.name];if(s!==void 0&&s>=0){var l=e.gl;l.disableVertexAttribArray(s),l.vertexAttribDivisor(s,0)}}}catch(u){r.e(u)}finally{r.f()}}}},{key:"bindAttribute",value:function(e,t,r,i){var o=qu[e.type];if(typeof o!="number")throw new Error('Program.bind: yet unsupported attribute type "'.concat(e.type,'"'));var s=t.attributeLocations[e.name],l=t.gl;if(s!==-1){l.enableVertexAttribArray(s);var u=this.isInstanced?(i?this.ATTRIBUTES_ITEMS_COUNT:ka(this.CONSTANT_ATTRIBUTES))*Float32Array.BYTES_PER_ELEMENT:this.ATTRIBUTES_ITEMS_COUNT*Float32Array.BYTES_PER_ELEMENT;l.vertexAttribPointer(s,e.size,e.type,e.normalized||!1,u,r),this.isInstanced&&i&&l.vertexAttribDivisor(s,1)}return e.size*o}},{key:"unbindAttribute",value:function(e,t,r){var i=t.attributeLocations[e.name],o=t.gl;i!==-1&&(o.disableVertexAttribArray(i),this.isInstanced&&r&&o.vertexAttribDivisor(i,0))}},{key:"reallocate",value:function(e){if(e!==this.capacity&&(this.capacity=e,this.verticesCount=this.VERTICES*e,this.array=new Float32Array(this.isInstanced?this.capacity*this.ATTRIBUTES_ITEMS_COUNT:this.verticesCount*this.ATTRIBUTES_ITEMS_COUNT),this.invalidateBuffers(),this.prePassOutputBuffer&&this.prePassDef&&e>0)){var t=this.normalProgram.gl;t.bindBuffer(t.ARRAY_BUFFER,this.prePassOutputBuffer),t.bufferData(t.ARRAY_BUFFER,e*this.prePassDef.floatsPerInstance*4,t.DYNAMIC_COPY),t.bindBuffer(t.ARRAY_BUFFER,null)}}},{key:"invalidateBuffers",value:function(){this.bufferGeneration++,this.constantBufferGeneration++}},{key:"hasNothingToRender",value:function(){return this.verticesCount===0}},{key:"setTypedUniform",value:function(e,t){var r=t.gl,i=t.uniformLocations,o=i[e.name];if(o&&e.type!=="sampler2D")switch(e.type){case"float":r.uniform1f(o,e.value);break;case"int":case"bool":r.uniform1i(o,e.value);break;case"vec2":r.uniform2fv(o,e.value);break;case"vec3":r.uniform3fv(o,e.value);break;case"vec4":r.uniform4fv(o,e.value);break;case"mat3":r.uniformMatrix3fv(o,!1,e.value);break;case"mat4":r.uniformMatrix4fv(o,!1,e.value);break}}},{key:"getPrePassDefinition",value:function(){return null}},{key:"setPrePassUniforms",value:function(e,t,r){}},{key:"_setupPrePass",value:function(e,t){this.prePassDef=t,this.prePassTF||(this.prePassTF=e.createTransformFeedback()),this.prePassOutputBuffer||(this.prePassOutputBuffer=e.createBuffer()),this.prePassVAO||(this.prePassVAO=e.createVertexArray()),this.prePassProgram&&e.deleteProgram(this.prePassProgram);var r=li(e,t.shaderSource),i=ui(e,`#version 300 es +precision highp float; +out vec4 c; +void main(){discard;}`);this.prePassProgram=Uu(e,r,i,t.tfVaryingNames),e.deleteShader(r),e.deleteShader(i),this.prePassUniformLocations={};var o=F(new Set(t.uniformNames)),s;try{for(o.s();!(s=o.n()).done;){var l=s.value,u=e.getUniformLocation(this.prePassProgram,l);u&&(this.prePassUniformLocations[l]=u)}}catch(y){o.e(y)}finally{o.f()}this.prePassInputAttrLoc=e.getAttribLocation(this.prePassProgram,t.inputAttributeName);for(var d=0,h=[this.normalProgram,this.pickProgram];d=0&&(t.bindBuffer(t.ARRAY_BUFFER,this.normalProgram.buffer),t.enableVertexAttribArray(this.prePassInputAttrLoc),t.vertexAttribPointer(this.prePassInputAttrLoc,1,t.FLOAT,!1,this.ATTRIBUTES_ITEMS_COUNT*4,0),t.bindBuffer(t.ARRAY_BUFFER,null)),t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,this.prePassTF),t.bindBufferBase(t.TRANSFORM_FEEDBACK_BUFFER,0,this.prePassOutputBuffer),t.enable(t.RASTERIZER_DISCARD),t.beginTransformFeedback(t.POINTS),t.drawArrays(t.POINTS,0,this.capacity),t.endTransformFeedback(),t.disable(t.RASTERIZER_DISCARD),t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,null),t.bindVertexArray(null)}}},{key:"rebuildPrePass",value:function(e){var t=this.getPrePassDefinition();t&&this._setupPrePass(e,t)}},{key:"renderProgram",value:function(e,t){var r=t.gl,i=t.program,o=t.isPicking;o?r.disable(r.BLEND):r.enable(r.BLEND),!o&&this.prePassProgram&&this.prePassLastFrameId!==e.frameId&&(this._runPrePass(e),this.prePassLastFrameId=e.frameId),r.useProgram(i),this.setUniforms(e,t),this.drawWebGL(this.METHOD,t)}},{key:"render",value:function(e,t,r){if(!this.hasNothingToRender()){this.renderOffset=t??0,this.renderCount=r??-1;var i=this.normalProgram.gl;if(i.bindFramebuffer(i.FRAMEBUFFER,null),i.viewport(0,0,e.width*e.pixelRatio,e.height*e.pixelRatio),this.bindProgram(this.normalProgram),this.renderProgram(e,this.normalProgram),this.unbindProgram(this.normalProgram),this.pickProgram&&e.pickingFrameBuffer){var o=Math.ceil(e.width*e.pixelRatio/e.downSizingRatio),s=Math.ceil(e.height*e.pixelRatio/e.downSizingRatio);i.bindFramebuffer(i.FRAMEBUFFER,e.pickingFrameBuffer),i.viewport(0,0,o,s),this.bindProgram(this.pickProgram),this.renderProgram(e,this.pickProgram),this.unbindProgram(this.pickProgram),i.bindFramebuffer(i.FRAMEBUFFER,null),i.viewport(0,0,e.width*e.pixelRatio,e.height*e.pixelRatio)}}}},{key:"drawWebGL",value:function(e,t){var r=t.gl,i=this.renderCount>=0?this.renderCount:this.capacity;this.isInstanced?r.drawArraysInstanced(e,0,this.VERTICES,i):r.drawArrays(e,this.renderOffset*this.VERTICES,i*this.VERTICES)}}])})(),Xu=(function(n){function a(){var e;j(this,a);for(var t=arguments.length,r=new Array(t),i=0;ithis.bufferCapacity&&(this.bufferCapacity=Math.max(t,Math.ceil(this.bufferCapacity*1.5)||10),pe(a,"reallocate",this,3)([this.bufferCapacity]))}}])})(rt);function Yu(n){var a=n.shapes,e=n.rotateWithCamera,t=e===void 0?!1:e,r=n.shapeGlobalIds,i=Qt(a),o=new Set,s=a.flatMap(function(x){return x.uniforms}).filter(function(x){return o.has(x.name)?!1:(o.add(x.name),!0)}).map(function(x){return"uniform ".concat(x.type," ").concat(x.name,";")}).join(` +`),l;if(a.length===1){var u=a[0],d=u.uniforms.filter(function(x){return x.type==="float"}),h=d.map(function(x){var S;return J((S=x.value)!==null&&S!==void 0?S:0)}),c=h.length>0?"sdf_".concat(u.name,"(uv, size, ").concat(h.join(", "),")"):"sdf_".concat(u.name,"(uv, size)");l=za(c,t)}else{var f=a.map(function(x,S){var E=x.uniforms.filter(function(A){return A.type==="float"}),w=E.map(function(A){var P;return J((P=A.value)!==null&&P!==void 0?P:0)}),T=w.length>0?"sdf_".concat(x.name,"(uv, size, ").concat(w.join(", "),")"):"sdf_".concat(x.name,"(uv, size)"),R=r?r[S]:S;return" case ".concat(R,": return ").concat(T,";")}).join(` +`),g=a[0],v=g.uniforms.filter(function(x){return x.type==="float"}),y=v.map(function(x){var S;return J((S=x.value)!==null&&S!==void 0?S:0)}),p=y.length>0?"sdf_".concat(g.name,"(uv, size, ").concat(y.join(", "),")"):"sdf_".concat(g.name,"(uv, size)"),m=` +float queryShapeSDF(int shapeId, vec2 uv, float size) { + switch (shapeId) { +`.concat(f,` + default: return `).concat(p,`; + } +} +`),b=t?`float c = cos(u_cameraAngle); + float s = sin(u_cameraAngle); + uv = mat2(c, -s, s, c) * uv;`:"";l=m+` + +// Global shape ID set by main() before calling findEdgeDistance +int g_shapeId; + +float findEdgeDistance(vec2 direction, float size) { + float low = 0.0; + float high = 2.0; + + for (int i = 0; i < 8; i++) { + float mid = (low + high) * 0.5; + vec2 uv = direction * mid; + `.concat(b,` + float d = queryShapeSDF(g_shapeId, uv, size); + if (d < 0.0) { + low = mid; + } else { + high = mid; + } + } + + return (low + high) * 0.5; +} +`)}var _=`#version 300 es + +in vec2 a_nodePosition; +in float a_nodeSize; +in float a_shapeId; +in float a_labelWidth; +in float a_labelHeight; +in float a_positionMode; +in float a_labelAngle; +in vec4 a_backdropColor; +in vec4 a_backdropShadowColor; +in float a_backdropShadowBlur; +in float a_backdropPadding; +in vec4 a_backdropBorderColor; +in vec4 a_backdropExtra; // [borderWidth, cornerRadius, labelPadding, area] +in vec2 a_labelBoxOffset; +in vec2 a_quadCorner; + +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +uniform vec2 u_resolution; +uniform float u_pixelRatio; +uniform float u_labelMargin; +uniform float u_zoomLabelSizeRatio; +uniform float u_labelPixelSnapping; +`.concat(s,` + +out vec2 v_uv; +out vec2 v_nodeCenter; +out float v_nodeRadius; +out vec2 v_labelCenter; +out vec2 v_labelHalfSize; +out float v_aaWidth; +out float v_shapeId; +out float v_labelAngle; +out vec4 v_backdropColor; +out vec4 v_backdropShadowColor; +out float v_backdropShadowBlur; +out float v_backdropPadding; +out vec4 v_backdropBorderColor; +out float v_backdropBorderWidth; +out float v_backdropCornerRadius; +out float v_backdropArea; + +`).concat(i,` +`).concat(l,` +`).concat(Zt,` + +void main() { + `).concat(a.length>1?"g_shapeId = int(a_shapeId); // Set global shape ID for multi-shape mode":"// Single-shape mode",` + `).concat(_i,` + // CSS pixel attributes are multiplied by u_pixelRatio to match nodeRadiusPixels, + // which is already in physical pixels (nodeRadiusNDC * u_resolution.x / 2.0). + float padding = a_backdropPadding * u_pixelRatio; + float shadowBlur = a_backdropShadowBlur * u_pixelRatio; + // Unpack a_backdropExtra: [borderWidth, cornerRadius, labelPadding, area] + float borderWidth = a_backdropExtra.x * u_pixelRatio; + float cornerRadius = a_backdropExtra.y * u_pixelRatio; + float labelPad = a_backdropExtra.z * u_pixelRatio; + float backdropArea = a_backdropExtra.w; + // Use 2x shadowBlur so the Gaussian fully decays before the quad edge + float totalExpansion = shadowBlur * 2.0 + borderWidth; + float enlargedRadius = nodeRadiusPixels + padding; + + // Apply zoom-dependent label size scaling + float zoomScale = u_zoomLabelSizeRatio; + float labelW = a_labelWidth * zoomScale * u_pixelRatio; + float labelH = a_labelHeight * zoomScale * u_pixelRatio; + float labelMargin = u_labelMargin * zoomScale * u_pixelRatio; + + // Only apply labelPad when a label is actually present + float effectiveLabelPad = labelW > 0.0 ? labelPad : 0.0; + vec2 labelHalfSize = vec2(labelW * 0.5 + effectiveLabelPad, labelH * 0.5 + effectiveLabelPad); + vec2 labelOffset = vec2(0.0); + + float la_c = cos(a_labelAngle); + float la_s = sin(a_labelAngle); + mat2 labelRotMat = mat2(la_c, -la_s, la_s, la_c); + + vec3 nodeClip = u_matrix * vec3(a_nodePosition, 1.0); + vec2 snapDelta = vec2(0.0); + + if (a_positionMode < 4.0 && labelW > 0.0) { + vec2 screenDir = getLabelDirection(a_positionMode); + vec2 rotatedScreenDir = labelRotMat * screenDir; + vec2 sdfDir = vec2(rotatedScreenDir.x, -rotatedScreenDir.y); + + float edgeDistNormalized = findEdgeDistance(sdfDir, 1.0); + float edgeDistPixels = nodeRadiusPixels * edgeDistNormalized; + // labelMargin matches the label shader's margin (gap from node edge to text) + float labelStart = edgeDistPixels + labelMargin; + + // Snap node center to pixel grid so label/backdrop/attachment move as a unit + vec2 nodeScreen = vec2( + (nodeClip.x + 1.0) * u_resolution.x, + (1.0 - nodeClip.y) * u_resolution.y + ) * 0.5; + snapDelta = (round(nodeScreen) - nodeScreen) * u_labelPixelSnapping; + + if (a_positionMode < 0.5) { + // Right: box spans from node center to text end + padding + float boxRightEdge = labelStart + labelW + labelPad; + labelOffset = vec2(boxRightEdge * 0.5, 0.0); + labelHalfSize.x = boxRightEdge * 0.5; + } else if (a_positionMode < 1.5) { + // Left: mirror of right + float boxLeftEdge = labelStart + labelW + labelPad; + labelOffset = vec2(-boxLeftEdge * 0.5, 0.0); + labelHalfSize.x = boxLeftEdge * 0.5; + } else if (a_positionMode < 2.5) { + // Above: text bottom at labelStart, centered horizontally + labelOffset = vec2(0.0, -(labelStart + labelH * 0.5)); + } else if (a_positionMode < 3.5) { + // Below: text top at labelStart, centered horizontally + labelOffset = vec2(0.0, labelStart + labelH * 0.5); + } + + labelOffset = labelRotMat * labelOffset; + + // Shift the label box center to cover attachments (e.g., below the label) + labelOffset += a_labelBoxOffset * zoomScale * u_pixelRatio; + } + + // For node-only mode, zero out label dimensions + if (backdropArea > 0.5 && backdropArea < 1.5) { + labelHalfSize = vec2(0.0); + labelOffset = vec2(0.0); + } + + vec2 minBound, maxBound; + + bool hasLabelBounds = labelW > 0.0 && (backdropArea > 1.5 || (a_positionMode < 4.0 && backdropArea < 0.5)); + + if (hasLabelBounds) { + // Union with label bounds (area=both) or label-only bounds (area=label) + vec2 labelMin, labelMax; + + if (a_labelAngle != 0.0) { + vec2 corner1 = labelOffset + labelRotMat * vec2(-labelHalfSize.x, -labelHalfSize.y); + vec2 corner2 = labelOffset + labelRotMat * vec2(labelHalfSize.x, -labelHalfSize.y); + vec2 corner3 = labelOffset + labelRotMat * vec2(labelHalfSize.x, labelHalfSize.y); + vec2 corner4 = labelOffset + labelRotMat * vec2(-labelHalfSize.x, labelHalfSize.y); + labelMin = min(min(corner1, corner2), min(corner3, corner4)); + labelMax = max(max(corner1, corner2), max(corner3, corner4)); + } else { + labelMin = labelOffset - labelHalfSize; + labelMax = labelOffset + labelHalfSize; + } + + if (backdropArea > 1.5) { + // Label-only: bounds from label rect only + minBound = labelMin - totalExpansion; + maxBound = labelMax + totalExpansion; + } else { + // Both: union of node + label + minBound = min(-vec2(enlargedRadius), labelMin) - totalExpansion; + maxBound = max(vec2(enlargedRadius), labelMax) + totalExpansion; + } + } else { + // Node-only or no visible label + float totalRadius = enlargedRadius + totalExpansion; + if (a_positionMode >= 3.5 && labelW > 0.0 && backdropArea < 0.5) { + // "over" position with label, area=both + vec2 rotatedHalfSize = labelHalfSize; + if (a_labelAngle != 0.0) { + vec2 corner1 = labelRotMat * vec2(-labelHalfSize.x, -labelHalfSize.y); + vec2 corner2 = labelRotMat * vec2(labelHalfSize.x, -labelHalfSize.y); + vec2 corner3 = labelRotMat * vec2(labelHalfSize.x, labelHalfSize.y); + vec2 corner4 = labelRotMat * vec2(-labelHalfSize.x, labelHalfSize.y); + vec2 labelMin = min(min(corner1, corner2), min(corner3, corner4)); + vec2 labelMax = max(max(corner1, corner2), max(corner3, corner4)); + rotatedHalfSize = max(abs(labelMin), abs(labelMax)); + } + minBound = -vec2(max(totalRadius, rotatedHalfSize.x + totalExpansion), + max(totalRadius, rotatedHalfSize.y + totalExpansion)); + maxBound = -minBound; + } else { + minBound = -vec2(totalRadius); + maxBound = vec2(totalRadius); + } + } + + vec2 quadSize = maxBound - minBound; + vec2 quadCenter = (minBound + maxBound) * 0.5; + + vec2 localPos = quadCenter + a_quadCorner * quadSize * 0.5 + snapDelta; + vec2 ndcOffset = localPos * 2.0 / u_resolution; + ndcOffset.y = -ndcOffset.y; + + gl_Position = vec4(nodeClip.xy + ndcOffset, 0.0, 1.0); + + v_uv = localPos; + v_nodeCenter = vec2(0.0); + v_nodeRadius = nodeRadiusPixels; + v_labelCenter = labelOffset; + v_labelHalfSize = labelHalfSize; + v_aaWidth = 1.0; + v_shapeId = a_shapeId; + v_labelAngle = a_labelAngle; + v_backdropColor = a_backdropColor; + v_backdropShadowColor = a_backdropShadowColor; + v_backdropShadowBlur = a_backdropShadowBlur; + v_backdropPadding = a_backdropPadding; + v_backdropBorderColor = a_backdropBorderColor; + v_backdropBorderWidth = borderWidth; + v_backdropCornerRadius = cornerRadius; + v_backdropArea = backdropArea; +} +`);return _}function Ku(n){var a=n.shapes,e=n.rotateWithCamera,t=e===void 0?!1:e,r=n.shapeGlobalIds,i=Qt(a),o=new Set,s=a.flatMap(function(_){return _.uniforms}).filter(function(_){return o.has(_.name)?!1:(o.add(_.name),!0)}).map(function(_){return"uniform ".concat(_.type," ").concat(_.name,";")}).join(` +`),l;if(a.length===1){var u=a[0],d=u.uniforms.filter(function(_){return _.type==="float"}),h=d.map(function(_){var x;return J((x=_.value)!==null&&x!==void 0?x:0)}),c=h.length>0?"sdf_".concat(u.name,"(nodeUV, 1.0, ").concat(h.join(", "),")"):"sdf_".concat(u.name,"(nodeUV, 1.0)");l="float nodeSdfNormalized = ".concat(c,";")}else{var f=a.map(function(_,x){var S=_.uniforms.filter(function(R){return R.type==="float"}),E=S.map(function(R){var A;return J((A=R.value)!==null&&A!==void 0?A:0)}),w=E.length>0?"sdf_".concat(_.name,"(nodeUV, 1.0, ").concat(E.join(", "),")"):"sdf_".concat(_.name,"(nodeUV, 1.0)"),T=r?r[x]:x;return" case ".concat(T,": nodeSdfNormalized = ").concat(w,"; break;")}).join(` +`),g=a[0],v=g.uniforms.filter(function(_){return _.type==="float"}),y=v.map(function(_){var x;return J((x=_.value)!==null&&x!==void 0?x:0)}),p=y.length>0?"sdf_".concat(g.name,"(nodeUV, 1.0, ").concat(y.join(", "),")"):"sdf_".concat(g.name,"(nodeUV, 1.0)");l=`float nodeSdfNormalized; + int shapeId = int(v_shapeId); + switch (shapeId) { +`.concat(f,` + default: nodeSdfNormalized = `).concat(p,`; + }`)}var m=t?`float effectiveRadius = max(enlargedRadius - cornerRadius, 0.01); + float ca_c = cos(u_cameraAngle); + float ca_s = sin(u_cameraAngle); + vec2 rotatedScreenUV = mat2(ca_c, -ca_s, ca_s, ca_c) * screenUV; + vec2 nodeUV = vec2(rotatedScreenUV.x, -rotatedScreenUV.y) / effectiveRadius;`:`float effectiveRadius = max(enlargedRadius - cornerRadius, 0.01); + vec2 nodeUV = vec2(screenUV.x, -screenUV.y) / effectiveRadius;`,b=`#version 300 es +precision highp float; + +in vec2 v_uv; +in vec2 v_nodeCenter; +in float v_nodeRadius; +in vec2 v_labelCenter; +in vec2 v_labelHalfSize; +in float v_aaWidth; +in float v_shapeId; +in float v_labelAngle; +in vec4 v_backdropColor; +in vec4 v_backdropShadowColor; +in float v_backdropShadowBlur; +in float v_backdropPadding; +in vec4 v_backdropBorderColor; +in float v_backdropBorderWidth; +in float v_backdropCornerRadius; +in float v_backdropArea; + +uniform float u_cameraAngle; +`.concat(s,` + +layout(location = 0) out vec4 fragColor; +layout(location = 1) out vec4 fragPicking; + +`).concat(i,` +`).concat(ku,` +`).concat(Iu,` +`).concat(Fu,` +`).concat(zu,` + +void main() { + vec4 backdropColor = v_backdropColor; + vec4 shadowColor = v_backdropShadowColor; + float shadowBlur = v_backdropShadowBlur; + float padding = v_backdropPadding; + vec4 borderColor = v_backdropBorderColor; + float borderWidth = v_backdropBorderWidth; + float cornerRadius = v_backdropCornerRadius; + + float enlargedRadius = v_nodeRadius + padding; + vec2 screenUV = v_uv - v_nodeCenter; + `).concat(m,` + + // Query the correct shape SDF based on shapeId + `).concat(l,` + float nodeSdfPixels = nodeSdfNormalized * effectiveRadius - cornerRadius; + + // Label SDF with optional corner radius and rotation + float labelSdfPixels; + if (v_labelHalfSize.x > 0.0) { + vec2 labelP = v_uv - v_labelCenter; + labelSdfPixels = sdfRoundedRotatedBox(labelP, v_labelHalfSize, v_labelAngle, cornerRadius); + } else { + labelSdfPixels = 10000.0; + } + + // Select area: 0=both, 1=node, 2=label + float combinedSdf; + if (v_backdropArea > 1.5) { + combinedSdf = labelSdfPixels; + } else if (v_backdropArea > 0.5) { + combinedSdf = nodeSdfPixels; + } else { + combinedSdf = min(nodeSdfPixels, labelSdfPixels); + } + + // Fill + border composite + float outerEdge = smoothstep(v_aaWidth, -v_aaWidth, combinedSdf); + vec4 background; + if (borderWidth > 0.5) { + float innerEdge = smoothstep(v_aaWidth, -v_aaWidth, combinedSdf + borderWidth); + float fillAlpha = innerEdge * backdropColor.a; + vec4 fill = vec4(backdropColor.rgb * fillAlpha, fillAlpha); + float borderAlpha = (outerEdge - innerEdge) * borderColor.a; + vec4 border = vec4(borderColor.rgb * borderAlpha, borderAlpha); + background = fill + border * (1.0 - fill.a); + } else { + float fillAlpha = outerEdge * backdropColor.a; + background = vec4(backdropColor.rgb * fillAlpha, fillAlpha); + } + + // Gaussian-like shadow falloff (mimics canvas shadowBlur) + vec4 shadow = vec4(0.0); + float sigma = shadowBlur / 2.5; + if (sigma > 0.001) { + float shadowDist = max(0.0, combinedSdf); + float shadowAlpha = exp(-(shadowDist * shadowDist) / (2.0 * sigma * sigma)) * shadowColor.a; + shadow = vec4(shadowColor.rgb * shadowAlpha, shadowAlpha); + } + + fragColor = background + shadow * (1.0 - background.a); + fragPicking = vec4(0.0); +} +`);return b}function Zu(n){var a=["u_matrix","u_sizeRatio","u_correctionRatio","u_cameraAngle","u_resolution","u_pixelRatio","u_labelMargin","u_zoomLabelSizeRatio","u_labelPixelSnapping"],e=F(n),t;try{for(e.s();!(t=e.n()).done;){var r=t.value,i=F(r.uniforms),o;try{for(i.s();!(o=i.n()).done;){var s=o.value;a.includes(s.name)||a.push(s.name)}}catch(l){i.e(l)}finally{i.f()}}}catch(l){e.e(l)}finally{e.f()}return a}function Qu(n){return{vertexShader:Yu(n),fragmentShader:Ku(n),uniforms:Zu(n.shapes)}}function Ju(n){var a,e,t,r=n.rotateWithCamera,i=r===void 0?!1:r,o=n.label,s=o===void 0?{}:o,l=n.shapes,u=n.shapeGlobalIds;if(l.length===0)throw new Error("createBackdropProgram: at least one shape must be provided in 'shapes'");var d=(a=s.margin)!==null&&a!==void 0?a:5,h=(e=s.zoomToLabelSizeRatioFunction)!==null&&e!==void 0?e:function(){return 1},c={shapes:l,rotateWithCamera:i,shapeGlobalIds:u},f=Qu(c);return t=(function(g){function v(y,p,m){return j(this,v),te(this,v,[y,p,m])}return ne(v,g),q(v,[{key:"getDefinition",value:function(){var p=WebGL2RenderingContext,m=p.FLOAT,b=p.TRIANGLE_STRIP;return{VERTICES:4,VERTEX_SHADER_SOURCE:f.vertexShader,FRAGMENT_SHADER_SOURCE:f.fragmentShader,METHOD:b,UNIFORMS:f.uniforms,ATTRIBUTES:[{name:"a_nodePosition",size:2,type:m},{name:"a_nodeSize",size:1,type:m},{name:"a_shapeId",size:1,type:m},{name:"a_labelWidth",size:1,type:m},{name:"a_labelHeight",size:1,type:m},{name:"a_positionMode",size:1,type:m},{name:"a_labelAngle",size:1,type:m},{name:"a_backdropColor",size:4,type:m},{name:"a_backdropShadowColor",size:4,type:m},{name:"a_backdropShadowBlur",size:1,type:m},{name:"a_backdropPadding",size:1,type:m},{name:"a_backdropBorderColor",size:4,type:m},{name:"a_backdropExtra",size:4,type:m},{name:"a_labelBoxOffset",size:2,type:m}],CONSTANT_ATTRIBUTES:[{name:"a_quadCorner",size:2,type:m}],CONSTANT_DATA:[[-1,-1],[1,-1],[-1,1],[1,1]]}}},{key:"processBackdrop",value:function(p,m){var b=this.array,_=this.STRIDE,x=p*_;b[x++]=m.x,b[x++]=m.y,b[x++]=m.size,b[x++]=m.shapeId,b[x++]=m.labelWidth,b[x++]=m.labelHeight,b[x++]=Kt[m.position],b[x++]=m.labelAngle,b[x++]=m.backdropColor[0],b[x++]=m.backdropColor[1],b[x++]=m.backdropColor[2],b[x++]=m.backdropColor[3],b[x++]=m.backdropShadowColor[0],b[x++]=m.backdropShadowColor[1],b[x++]=m.backdropShadowColor[2],b[x++]=m.backdropShadowColor[3],b[x++]=m.backdropShadowBlur,b[x++]=m.backdropPadding,b[x++]=m.backdropBorderColor[0],b[x++]=m.backdropBorderColor[1],b[x++]=m.backdropBorderColor[2],b[x++]=m.backdropBorderColor[3],b[x++]=m.backdropBorderWidth,b[x++]=m.backdropCornerRadius,b[x++]=m.backdropLabelPadding,b[x++]=m.backdropArea,b[x++]=m.labelBoxOffset[0],b[x++]=m.labelBoxOffset[1]}},{key:"setUniforms",value:function(p,m){var b=m.gl,_=m.uniformLocations;b.uniformMatrix3fv(_.u_matrix,!1,p.matrix),b.uniform1f(_.u_sizeRatio,p.sizeRatio),b.uniform1f(_.u_correctionRatio,p.correctionRatio),b.uniform1f(_.u_cameraAngle,p.cameraAngle),b.uniform2f(_.u_resolution,p.width*p.pixelRatio,p.height*p.pixelRatio),b.uniform1f(_.u_pixelRatio,p.pixelRatio),b.uniform1f(_.u_labelMargin,v.labelMargin),b.uniform1f(_.u_zoomLabelSizeRatio,1/h(p.zoomRatio)),b.uniform1f(_.u_labelPixelSnapping,p.labelPixelSnapping);var x=new Set,S=F(l),E;try{for(S.s();!(E=S.n()).done;){var w=E.value,T=F(w.uniforms),R;try{for(T.s();!(R=T.n()).done;){var A=R.value;x.has(A.name)||(x.add(A.name),this.setTypedUniform(A,m))}}catch(P){T.e(P)}finally{T.f()}}}catch(P){S.e(P)}finally{S.f()}}}])})(Xu),D(t,"programOptions",n),D(t,"generatedShaders",f),D(t,"labelMargin",d),t}var ed=(function(n){function a(){return j(this,a),te(this,a,arguments)}return ne(a,n),q(a,[{key:"process",value:function(t,r,i,o,s){var l=r*this.STRIDE;if(i.visibility==="hidden"){for(var u=l+this.STRIDE;l2&&arguments[2]!==void 0?arguments[2]:!1,t=new Set(["u_matrix","u_sizeRatio","u_correctionRatio","u_cameraAngle","u_pickingPadding","u_nodeDataTexture","u_layerAttributeTexture"]),r=new Set,i=n.flatMap(function(f){return f.uniforms}).filter(function(f){return t.has(f.name)||r.has(f.name)?!1:(r.add(f.name),!0)}).map(function(f){return"uniform ".concat(f.type," ").concat(f.name,";")}).join(` +`),o=a.flatMap(function(f){return f.uniforms}).filter(function(f){return t.has(f.name)||r.has(f.name)?!1:(r.add(f.name),!0)}).map(function(f){return"uniform ".concat(f.type," ").concat(f.name,";")}).join(` +`),s=new Set,l=a.flatMap(function(f){return f.attributes}).filter(function(f){var g=f.name.replace(/^a_/,"");return s.has(g)?!1:(s.add(g),!0)}).map(function(f){var g=f.name.replace(/^a_/,""),v=f.size===1?"float":"vec".concat(f.size);return"out ".concat(v," v_").concat(g,";")}).join(` +`),u=Si(He(a),{varPrefix:"layer",baseTexelExpr:"nodeIdx * u_layerAttributeTexelsPerNode",textureWidthUniform:"u_layerAttributeTextureWidth",textureSamplerUniform:"u_layerAttributeTexture"}),d=u.fetchCode,h=u.varyingAssignments,c=`#version 300 es + +// Standard node attributes (per instance) - minimal buffer usage +in float a_nodeIndex; // Index into node data texture AND layer attribute texture +in vec4 a_id; // Node ID for picking + +// Constant attributes (per vertex, same for all instances) +in vec2 a_quadCorner; // (-1,-1), (1,-1), (1,1), (-1,1) for quad corners + +// Standard uniforms +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +#ifdef PICKING_MODE +uniform float u_pickingPadding; +#endif +uniform sampler2D u_nodeDataTexture; +uniform int u_nodeDataTextureWidth; + +// Layer attribute texture uniforms +uniform sampler2D u_layerAttributeTexture; +uniform int u_layerAttributeTextureWidth; +uniform int u_layerAttributeTexelsPerNode; + +`.concat(i,` +`).concat(o,` + +// Standard varyings +out vec2 v_uv; // Normalized coordinates [-1, 1] +out vec4 v_id; +out float v_antialiasingWidth; // Width for antialiasing in UV space +out float v_pixelSize; // Node size in pixels (for pixel-mode borders) +out float v_pixelToUV; // Conversion factor: multiply by this to convert screen pixels to UV units +out float v_shapeId; // Shape ID for multi-shape programs + +// Layer varyings +`).concat(l,` + +const float bias = 255.0 / 254.0; + +void main() { + // Fetch node data from texture: vec4(x, y, size, shapeId) + // 2D texture layout: texCoord = (index % width, index / width) + int nodeIdx = int(a_nodeIndex); + ivec2 texCoord = ivec2(nodeIdx % u_nodeDataTextureWidth, nodeIdx / u_nodeDataTextureWidth); + vec4 nodeData = texelFetch(u_nodeDataTexture, texCoord, 0); + vec2 a_position = nodeData.xy; + float a_size = nodeData.z; + v_shapeId = nodeData.w; // Pass shape ID to fragment shader + +`).concat(d,` + + // Calculate the actual size in pixels + float size = a_size * u_correctionRatio / u_sizeRatio * 2.0; + + // In PICKING_MODE, inflate the quad by nodePickingPadding pixels on each side + #ifdef PICKING_MODE + float paddedSize = size + u_pickingPadding * u_correctionRatio; + vec2 offset = a_quadCorner * paddedSize; + #else + vec2 offset = a_quadCorner * size; + #endif +`).concat(e?"":` // Counter-rotate the quad offset so nodes stay upright when camera rotates + float c = cos(u_cameraAngle); + float s = sin(u_cameraAngle); + offset = mat2(c, s, -s, c) * offset; +`,` vec2 position = a_position + offset; + + gl_Position = vec4( + (u_matrix * vec3(position, 1)).xy, + 0, + 1 + ); + + // In PICKING_MODE, UV is scaled beyond [-1, 1] to match the inflated quad + #ifdef PICKING_MODE + v_uv = a_quadCorner * (paddedSize / size); + #else + v_uv = a_quadCorner; + #endif + + // Pass ID to fragment shader + v_id = a_id; + + // Pass pixel size for layers that need pixel-mode calculations + // Multiply by 2 because 'size' is half-width (offset from center), not full diameter + v_pixelSize = size * 2.0; + + // Conversion factor from screen pixels to UV units + // Same derivation as v_antialiasingWidth which represents ~1 pixel in UV space + // P pixels in UV space = P * u_correctionRatio / size + v_pixelToUV = u_correctionRatio / size; + + // We use an antialiasing width of 1px (so v_pixelToUV) + v_antialiasingWidth = v_pixelToUV; + + // Pass layer attributes to fragment shader (fetched from texture) +`).concat(h,` +} +`);return c}function nd(n,a,e,t){var r=a.map(function(g,v){var y="layer_".concat(g.name),p=[].concat(V(g.attributes.map(function(m){return"v_".concat(m.name.replace(/^a_/,""))})),V(g.uniforms.map(function(m){return m.name}))).join(", ");return" // Layer ".concat(v+1,": ").concat(g.name,` + color = blendOver(color, `).concat(y,"(").concat(p,"));")}).join(` + +`),i=new Set(["u_correctionRatio"]),o=new Set,s=n.flatMap(function(g){return g.uniforms}).filter(function(g){return i.has(g.name)||o.has(g.name)?!1:(o.add(g.name),!0)}).map(function(g){return"uniform ".concat(g.type," ").concat(g.name,";")}).join(` +`),l=a.flatMap(function(g){return g.uniforms}).filter(function(g){return i.has(g.name)||o.has(g.name)?!1:(o.add(g.name),!0)}).map(function(g){return"uniform ".concat(g.type," ").concat(g.name,";")}).join(` +`),u=new Set,d=a.flatMap(function(g){return g.attributes}).filter(function(g){var v=g.name.replace(/^a_/,"");return u.has(v)?!1:(u.add(v),!0)}).map(function(g){var v=g.name.replace(/^a_/,""),y=g.size===1?"float":"vec".concat(g.size);return"in ".concat(y," v_").concat(v,";")}).join(` +`),h=Qt(n),c=ju(n,e,t),f=`#version 300 es +precision highp float; + +// Standard varyings +in vec2 v_uv; +in vec4 v_id; +in float v_antialiasingWidth; +in float v_pixelSize; +in float v_pixelToUV; +in float v_shapeId; // Shape ID for multi-shape programs + +// Standard uniforms (needed for some layer calculations like pixel-mode borders) +uniform float u_correctionRatio; +#ifdef PICKING_MODE +uniform float u_pickingPadding; +#endif + +// Shape uniforms +`.concat(s,` + +// Layer uniforms +`).concat(l,` + +// Layer varyings +`).concat(d,` + +// Fragment output (single target - picking handled via separate pass) +out vec4 fragColor; + +const float bias = 255.0 / 254.0; + +// LayerContext struct - provides rendering context to all layers +struct LayerContext { + float sdf; // Signed distance from shape boundary (negative inside) + vec2 uv; // UV coordinates [-1, 1], center at (0,0) + float shapeSize; // Effective shape size (~diameter) in UV space (1.0 - aaWidth) + float shapeHalfSize; // Effective shape half size (~radius) in UV space + float pixelSize; // Node full size (~diameter) in screen pixels + float aaWidth; // Anti-aliasing width for smooth transitions + float correctionRatio; // Scaling factor for consistent rendering across zoom levels + float pixelToUV; // Conversion factor: multiply screen pixels by this to get UV units + float inradiusFactor; // Ratio of inradius to circumradius (shape depth factor) +}; + +LayerContext context; // Global instance, populated before layer calls + +// Alpha "over" compositing for layer blending +vec4 blendOver(vec4 bg, vec4 fg) { + float a = fg.a; + return vec4(mix(bg.rgb, fg.rgb, a), bg.a + a * (1.0 - bg.a)); +} + +// SDF shape functions +`).concat(h,` + +// Shape selector function (sets context.sdf and context.inradiusFactor) +`).concat(c,` + +// Layer functions +`).concat(a.map(function(g){return g.glsl}).join(` + +`),` + +void main() { + // 1. Setup LayerContext (available to all layer functions) + context.shapeSize = 1.0 - v_antialiasingWidth; + context.shapeHalfSize = context.shapeSize * 0.5; + context.pixelSize = v_pixelSize; + context.uv = v_uv; + context.aaWidth = v_antialiasingWidth; + context.correctionRatio = u_correctionRatio; + context.pixelToUV = v_pixelToUV; + + // Query shape SDF based on shapeId (sets context.sdf and context.inradiusFactor) + queryNodeSDF(int(v_shapeId), v_uv, context.shapeSize); + + // 2. Early discard for pixels fully outside the shape (with AA margin) + // In PICKING_MODE, allow extra fragments up to the picking padding distance + #ifdef PICKING_MODE + if (context.sdf > u_pickingPadding * v_pixelToUV + context.aaWidth) discard; + #else + if (context.sdf > context.aaWidth) discard; + #endif + + // 3. Apply layers sequentially with "over" compositing + vec4 color = vec4(0.0); + +`).concat(r,` + + #ifdef PICKING_MODE + // Picking pass: output node ID for pixels within the picking area + if (context.sdf > u_pickingPadding * v_pixelToUV) discard; + fragColor = v_id; + fragColor.a *= bias; + #else + // Visual pass: apply antialiasing at shape boundary + // smoothstep provides smooth transition from opaque to transparent + float alpha = smoothstep(context.aaWidth, -context.aaWidth, context.sdf); + // Mix with transparent to fade both color AND alpha together (avoids bright halo) + fragColor = mix(vec4(0.0), color, alpha); + #endif +} +`);return f}function ad(n,a){var e=new Set;return e.add("u_matrix"),e.add("u_sizeRatio"),e.add("u_correctionRatio"),e.add("u_cameraAngle"),e.add("u_pickingPadding"),e.add("u_nodeDataTexture"),e.add("u_nodeDataTextureWidth"),e.add("u_layerAttributeTexture"),e.add("u_layerAttributeTextureWidth"),e.add("u_layerAttributeTexelsPerNode"),n.forEach(function(t){t.uniforms.forEach(function(r){return e.add(r.name)})}),a.forEach(function(t){t.uniforms.forEach(function(r){return e.add(r.name)})}),Array.from(e)}function rd(n){var a=WebGL2RenderingContext,e=a.UNSIGNED_BYTE,t=a.FLOAT;return[{name:"a_nodeIndex",size:1,type:t},{name:"a_id",size:4,type:e,normalized:!0}]}function ci(n){var a=n.shapes,e=n.layers,t=n.rotateWithCamera,r=t===void 0?!1:t,i=n.shapeGlobalIds;return{vertexShader:td(a,e,r),fragmentShader:nd(a,e,r,i),uniforms:ad(a,e),attributes:rd()}}var Ci=(function(n){function a(){var e;j(this,a);for(var t=arguments.length,r=new Array(t),i=0;ithis.bufferCapacity&&(this.bufferCapacity=Math.max(t,Math.ceil(this.bufferCapacity*1.5)||1e3),pe(a,"reallocate",this,3)([this.bufferCapacity]))}}])})(rt);function id(n,a,e){var t=Qt(n),r=new Set,i=n.flatMap(function(v){return v.uniforms}).filter(function(v){return r.has(v.name)?!1:(r.add(v.name),!0)}).map(function(v){return"uniform ".concat(v.type," ").concat(v.name,";")}).join(` +`),o,s="";if(n.length===1){var l=n[0],u=l.uniforms.filter(function(v){return v.type==="float"}).map(function(v){var y;return J((y=v.value)!==null&&y!==void 0?y:0)}),d=u.length>0?"sdf_".concat(l.name,"(uv, size, ").concat(u.join(", "),")"):"sdf_".concat(l.name,"(uv, size)");o=za(d,a)}else{var h=n.map(function(v,y){var p=v.uniforms.filter(function(_){return _.type==="float"}).map(function(_){var x;return J((x=_.value)!==null&&x!==void 0?x:0)}),m=p.length>0?"sdf_".concat(v.name,"(uv, size, ").concat(p.join(", "),")"):"sdf_".concat(v.name,"(uv, size)"),b=e?e[y]:y;return" case ".concat(b,": return ").concat(m,";")}).join(` +`),c=n[0],f=c.uniforms.filter(function(v){return v.type==="float"}).map(function(v){var y;return J((y=v.value)!==null&&y!==void 0?y:0)}),g=f.length>0?"sdf_".concat(c.name,"(uv, size, ").concat(f.join(", "),")"):"sdf_".concat(c.name,"(uv, size)");s="int g_shapeId;",o=` +float queryShapeSDF(int shapeId, vec2 uv, float size) { + switch (shapeId) { +`.concat(h,` + default: return `).concat(g,`; + } +} +`).concat(a?` +float findEdgeDistance(vec2 direction, float size) { + float c = cos(-u_cameraAngle); float s = sin(-u_cameraAngle); + float lo = 0.0, hi = 2.0; + for (int i = 0; i < 8; i++) { + float mid = (lo + hi) * 0.5; + vec2 uv = mat2(c, -s, s, c) * (direction * mid); + if (queryShapeSDF(g_shapeId, uv, size) < 0.0) lo = mid; else hi = mid; + } + return (lo + hi) * 0.5; +}`:` +float findEdgeDistance(vec2 direction, float size) { + float lo = 0.0, hi = 2.0; + for (int i = 0; i < 8; i++) { + float mid = (lo + hi) * 0.5; + vec2 uv = direction * mid; + if (queryShapeSDF(g_shapeId, uv, size) < 0.0) lo = mid; else hi = mid; + } + return (lo + hi) * 0.5; +}`,` +`)}return`#version 300 es + +in vec2 a_nodePosition; +in float a_nodeSize; +in float a_shapeId; +in vec4 a_id; +in vec4 a_color; +in float a_labelWidth; +in float a_labelHeight; +in float a_positionMode; +in float a_labelAngle; +in float a_padding; +in vec2 a_quadCorner; + +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +uniform vec2 u_resolution; +uniform float u_pixelRatio; +uniform float u_labelMargin; +uniform float u_zoomLabelSizeRatio; +uniform float u_labelPixelSnapping; +uniform float u_pickingPadding; +`.concat(i,` + +out vec4 v_id; +out vec4 v_color; + +`).concat(t,` +`).concat(s,` +`).concat(o,` +`).concat(Zt,` + +void main() { + `).concat(n.length>1?"g_shapeId = int(a_shapeId);":"",` + `).concat(_i,` + + float zoomScale = u_zoomLabelSizeRatio; + float labelW = a_labelWidth * zoomScale * u_pixelRatio; + float labelH = a_labelHeight * zoomScale * u_pixelRatio; + float labelMargin = u_labelMargin * zoomScale * u_pixelRatio; +#ifdef PICKING_MODE + float padding = u_pickingPadding * u_pixelRatio; +#else + float padding = a_padding * u_pixelRatio; +#endif + + if (labelW <= 0.0) { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); + v_id = vec4(0.0); + v_color = vec4(0.0); + return; + } + + vec2 labelHalfSize = vec2(labelW * 0.5 + padding, labelH * 0.5 + padding); + vec2 labelOffset = vec2(0.0); + + float la_c = cos(a_labelAngle); + float la_s = sin(a_labelAngle); + mat2 labelRotMat = mat2(la_c, -la_s, la_s, la_c); + + vec3 nodeClip = u_matrix * vec3(a_nodePosition, 1.0); + vec2 nodeScreen = vec2( + (nodeClip.x + 1.0) * u_resolution.x, + (1.0 - nodeClip.y) * u_resolution.y + ) * 0.5; + vec2 snapDelta = (round(nodeScreen) - nodeScreen) * u_labelPixelSnapping; + + if (a_positionMode < 4.0) { + vec2 screenDir = getLabelDirection(a_positionMode); + vec2 rotatedScreenDir = labelRotMat * screenDir; + vec2 sdfDir = vec2(rotatedScreenDir.x, -rotatedScreenDir.y); + + float edgeDistNormalized = findEdgeDistance(sdfDir, 1.0); + float edgeDistPixels = nodeRadiusPixels * edgeDistNormalized; + float labelStart = edgeDistPixels + labelMargin; + + if (a_positionMode < 0.5) { + labelOffset = vec2(labelStart + labelW * 0.5, 0.0); + } else if (a_positionMode < 1.5) { + labelOffset = vec2(-(labelStart + labelW * 0.5), 0.0); + } else if (a_positionMode < 2.5) { + labelOffset = vec2(0.0, -(labelStart + labelH * 0.5)); + } else { + labelOffset = vec2(0.0, labelStart + labelH * 0.5); + } + + labelOffset = labelRotMat * labelOffset; + } + + vec2 localPos = labelOffset + a_quadCorner * labelHalfSize; + vec2 ndcOffset = (localPos + snapDelta) * 2.0 / u_resolution; + ndcOffset.y = -ndcOffset.y; + + gl_Position = vec4(nodeClip.xy + ndcOffset, 0.0, 1.0); + v_id = a_id; + v_color = a_color; +} +`)}var od=`#version 300 es +precision highp float; + +in vec4 v_id; +in vec4 v_color; + +out vec4 fragColor; + +void main() { + #ifdef PICKING_MODE + const float bias = 255.0 / 254.0; + fragColor = v_id; + fragColor.a *= bias; + #else + if (v_color.a <= 0.0) discard; + // v_color is non-premultiplied RGBA (0-1); convert to premultiplied for blending + fragColor = vec4(v_color.rgb * v_color.a, v_color.a); + #endif +} +`,sd=(function(n){function a(){var e;j(this,a);for(var t=arguments.length,r=new Array(t),i=0;ithis.bufferCapacity&&(this.bufferCapacity=Math.max(t,Math.ceil(this.bufferCapacity*1.5)||10),pe(a,"reallocate",this,3)([this.bufferCapacity]))}}])})(rt);function ld(n){var a,e,t,r=n.shapes,i=n.rotateWithCamera,o=i===void 0?!1:i,s=n.label,l=s===void 0?{}:s,u=n.shapeGlobalIds;if(r.length===0)throw new Error("createLabelBackgroundProgram: at least one shape must be provided");var d=(a=l.margin)!==null&&a!==void 0?a:5,h=(e=l.zoomToLabelSizeRatioFunction)!==null&&e!==void 0?e:function(){return 1},c=id(r,o,u);return t=(function(f){function g(v,y,p){return j(this,g),te(this,g,[v,y,p])}return ne(g,f),q(g,[{key:"getDefinition",value:function(){var y=WebGL2RenderingContext,p=y.FLOAT,m=y.UNSIGNED_BYTE,b=y.TRIANGLE_STRIP;return{VERTICES:4,VERTEX_SHADER_SOURCE:c,FRAGMENT_SHADER_SOURCE:od,METHOD:b,UNIFORMS:["u_matrix","u_sizeRatio","u_correctionRatio","u_cameraAngle","u_resolution","u_pixelRatio","u_labelMargin","u_zoomLabelSizeRatio","u_labelPixelSnapping","u_pickingPadding"].concat(V(new Set(r.flatMap(function(_){return _.uniforms.map(function(x){return x.name})})))),ATTRIBUTES:[{name:"a_nodePosition",size:2,type:p},{name:"a_nodeSize",size:1,type:p},{name:"a_shapeId",size:1,type:p},{name:"a_id",size:4,type:m,normalized:!0},{name:"a_color",size:4,type:m,normalized:!0},{name:"a_labelWidth",size:1,type:p},{name:"a_labelHeight",size:1,type:p},{name:"a_positionMode",size:1,type:p},{name:"a_labelAngle",size:1,type:p},{name:"a_padding",size:1,type:p}],CONSTANT_ATTRIBUTES:[{name:"a_quadCorner",size:2,type:p}],CONSTANT_DATA:[[-1,-1],[1,-1],[-1,1],[1,1]]}}},{key:"processLabelBackground",value:function(y,p){var m=this.array,b=y*this.STRIDE;m[b++]=p.x,m[b++]=p.y,m[b++]=p.size,m[b++]=p.shapeId,m[b++]=p.id,m[b++]=p.color,m[b++]=p.labelWidth,m[b++]=p.labelHeight,m[b++]=p.positionMode,m[b++]=p.labelAngle,m[b++]=p.padding}},{key:"setUniforms",value:function(y,p){var m=p.gl,b=p.uniformLocations;m.uniformMatrix3fv(b.u_matrix,!1,y.matrix),m.uniform1f(b.u_sizeRatio,y.sizeRatio),m.uniform1f(b.u_correctionRatio,y.correctionRatio),m.uniform1f(b.u_cameraAngle,y.cameraAngle),m.uniform2f(b.u_resolution,y.width*y.pixelRatio,y.height*y.pixelRatio),m.uniform1f(b.u_pixelRatio,y.pixelRatio),m.uniform1f(b.u_labelMargin,g.labelMargin),m.uniform1f(b.u_zoomLabelSizeRatio,1/h(y.zoomRatio)),m.uniform1f(b.u_labelPixelSnapping,y.labelPixelSnapping),m.uniform1f(b.u_pickingPadding,y.labelPickingPadding);var _=new Set,x=F(r),S;try{for(x.s();!(S=x.n()).done;){var E=S.value,w=F(E.uniforms),T;try{for(w.s();!(T=w.n()).done;){var R=T.value;_.has(R.name)||(_.add(R.name),this.setTypedUniform(R,{gl:m,uniformLocations:b}))}}catch(A){w.e(A)}finally{w.f()}}}catch(A){x.e(A)}finally{x.f()}}}])})(sd),D(t,"labelMargin",d),t}var Qe={fontSize:64,buffer:8,radius:24,cutoff:.25,maxTextureSize:2048,debounceTimeout:100},qt=2,Yt=1e20;function ud(n,a,e,t,r){var i=n+r*4,o=document.createElement("canvas");o.width=i,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0});return s.font="".concat(t," ").concat(e," ").concat(n,"px ").concat(a),s.textBaseline="alphabetic",s.textAlign="left",s.fillStyle="black",{ctx:s,canvasSize:i,gridOuter:new Float64Array(i*i),gridInner:new Float64Array(i*i),f:new Float64Array(i),z:new Float64Array(i+1),v:new Uint16Array(i)}}function dd(n,a,e,t,r){var i=n.ctx,o=n.canvasSize,s=i.measureText(a),l=s.width,u=s.actualBoundingBoxAscent,d=s.actualBoundingBoxDescent,h=s.actualBoundingBoxLeft,c=s.actualBoundingBoxRight,f=Math.ceil(u),g=Math.ceil(h),v=Math.max(0,Math.min(o-e,Math.ceil(h)+Math.ceil(c))),y=Math.min(o-e,f+Math.ceil(d)),p=v+2*e,m=y+2*e,b=Math.max(p*m,0),_=new Uint8ClampedArray(b),x={data:_,width:p,height:m,glyphWidth:v,glyphHeight:y,glyphTop:f,glyphLeft:g,glyphAdvance:l};if(v===0||y===0)return x;var S=n.gridInner,E=n.gridOuter;i.clearRect(e,e,v,y),i.fillText(a,e+g,e+f);var w=i.getImageData(e,e,v,y);E.fill(Yt,0,b),S.fill(0,0,b);for(var T=0;T0?C*C:0,S[P]=C<0?C*C:0}}}fi(E,0,0,p,m,p,n.f,n.v,n.z),fi(S,e,e,v,y,p,n.f,n.v,n.z);for(var L=0;L-1);l++,i[l]=s,o[l]=u,o[l+1]=Yt}for(var c=0,f=0;c0&&arguments[0]!==void 0?arguments[0]:{};return j(this,a),e=te(this,a),D(e,"fonts",new Map),D(e,"textures",[]),D(e,"cursor",{x:0,y:0,rowHeight:0,atlasIndex:0}),D(e,"pendingGlyphs",[]),D(e,"debounceTimer",null),e.options=M(M({},Qe),t),e.canvas=document.createElement("canvas"),e.canvas.width=e.options.maxTextureSize,e.canvas.height=e.options.maxTextureSize,e.ctx=e.canvas.getContext("2d",{willReadFrequently:!0}),e.measureCanvas=document.createElement("canvas"),e.measureCtx=e.measureCanvas.getContext("2d"),e.textures.push(e.ctx.getImageData(0,0,1,1)),e}return ne(a,n),q(a,[{key:"getFontKey",value:function(t){return"".concat(t.family,"-").concat(t.weight,"-").concat(t.style)}},{key:"registerFont",value:function(t){var r=this.getFontKey(t);if(this.fonts.has(r))return r;var i=ud(this.options.fontSize,t.family,t.weight,t.style,this.options.buffer);return this.fonts.set(r,{descriptor:t,generator:i,glyphs:new Map}),r}},{key:"ensureGlyphs",value:function(t,r){var i=this.fonts.get(r);if(!i)throw new Error('Font "'.concat(r,'" is not registered. Call registerFont() first.'));var o=!1,s=F(t),l;try{for(s.s();!(l=s.n()).done;){var u=l.value,d=u.codePointAt(0);d!==void 0&&(i.glyphs.has(d)||(this.pendingGlyphs.push({fontKey:r,charCode:d}),o=!0))}}catch(h){s.e(h)}finally{s.f()}o&&this.scheduleTextureGeneration()}},{key:"measureText",value:function(t,r){var i=this.fonts.get(r);if(!i)throw new Error('Font "'.concat(r,'" is not registered.'));var o=i.descriptor,s=o.family,l=o.weight,u=o.style;return this.measureCtx.font="".concat(u," ").concat(l," ").concat(this.options.fontSize,"px ").concat(s),this.measureCtx.measureText(t).width}},{key:"getGlyph",value:function(t,r){var i=this.fonts.get(r);if(i)return i.glyphs.get(t)}},{key:"getTextures",value:function(){return this.textures}},{key:"getFontCount",value:function(){return this.fonts.size}},{key:"getGlyphCount",value:function(){var t=0,r=F(this.fonts.values()),i;try{for(r.s();!(i=r.n()).done;){var o=i.value;t+=o.glyphs.size}}catch(s){r.e(s)}finally{r.f()}return t}},{key:"hasPendingGlyphs",value:function(){return this.pendingGlyphs.length>0}},{key:"flush",value:function(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=null),this.generateTextures()}},{key:"destroy",value:function(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.fonts.clear(),this.textures=[],this.pendingGlyphs=[],this.removeAllListeners()}},{key:"scheduleTextureGeneration",value:function(){var t=this;this.debounceTimer===null&&(this.options.debounceTimeout===null?this.generateTextures():this.debounceTimer=setTimeout(function(){t.debounceTimer=null,t.generateTextures()},this.options.debounceTimeout))}},{key:"generateTextures",value:function(){if(this.pendingGlyphs.length!==0){var t=this.options,r=t.maxTextureSize,i=t.buffer,o=t.radius,s=t.cutoff,l=F(this.pendingGlyphs),u;try{for(l.s();!(u=l.n()).done;){var d=u.value,h=d.fontKey,c=d.charCode,f=this.fonts.get(h);if(!(!f||f.glyphs.has(c))){var g=String.fromCodePoint(c),v=dd(f.generator,g,i,o,s),y=v.width,p=v.height;this.cursor.x+y+qt>r&&(this.cursor.x=0,this.cursor.y+=this.cursor.rowHeight+qt,this.cursor.rowHeight=0),this.cursor.y+p+qt>r&&(this.finalizeCurrentTexture(),this.cursor={x:0,y:0,rowHeight:0,atlasIndex:this.cursor.atlasIndex+1},this.ctx.clearRect(0,0,r,r));for(var m=v.data,b=new Uint8ClampedArray(y*p*4),_=0;_0?t:1)),i=Math.min(t,this.cursor.y+this.cursor.rowHeight+qt),o=this.ctx.getImageData(0,0,r,i);this.cursor.atlasIndex>=this.textures.length?this.textures.push(o):this.textures[this.cursor.atlasIndex]=o}}])})(xi.EventEmitter);D(gt,"ATLAS_UPDATED_EVENT","atlasUpdated");var hd=Qe.fontSize;function cd(n){var a=n.shapes,e=n.rotateWithCamera,t=e===void 0?!1:e,r=Qt(a),i=new Set,o=a.flatMap(function(_){return _.uniforms}).filter(function(_){return i.has(_.name)?!1:(i.add(_.name),!0)}).map(function(_){return"uniform ".concat(_.type," ").concat(_.name,";")}).join(` +`),s;if(a.length===1){var l=a[0],u=l.uniforms.filter(function(_){return _.type==="float"}),d=u.map(function(_){var x;return J((x=_.value)!==null&&x!==void 0?x:0)}),h=d.length>0?"sdf_".concat(l.name,"(uv, size, ").concat(d.join(", "),")"):"sdf_".concat(l.name,"(uv, size)");s=za(h,!1)}else{var c=a.map(function(_,x){var S=_.uniforms.filter(function(T){return T.type==="float"}),E=S.map(function(T){var R;return J((R=T.value)!==null&&R!==void 0?R:0)}),w=E.length>0?"sdf_".concat(_.name,"(uv, size, ").concat(E.join(", "),")"):"sdf_".concat(_.name,"(uv, size)");return" case ".concat(x,": return ").concat(w,";")}).join(` +`),f=a[0],g=f.uniforms.filter(function(_){return _.type==="float"}),v=g.map(function(_){var x;return J((x=_.value)!==null&&x!==void 0?x:0)}),y=v.length>0?"sdf_".concat(f.name,"(uv, size, ").concat(v.join(", "),")"):"sdf_".concat(f.name,"(uv, size)"),p=` +float queryShapeSDF(int shapeId, vec2 uv, float size) { + switch (shapeId) { +`.concat(c,` + default: return `).concat(y,`; + } +} +`);s=p+` + +// Global shape ID set by main() before calling findEdgeDistance +int g_shapeId; + +float findEdgeDistance(vec2 direction, float size) { + float low = 0.0; + float high = 2.0; + + for (int i = 0; i < 8; i++) { + float mid = (low + high) * 0.5; + vec2 uv = direction * mid; + float d = queryShapeSDF(g_shapeId, uv, size); + if (d < 0.0) { + low = mid; + } else { + high = mid; + } + } + + return (low + high) * 0.5; +} +`}var m=t?` // ------------------------------------------------------------------------- + // Step 3: Calculate position offset using shape SDF + // ------------------------------------------------------------------------- + vec2 positionOffset = vec2(0.0); + + if (a_positionMode < 4.0) { + // Base screen direction for this position mode + vec2 screenDir = getLabelDirection(a_positionMode); + + // Rotate by label angle to get actual offset direction + float la_c = cos(a_labelAngle); + float la_s = sin(a_labelAngle); + vec2 rotatedScreenDir = mat2(la_c, -la_s, la_s, la_c) * screenDir; + + // Convert to SDF space: flip Y (screen Y-down -> SDF Y-up), + // then counter-rotate by camera angle (shape rotates with camera) + vec2 sdfDir = vec2(rotatedScreenDir.x, -rotatedScreenDir.y); + float c = cos(-u_cameraAngle); + float s = sin(-u_cameraAngle); + vec2 shapeDir = mat2(c, -s, s, c) * sdfDir; + + // Find edge distance and compute offset + float edgeDistNormalized = findEdgeDistance(shapeDir, 1.0); + float boundaryDistPixels = nodeRadiusPixels * edgeDistNormalized; + positionOffset = screenDir * (boundaryDistPixels + margin); + }`:` // ------------------------------------------------------------------------- + // Step 3: Calculate position offset using shape SDF + // ------------------------------------------------------------------------- + vec2 positionOffset = vec2(0.0); + + if (a_positionMode < 4.0) { + // Base screen direction for this position mode + vec2 screenDir = getLabelDirection(a_positionMode); + + // Rotate by label angle to get actual offset direction + float la_c = cos(a_labelAngle); + float la_s = sin(a_labelAngle); + vec2 rotatedScreenDir = mat2(la_c, -la_s, la_s, la_c) * screenDir; + + // Convert to SDF space: flip Y (screen Y-down -> SDF Y-up) + vec2 sdfDir = vec2(rotatedScreenDir.x, -rotatedScreenDir.y); + + // Find edge distance and compute offset + float edgeDistNormalized = findEdgeDistance(sdfDir, 1.0); + float boundaryDistPixels = nodeRadiusPixels * edgeDistNormalized; + positionOffset = screenDir * (boundaryDistPixels + margin); + }`,b=`#version 300 es + +// ============================================================================ +// Attributes +// ============================================================================ + +// Per-character (instanced) +in float a_nodeIndex; // Index into node data texture +in vec2 a_charOffset; // Character offset from label origin (pixels) +in vec2 a_charSize; // Character dimensions (pixels) +in vec4 a_texCoords; // Atlas coords: (x, y, width, height) in pixels +in vec4 a_color; // Text color (RGBA) +in float a_margin; // Gap between node edge and label (pixels) +in float a_positionMode; // Position: 0=right, 1=left, 2=above, 3=below, 4=over +in float a_labelWidth; // Total label width (pixels) +in float a_labelHeight; // Label height (pixels) +in float a_verticalCenter; // Vertical center offset from baseline (pixels) +in float a_textHeight; // Actual text height: maxAscent + maxDescent (pixels) +in float a_labelAngle; // Label rotation angle (radians) + +// Per-vertex (constant quad corners) +in vec2 a_quadCorner; // Quad corner: [-1,-1], [1,-1], [-1,1], [1,1] + +// ============================================================================ +// Uniforms +// ============================================================================ + +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +uniform vec2 u_resolution; +uniform vec2 u_atlasSize; +uniform sampler2D u_nodeDataTexture; +uniform int u_nodeDataTextureWidth; +uniform float u_zoomLabelSizeRatio; +uniform float u_labelPixelSnapping; +uniform float u_pixelRatio; +`.concat(o,` + +// ============================================================================ +// Varyings +// ============================================================================ + +out vec2 v_texCoord; +out vec4 v_color; +out float v_fontScale; + +// ============================================================================ +// Constants +// ============================================================================ + +const float bias = 255.0 / 254.0; +const float ATLAS_FONT_SIZE = `).concat(J(hd),`; + +// ============================================================================ +// Shape SDF Functions +// ============================================================================ + +`).concat(r,` + +// ============================================================================ +// Helper Functions +// ============================================================================ + +`).concat(s,` +`).concat(Zt,` + +// ============================================================================ +// Main +// ============================================================================ + +void main() { + // ------------------------------------------------------------------------- + // Step 0: Fetch node data from texture + // ------------------------------------------------------------------------- + // Texture format: vec4(x, y, size, shapeId) + // 2D texture layout: texCoord = (index % width, index / width) + int nodeIdx = int(a_nodeIndex); + ivec2 texCoord = ivec2(nodeIdx % u_nodeDataTextureWidth, nodeIdx / u_nodeDataTextureWidth); + vec4 nodeData = texelFetch(u_nodeDataTexture, texCoord, 0); + vec2 a_anchorPosition = nodeData.xy; + float a_nodeSize = nodeData.z; + `).concat(a.length>1?"g_shapeId = int(nodeData.w); // Set global shape ID for multi-shape mode":"// Single-shape mode - shapeId not used",` + + // Apply zoom-dependent label size scaling + // Positional values are in CSS pixels; multiply by u_pixelRatio to convert to + // physical pixels, which is what the NDC conversion (/ u_resolution) expects. + float zoomScale = u_zoomLabelSizeRatio; + float margin = a_margin * zoomScale * u_pixelRatio; + vec2 charOffset = a_charOffset * zoomScale * u_pixelRatio; + vec2 charSize = a_charSize * zoomScale * u_pixelRatio; + float labelWidth = a_labelWidth * zoomScale * u_pixelRatio; + float labelHeight = a_labelHeight * zoomScale; + + // Font scale: ratio of CSS label size to the base atlas font size. + // Divided by u_pixelRatio because the atlas is generated at ATLAS_FONT_SIZE * pixelRatio, + // which cancels out the u_pixelRatio in the fragment shader's gamma formula and keeps + // the anti-aliasing band width consistent across pixel densities. + v_fontScale = a_labelHeight * zoomScale / (ATLAS_FONT_SIZE * u_pixelRatio); + + // ------------------------------------------------------------------------- + // Step 1: Transform node position to clip space + // ------------------------------------------------------------------------- + vec3 anchorClip = u_matrix * vec3(a_anchorPosition, 1.0); + + // ------------------------------------------------------------------------- + // Step 2: Convert node size to screen pixels + // ------------------------------------------------------------------------- + float matrixScaleX = length(vec2(u_matrix[0][0], u_matrix[1][0])); + float nodeRadiusGraphSpace = a_nodeSize * u_correctionRatio / u_sizeRatio * 2.0; + float nodeRadiusNDC = nodeRadiusGraphSpace * matrixScaleX; + float nodeRadiusPixels = nodeRadiusNDC * u_resolution.x / 2.0; + +`).concat(m,` + + // ------------------------------------------------------------------------- + // Step 4: Calculate final vertex position + // ------------------------------------------------------------------------- + vec2 cornerOffset = (a_quadCorner + 1.0) * 0.5; + vec2 charPixelPos = positionOffset + charOffset + cornerOffset * charSize; + + // Apply text alignment based on position mode + float verticalCenter = a_verticalCenter * zoomScale * u_pixelRatio; + float textHeight = a_textHeight * zoomScale * u_pixelRatio; + float baselineToDescent = textHeight / 2.0 - verticalCenter; + float baselineToAscent = textHeight / 2.0 + verticalCenter; + + if (a_positionMode < 0.5) { + // Right: vertically center + charPixelPos.y += verticalCenter; + } else if (a_positionMode < 1.5) { + // Left: right-align and vertically center + charPixelPos.x -= labelWidth + 1.0; + charPixelPos.y += verticalCenter; + } else if (a_positionMode < 2.5) { + // Above: center horizontally, bottom of text at anchor + charPixelPos.x -= labelWidth * 0.5; + charPixelPos.y -= baselineToDescent; + } else if (a_positionMode < 3.5) { + // Below: center horizontally, top of text at anchor + charPixelPos.x -= labelWidth * 0.5; + charPixelPos.y += baselineToAscent; + } else { + // Over: center both + charPixelPos.x -= labelWidth * 0.5; + charPixelPos.y += verticalCenter; + } + + // Apply label angle rotation + float la_c = cos(a_labelAngle); + float la_s = sin(a_labelAngle); + mat2 labelRotMat = mat2(la_c, -la_s, la_s, la_c); + charPixelPos = labelRotMat * charPixelPos; + + // Snap node center to pixel grid so label/backdrop/attachment move as a unit + vec2 nodeScreen = vec2( + (anchorClip.x + 1.0) * u_resolution.x, + (1.0 - anchorClip.y) * u_resolution.y + ) * 0.5; + charPixelPos += (round(nodeScreen) - nodeScreen) * u_labelPixelSnapping; + + // Convert to NDC (flip Y: screen Y-down -> clip Y-up) + vec2 ndcOffset = vec2(charPixelPos.x, -charPixelPos.y) * 2.0 / u_resolution; + gl_Position = vec4(anchorClip.xy + ndcOffset, 0.0, 1.0); + + // ------------------------------------------------------------------------- + // Step 5: Texture coordinates + // ------------------------------------------------------------------------- + v_texCoord = (a_texCoords.xy + cornerOffset * a_texCoords.zw) / u_atlasSize; + + // ------------------------------------------------------------------------- + // Step 6: Pass color + // ------------------------------------------------------------------------- + v_color = a_color; + v_color.a *= bias; +} +`);return b}function fd(){var n=`#version 300 es +precision highp float; + +in vec2 v_texCoord; +in vec4 v_color; +in float v_fontScale; + +uniform sampler2D u_atlas; +uniform float u_gamma; +uniform float u_sdfBuffer; +uniform float u_pixelRatio; + +// Fragment output (single target - picking handled via separate pass) +out vec4 fragColor; + +void main() { + #ifdef PICKING_MODE + // Labels are not pickable - discard all fragments in picking mode + discard; + #else + // Sample SDF value from atlas (high = inside glyph, low = outside) + float sdfValue = texture(u_atlas, v_texCoord).a; + + // Edge threshold: 1.0 - cutoff = 0.75 for default cutoff=0.25 + // This is where the glyph edge is located in the SDF + float edgeThreshold = 1.0 - u_sdfBuffer; + + // Gamma controls the anti-aliasing band width. + // Scale inversely with font scale so small labels get a wider AA band + // (smoother) and large labels get a tighter band (sharper). + float gamma = u_gamma / (u_pixelRatio * v_fontScale); + + // Pure gamma-based anti-aliasing using smoothstep + // The AA band extends from (threshold - gamma) to (threshold + gamma) + float alpha = smoothstep(edgeThreshold - gamma, edgeThreshold + gamma, sdfValue); + + // Premultiplied alpha output for correct blending + float finalAlpha = v_color.a * alpha; + fragColor = vec4(v_color.rgb * finalAlpha, finalAlpha); + #endif +} +`;return n}function gd(n){var a=["u_matrix","u_sizeRatio","u_correctionRatio","u_cameraAngle","u_resolution","u_atlasSize","u_atlas","u_gamma","u_sdfBuffer","u_pixelRatio","u_nodeDataTexture","u_nodeDataTextureWidth","u_zoomLabelSizeRatio","u_labelPixelSnapping"],e=F(n),t;try{for(e.s();!(t=e.n()).done;){var r=t.value,i=F(r.uniforms),o;try{for(i.s();!(o=i.n()).done;){var s=o.value;a.includes(s.name)||a.push(s.name)}}catch(l){i.e(l)}finally{i.f()}}}catch(l){e.e(l)}finally{e.f()}return a}function vd(n){return{vertexShader:cd(n),fragmentShader:fd(),uniforms:gd(n.shapes)}}function pd(n){var a,e,t,r=n.rotateWithCamera,i=r===void 0?!1:r,o=n.label,s=o===void 0?{}:o,l=n.shapes,u=(a=s.margin)!==null&&a!==void 0?a:5,d=(e=s.zoomToLabelSizeRatioFunction)!==null&&e!==void 0?e:function(){return 1};if(l.length===0)throw new Error("createLabelProgram: at least one shape must be provided in 'shapes'");var h={shapes:l,rotateWithCamera:i},c=vd(h);return t=(function(f){function g(v,y,p){var m,b,_,x;if(j(this,g),x=te(this,g,[v,y,p]),D(x,"atlasTexture",null),D(x,"atlasNeedsUpdate",!1),D(x,"labelGlyphCache",new Map),x.atlasFontSize=Qe.fontSize*jt(),x.atlasManager=new gt({fontSize:x.atlasFontSize}),x.gamma=.025,x.sdfBuffer=Qe.cutoff,x.atlasTexture=v.createTexture(),!x.atlasTexture)throw new Error("NodeLabelProgram: failed to create atlas texture");v.bindTexture(v.TEXTURE_2D,x.atlasTexture),v.texParameteri(v.TEXTURE_2D,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(v.TEXTURE_2D,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),v.texParameteri(v.TEXTURE_2D,v.TEXTURE_MIN_FILTER,v.LINEAR),v.texParameteri(v.TEXTURE_2D,v.TEXTURE_MAG_FILTER,v.LINEAR),v.bindTexture(v.TEXTURE_2D,null),x.atlasManager.on(gt.ATLAS_UPDATED_EVENT,function(){x.atlasNeedsUpdate=!0});var S={family:((m=s.font)===null||m===void 0?void 0:m.family)||"sans-serif",weight:((b=s.font)===null||b===void 0?void 0:b.weight)||"normal",style:((_=s.font)===null||_===void 0?void 0:_.style)||"normal"};return x.defaultFontKey=x.atlasManager.registerFont(S),x}return ne(g,f),q(g,[{key:"getDefinition",value:function(){var y=WebGL2RenderingContext,p=y.FLOAT,m=y.UNSIGNED_BYTE,b=y.TRIANGLE_STRIP;return{VERTICES:4,VERTEX_SHADER_SOURCE:c.vertexShader,FRAGMENT_SHADER_SOURCE:c.fragmentShader,METHOD:b,UNIFORMS:c.uniforms,ATTRIBUTES:[{name:"a_nodeIndex",size:1,type:p},{name:"a_charOffset",size:2,type:p},{name:"a_charSize",size:2,type:p},{name:"a_texCoords",size:4,type:p},{name:"a_color",size:4,type:m,normalized:!0},{name:"a_margin",size:1,type:p},{name:"a_positionMode",size:1,type:p},{name:"a_labelWidth",size:1,type:p},{name:"a_labelHeight",size:1,type:p},{name:"a_verticalCenter",size:1,type:p},{name:"a_textHeight",size:1,type:p},{name:"a_labelAngle",size:1,type:p}],CONSTANT_ATTRIBUTES:[{name:"a_quadCorner",size:2,type:p}],CONSTANT_DATA:[[-1,-1],[1,-1],[-1,1],[1,1]]}}},{key:"prepareLabelGlyphs",value:function(y,p){if(p.hidden||!p.text){this.labelGlyphCache.delete(y);return}var m=p.text,b=p.fontKey||this.defaultFontKey;this.atlasManager.ensureGlyphs(m,b);var _=[],x=[],S=0,E=0,w=0,T=F(m),R;try{for(T.s();!(R=T.n()).done;){var A=R.value,P=A.codePointAt(0);if(P===void 0){_.push(void 0),x.push(S);continue}var C=this.atlasManager.getGlyph(P,b);_.push(C),x.push(S),C&&(S+=C.advance,E=Math.max(E,C.bearingY),w=Math.max(w,C.atlasHeight-C.bearingY))}}catch(L){T.e(L)}finally{T.f()}this.labelGlyphCache.set(y,{glyphs:_,xOffsets:x,totalWidth:S,totalHeight:E+w,verticalCenterOffset:(E-w)/2})}},{key:"processCharacter",value:function(y,p,m,b){var _=this.array,x=this.STRIDE,S=y*x,E=this.labelGlyphCache.get(p.parentKey);if(!E||!E.glyphs[b]){for(var w=0;w0?m.uniform2f(b.u_atlasSize,_[0].width,_[0].height):m.uniform2f(b.u_atlasSize,1,1),m.activeTexture(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,this.atlasTexture),m.uniform1i(b.u_atlas,0),b.u_nodeDataTexture!==void 0&&m.uniform1i(b.u_nodeDataTexture,y.nodeDataTextureUnit),b.u_nodeDataTextureWidth!==void 0&&m.uniform1i(b.u_nodeDataTextureWidth,y.nodeDataTextureWidth),m.uniform1f(b.u_gamma,this.gamma),m.uniform1f(b.u_sdfBuffer,this.sdfBuffer),m.uniform1f(b.u_pixelRatio,y.pixelRatio),m.uniform1f(b.u_zoomLabelSizeRatio,1/g.zoomToLabelSizeRatioFunction(y.zoomRatio)),m.uniform1f(b.u_labelPixelSnapping,y.labelPixelSnapping);var x=new Set,S=F(l),E;try{for(S.s();!(E=S.n()).done;){var w=E.value,T=F(w.uniforms),R;try{for(T.s();!(R=T.n()).done;){var A=R.value;x.has(A.name)||(x.add(A.name),this.setTypedUniform(A,p))}}catch(P){T.e(P)}finally{T.f()}}}catch(P){S.e(P)}finally{S.f()}}},{key:"renderProgram",value:function(y,p){this.updateAtlasTexture(),this.atlasManager.hasPendingGlyphs()&&(this.atlasManager.flush(),this.updateAtlasTexture()),pe(g,"renderProgram",this,3)([y,p])}},{key:"registerFont",value:function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal",m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"normal";return this.atlasManager.registerFont({family:y,weight:p,style:m})}},{key:"getAtlasManager",value:function(){return this.atlasManager}},{key:"measureLabel",value:function(y,p,m){var b=m||this.defaultFontKey;this.atlasManager.ensureGlyphs(y,b),this.atlasManager.hasPendingGlyphs()&&this.atlasManager.flush();var _=0,x=F(y),S;try{for(x.s();!(S=x.n()).done;){var E=S.value,w=E.codePointAt(0);if(w!==void 0){var T=this.atlasManager.getGlyph(w,b);T&&(_+=T.advance)}}}catch(A){x.e(A)}finally{x.f()}var R=p/this.atlasFontSize;return{width:_*R,height:p}}},{key:"ensureGlyphsReady",value:function(y,p){var m=p||this.defaultFontKey,b=F(y),_;try{for(b.s();!(_=b.n()).done;){var x=_.value;this.atlasManager.ensureGlyphs(x,m)}}catch(S){b.e(S)}finally{b.f()}this.atlasManager.flush()}},{key:"kill",value:function(){var y=this.normalProgram.gl;this.atlasTexture&&(y.deleteTexture(this.atlasTexture),this.atlasTexture=null),this.atlasManager.destroy(),this.labelGlyphCache.clear(),pe(g,"kill",this,3)([])}}])})(Ci),D(t,"programOptions",n),D(t,"generatedShaders",c),D(t,"labelMargin",u),D(t,"zoomToLabelSizeRatioFunction",d),t}var vi=5;function Li(n){var a,e=n.rotateWithCamera,t=e===void 0?!1:e,r=n.label,i=r===void 0?{}:r,o=n.shapes;if(o.length===0)throw new Error("createNodeProgram: at least one shape must be provided in 'shapes'");var s={},l=[],u;o.forEach(function(p,m){var b=Vu(p,t);m===0&&(u=b),s[p.name]=m,l[m]=vt(b)});var d=V(n.layers),h=ci({shapes:o,layers:d,rotateWithCamera:t,shapeGlobalIds:o.length>1?l:void 0}),c=pd({shapes:o,rotateWithCamera:t,label:i}),f=Ju({shapes:o,rotateWithCamera:t,label:i,shapeGlobalIds:o.length>1?l:void 0}),g=ld({shapes:o,rotateWithCamera:t,label:i,shapeGlobalIds:o.length>1?l:void 0}),v=He(d),y=(a=(function(p){function m(b,_,x){var S;j(this,m),S=te(this,m,[b,_,x]),D(S,"layerLifecycles",new Map),D(S,"layersNeedingRegeneration",new Set),D(S,"attrDescriptors",[]),S._pickingBuffer=_;var E=y.layerTextures.get(b);E||(E=new Bn(b,v),y.layerTextures.set(b,E)),S.layerAttributeTexture=E;var w=y.textureRefCounts.get(b)||0;y.textureRefCounts.set(b,w+1),S.packedAttributeData=new Float32Array(v.floatsPerItem),d.forEach(function(R,A){if(R.lifecycle){var P={gl:b,renderer:{refresh:function(){return x.refresh()}},getUniformLocation:function(k){return b.getUniformLocation(S.normalProgram.program,k)},requestShaderRegeneration:function(){S.layersNeedingRegeneration.add(A)},requestRefresh:function(){x.refresh()}},C=R.lifecycle(P);S.layerLifecycles.set(A,C)}}),S.layerLifecycles.forEach(function(R){var A;(A=R.init)===null||A===void 0||A.call(R)});var T=new Map;return S.layerLifecycles.forEach(function(R,A){R.getAttributeData&&T.set(A,R)}),S.attrDescriptors=Un(d,v,T),S}return ne(m,p),q(m,[{key:"getDefinition",value:function(){var _=WebGL2RenderingContext,x=_.FLOAT,S=_.TRIANGLE_STRIP;return{VERTICES:4,VERTEX_SHADER_SOURCE:h.vertexShader,FRAGMENT_SHADER_SOURCE:h.fragmentShader,METHOD:S,UNIFORMS:h.uniforms,ATTRIBUTES:h.attributes,CONSTANT_ATTRIBUTES:[{name:"a_quadCorner",size:2,type:x}],CONSTANT_DATA:[[-1,-1],[1,-1],[-1,1],[1,1]]}}},{key:"maybeRegenerateShaders",value:function(){var _=this;if(this.layersNeedingRegeneration.size!==0){d=d.map(function(A,P){if(_.layersNeedingRegeneration.has(P)){var C=_.layerLifecycles.get(P);if(C!=null&&C.regenerate){var L=C.regenerate();return M(M({},L),{},{lifecycle:A.lifecycle})}}return A}),this.layersNeedingRegeneration.clear(),h=ci({shapes:o,layers:d,rotateWithCamera:t,shapeGlobalIds:o.length>1?l:void 0});var x=this.normalProgram.gl,S=this.normalProgram,E=S.program,w=S.buffer,T=S.vertexShader,R=S.fragmentShader;x.deleteProgram(E),x.deleteBuffer(w),x.deleteShader(T),x.deleteShader(R),this.normalProgram=this.getProgramInfo("normal",x,h.vertexShader,h.fragmentShader,this._pickingBuffer)}}},{key:"allocateNode",value:function(_){this.layerAttributeTexture.allocate(_)}},{key:"freeNode",value:function(_){this.layerAttributeTexture.free(_)}},{key:"uploadLayerTexture",value:function(){this.layerAttributeTexture.upload()}},{key:"processVisibleItem",value:function(_,x,S,E,w){var T,R=this.array;if(R[x++]=E,R[x++]=_,v.floatsPerItem!==0){var A=this.packedAttributeData;Hn(this.attrDescriptors,S,A,S.color,(T=S.opacity)!==null&&T!==void 0?T:1,this.layerLifecycles,0),this.layerAttributeTexture.updateAllAttributes(w,A)}}},{key:"setUniforms",value:function(_,x){var S=this,E=x.gl,w=x.uniformLocations;w.u_matrix&&E.uniformMatrix3fv(w.u_matrix,!1,_.matrix),w.u_sizeRatio&&E.uniform1f(w.u_sizeRatio,_.sizeRatio),w.u_correctionRatio&&E.uniform1f(w.u_correctionRatio,_.correctionRatio),w.u_pickingPadding&&E.uniform1f(w.u_pickingPadding,_.nodePickingPadding),w.u_cameraAngle&&E.uniform1f(w.u_cameraAngle,_.cameraAngle),w.u_nodeDataTexture&&E.uniform1i(w.u_nodeDataTexture,_.nodeDataTextureUnit),w.u_nodeDataTextureWidth&&E.uniform1i(w.u_nodeDataTextureWidth,_.nodeDataTextureWidth),w.u_layerAttributeTexture&&(this.layerAttributeTexture.bind(vi),E.uniform1i(w.u_layerAttributeTexture,vi)),w.u_layerAttributeTextureWidth&&E.uniform1i(w.u_layerAttributeTextureWidth,this.layerAttributeTexture.getTextureWidth()),w.u_layerAttributeTexelsPerNode&&E.uniform1i(w.u_layerAttributeTexelsPerNode,this.layerAttributeTexture.getTexelsPerItem()),o.forEach(function(T){T.uniforms.forEach(function(R){S.setTypedUniform(R,x)})}),d.forEach(function(T){T.uniforms.forEach(function(R){S.setTypedUniform(R,x)})})}},{key:"renderProgram",value:function(_,x){this.maybeRegenerateShaders();var S=x.gl,E=x.program;S.useProgram(E),x===this.normalProgram&&this.layerLifecycles.forEach(function(w){var T;(T=w.beforeRender)===null||T===void 0||T.call(w)}),pe(m,"renderProgram",this,3)([_,x])}},{key:"kill",value:function(){this.layerLifecycles.forEach(function(S){var E;(E=S.kill)===null||E===void 0||E.call(S)}),this.layerLifecycles.clear();var _=this.normalProgram.gl,x=(y.textureRefCounts.get(_)||1)-1;x<=0?(this.layerAttributeTexture.kill(),y.layerTextures.delete(_),y.textureRefCounts.delete(_)):y.textureRefCounts.set(_,x),pe(m,"kill",this,3)([])}}])})(ed),D(a,"programOptions",M(M({},n),{},{shapeSlug:u,shapeNameToIndex:o.length>1?s:void 0,shapeGlobalIds:o.length>1?l:void 0})),D(a,"LabelProgram",c),D(a,"BackdropProgram",f),D(a,"LabelBackgroundProgram",g),D(a,"layerTextures",new WeakMap),D(a,"textureRefCounts",new WeakMap),a);return y}var md=(function(n){function a(){return j(this,a),te(this,a,arguments)}return ne(a,n),q(a,[{key:"resolveEdgeIds",value:function(t,r,i){return{pathId:0,headId:0,tailId:0,headLengthRatio:0,tailLengthRatio:0}}},{key:"process",value:function(t,r,i,o,s,l){var u=r*this.STRIDE;if(s.visibility==="hidden"||i.visibility==="hidden"||o.visibility==="hidden"){for(var d=u+this.STRIDE;u= totalLen) return 1.0; + + // Binary search for t + float lo = 0.0, hi = 1.0; + for (int i = 0; i < 12; i++) { + float mid = (lo + hi) * 0.5; + + // Compute arc length from 0 to mid + float arcLen = 0.0; + vec2 prev = path_`).concat(n,`_position(0.0, source, target); + for (int j = 1; j <= 8; j++) { + float t = mid * float(j) / 8.0; + vec2 curr = path_`).concat(n,`_position(t, source, target); + arcLen += length(curr - prev); + prev = curr; + } + + if (arcLen < targetDist) { + lo = mid; + } else { + hi = mid; + } + } + return (lo + hi) * 0.5; +} +`)}function zn(n,a){var e=new RegExp("\\b(float|vec[234]|void|int|bool)\\s+".concat(a,"\\s*\\("));return e.test(n)}function Fi(n,a){var e=[];return zn(a,"path_".concat(n,"_length"))||e.push(yd(n)),zn(a,"path_".concat(n,"_closest_t"))||e.push(bd(n)),zn(a,"path_".concat(n,"_distance"))||e.push(xd(n)),zn(a,"path_".concat(n,"_t_at_distance"))||e.push(_d(n)),e.length>0?` +// ============================================================================ +// Auto-generated fallback functions (path only provided position) +// ============================================================================ +`.concat(e.join(` +`)):""}function zi(n){var a,e,t,r=n.paths,i=n.layers,o=(a=n.extremities)!==null&&a!==void 0?a:[];if(r.length===0)throw new Error("At least one path is required in 'paths'");if(i.length===0)throw new Error("At least one layer is required in 'layers'");var s=(e=n.defaultHead)!==null&&e!==void 0?e:"none",l=(t=n.defaultTail)!==null&&t!==void 0?t:"none";return{paths:r,extremities:o,layers:i,path:r[0],layer:i[0],defaultHead:s,defaultTail:l}}var Gi=WebGL2RenderingContext,Nn=Gi.FLOAT,pi=Gi.UNSIGNED_BYTE,Td=4,Sd=["pre_clamp"];function Ed(n,a,e){var t=new Set(["u_matrix","u_sizeRatio","u_correctionRatio","u_zoomRatio","u_pixelRatio","u_cameraAngle","u_minEdgeThickness","u_pickingPadding","u_nodeDataTexture","u_nodeDataTextureWidth","u_edgeDataTexture","u_edgeDataTextureWidth","u_edgeAttributeTexture","u_edgeAttributeTextureWidth","u_edgeAttributeTexelsPerEdge"]),r=new Set(t);return n.forEach(function(i){return i.uniforms.forEach(function(o){return r.add(o.name)})}),a.forEach(function(i){return i.uniforms.forEach(function(o){return r.add(o.name)})}),e.forEach(function(i){return i.uniforms.forEach(function(o){return r.add(o.name)})}),Array.from(r)}function Ga(n){var a=new Set,e=[],t=F(n),r;try{for(t.s();!(r=t.n()).done;){var i=r.value;a.has(i.name)||(a.add(i.name),e.push("// Path: ".concat(i.name)),e.push(i.glsl),e.push(Ii(i.name)),e.push(Fi(i.name,i.glsl)))}}catch(o){t.e(o)}finally{t.f()}return e.join(` + +`)}function wd(n){var a=[],e=F(n),t;try{for(e.s();!(t=e.n()).done;){var r=t.value;a.push("// Extremity: ".concat(r.name)),a.push(r.glsl)}}catch(i){e.e(i)}finally{e.f()}return a.join(` + +`)}var Ad=[{queryName:"queryPathPosition",pathFunc:"position",returnType:"vec2",params:"float t, vec2 source, vec2 target",args:"t, source, target"},{queryName:"queryPathTangent",pathFunc:"tangent",returnType:"vec2",params:"float t, vec2 source, vec2 target",args:"t, source, target"},{queryName:"queryPathNormal",pathFunc:"normal",returnType:"vec2",params:"float t, vec2 source, vec2 target",args:"t, source, target"},{queryName:"queryPathLength",pathFunc:"length",returnType:"float",params:"vec2 source, vec2 target",args:"source, target"},{queryName:"queryPathClosestT",pathFunc:"closest_t",returnType:"float",params:"vec2 p, vec2 source, vec2 target",args:"p, source, target"}];function Dd(n,a){var e=a.queryName,t=a.pathFunc,r=a.returnType,i=a.params,o=a.args;if(n.length===1)return"".concat(r," ").concat(e,"(int pathId, ").concat(i,`) { + return path_`).concat(n[0].name,"_").concat(t,"(").concat(o,`); +}`);var s=n.map(function(l,u){return" case ".concat(u,": return path_").concat(l.name,"_").concat(t,"(").concat(o,");")}).join(` +`);return"".concat(r," ").concat(e,"(int pathId, ").concat(i,`) { + switch (pathId) { +`).concat(s,` + default: return path_`).concat(n[0].name,"_").concat(t,"(").concat(o,`); + } +}`)}function Ma(n){return Ad.map(function(a){return Dd(n,a)}).join(` + +`)}function Rd(n){if(n.length===1)return`float queryExtremitySDF(int extremityId, vec2 uv, float lengthRatio, float widthRatio) { + return extremity_`.concat(n[0].name,`(uv, lengthRatio, widthRatio); +}`);var a=n.map(function(e,t){return" case ".concat(t,": return extremity_").concat(e.name,"(uv, lengthRatio, widthRatio);")}).join(` +`);return`float queryExtremitySDF(int extremityId, vec2 uv, float lengthRatio, float widthRatio) { + switch (extremityId) { +`.concat(a,` + default: return extremity_`).concat(n[0].name,`(uv, lengthRatio, widthRatio); + } +}`)}function Cd(n){var a=[],e=F(n),t;try{for(e.s();!(t=e.n()).done;){var r=t.value;a.push(Pi(r.name)),a.push(ki(r.name))}}catch(s){e.e(s)}finally{e.f()}if(n.length===1)a.push(` +float queryFindSourceClampT(int pathId, vec2 source, float sourceSize, int sourceShapeId, vec2 target, float margin) { + return findSourceClampT_`.concat(n[0].name,`(source, sourceSize, sourceShapeId, target, margin); +} + +float queryFindTargetClampT(int pathId, vec2 source, vec2 target, float targetSize, int targetShapeId, float margin) { + return findTargetClampT_`).concat(n[0].name,`(source, target, targetSize, targetShapeId, margin); +}`));else{var i=n.map(function(s,l){return" case ".concat(l,": return findSourceClampT_").concat(s.name,"(source, sourceSize, sourceShapeId, target, margin);")}).join(` +`),o=n.map(function(s,l){return" case ".concat(l,": return findTargetClampT_").concat(s.name,"(source, target, targetSize, targetShapeId, margin);")}).join(` +`);a.push(` +float queryFindSourceClampT(int pathId, vec2 source, float sourceSize, int sourceShapeId, vec2 target, float margin) { + switch (pathId) { +`.concat(i,` + default: return findSourceClampT_`).concat(n[0].name,`(source, sourceSize, sourceShapeId, target, margin); + } +} + +float queryFindTargetClampT(int pathId, vec2 source, vec2 target, float targetSize, int targetShapeId, float margin) { + switch (pathId) { +`).concat(o,` + default: return findTargetClampT_`).concat(n[0].name,`(source, target, targetSize, targetShapeId, margin); + } +}`))}return a.join(` + +`)}function Ld(n,a,e){var t=He([].concat(V(n),V(e))),r=Jt(t),i=new Set,o=[],s=function(h){i.has(h.name)||(i.add(h.name),o.push("uniform ".concat(h.type," ").concat(h.name,";")))};n.forEach(function(d){return d.uniforms.forEach(s)}),a.forEach(function(d){return d.uniforms.forEach(s)});var l=a.map(function(d){return J(d.widthFactor)}).join(", "),u=Math.max.apply(Math,V(n.map(function(d){return d.minBodyLengthRatio||0})));return`#version 300 es + +// One invocation per edge: reads edge index from the instance buffer +in float a_edgeIndex; + +// Node and edge data textures +uniform sampler2D u_nodeDataTexture; +uniform int u_nodeDataTextureWidth; +uniform sampler2D u_edgeDataTexture; +uniform int u_edgeDataTextureWidth; + +// Edge attribute texture (for path-specific attributes like curvature) +`.concat(r.uniformDeclarations,` + +// Render params needed for clamping +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +uniform float u_minEdgeThickness; + +// Custom path/extremity uniforms +`).concat(o.join(` +`),` + +// Path attribute varyings \u2014 assigned so path functions can read them as globals +`).concat(r.vertexVaryingDeclarations,` + +// Node size varyings \u2014 read by path functions like loop +out float v_sourceNodeSize; +out float v_targetNodeSize; + +// Transform feedback output: [tStart, tEnd, straightenFactor, pathLength] +out vec4 pre_clamp; + +// Extremity width factor array (needed for extremityScale computation) +const float EXTREMITY_WIDTH_FACTORS[`).concat(a.length,"] = float[](").concat(l,`); + +// Shape SDFs for node boundary clamping +`).concat(Di(),` +`).concat(Ri(),` + +// Path functions +`).concat(Ga(n),` +`).concat(Ma(n),` +`).concat(Cd(n),` + +void main() { + // Fetch edge data (2 texels per edge) + int edgeIdx = int(a_edgeIndex); + int texel0Idx = edgeIdx * 2; + int texel1Idx = edgeIdx * 2 + 1; + ivec2 edgeTexCoord0 = ivec2(texel0Idx % u_edgeDataTextureWidth, texel0Idx / u_edgeDataTextureWidth); + ivec2 edgeTexCoord1 = ivec2(texel1Idx % u_edgeDataTextureWidth, texel1Idx / u_edgeDataTextureWidth); + vec4 edgeData0 = texelFetch(u_edgeDataTexture, edgeTexCoord0, 0); + vec4 edgeData1 = texelFetch(u_edgeDataTexture, edgeTexCoord1, 0); + + int srcIdx = int(edgeData0.x); + int tgtIdx = int(edgeData0.y); + float a_thickness = edgeData0.z; + float a_headLengthRatio = edgeData1.x; + float a_tailLengthRatio = edgeData1.y; + int pathId = int(edgeData1.z); + int extremityPacked = int(edgeData1.w); + int headId = extremityPacked >> 4; + int tailId = extremityPacked & 15; + + // Fetch path/layer attributes and assign to path-function globals +`).concat(r.fetchCode,` +`).concat(r.varyingAssignments,` + + // Fetch node positions, sizes, and shape IDs + ivec2 srcTexCoord = ivec2(srcIdx % u_nodeDataTextureWidth, srcIdx / u_nodeDataTextureWidth); + ivec2 tgtTexCoord = ivec2(tgtIdx % u_nodeDataTextureWidth, tgtIdx / u_nodeDataTextureWidth); + vec4 srcNodeData = texelFetch(u_nodeDataTexture, srcTexCoord, 0); + vec4 tgtNodeData = texelFetch(u_nodeDataTexture, tgtTexCoord, 0); + + vec2 a_source = srcNodeData.xy; + vec2 a_target = tgtNodeData.xy; + float a_sourceSize = srcNodeData.z; + float a_targetSize = tgtNodeData.z; + float a_sourceShapeId = srcNodeData.w; + float a_targetShapeId = tgtNodeData.w; + + v_sourceNodeSize = a_sourceSize; + v_targetNodeSize = a_targetSize; + + float headLengthRatio = a_headLengthRatio; + float tailLengthRatio = a_tailLengthRatio; + float headWidthFactor = EXTREMITY_WIDTH_FACTORS[headId]; + float tailWidthFactor = EXTREMITY_WIDTH_FACTORS[tailId]; + float minBodyLengthRatio = `).concat(J(u),`; + + // Thickness in WebGL units (needed to compute clamping margin and extremity lengths) + float pixelsThickness = max(a_thickness, u_minEdgeThickness * u_sizeRatio); + float webGLThickness = pixelsThickness * u_correctionRatio / u_sizeRatio; + + // SDF clamping: find where the edge body meets the node boundaries + float tStart = tailLengthRatio > 0.0 ? queryFindSourceClampT(pathId, a_source, a_sourceSize, int(a_sourceShapeId), a_target, 0.0) : 0.0; + float tEnd = headLengthRatio > 0.0 ? queryFindTargetClampT(pathId, a_source, a_target, a_targetSize, int(a_targetShapeId), 0.0) : 1.0; + + // Path length and zone boundaries (needed for straightening check) + float pathLength = queryPathLength(pathId, a_source, a_target); + float visibleLength = pathLength * (tEnd - tStart); + + float headLength = headLengthRatio * webGLThickness; + float tailLength = tailLengthRatio * webGLThickness; + float minBodyLength = minBodyLengthRatio * webGLThickness; + + float totalNeededLength = headLength + tailLength + minBodyLength; + float extremityScale = 1.0; + if (totalNeededLength > visibleLength && totalNeededLength > 0.0001) { + extremityScale = visibleLength / totalNeededLength; + headLength *= extremityScale; + tailLength *= extremityScale; + } + + float headLengthT = pathLength > 0.0001 ? headLength / pathLength : 0.0; + float tailLengthT = pathLength > 0.0001 ? tailLength / pathLength : 0.0; + + float tTailEnd = tStart + tailLengthT; + float tHeadStart = tEnd - headLengthT; + if (tTailEnd > tHeadStart) { + float mid = (tStart + tEnd) * 0.5; + tTailEnd = mid; + tHeadStart = mid; + } + + // Straighten factor: blend toward straight line when path twists in extremity zones + float straightenFactor = 0.0; + { + float maxDeviation = 0.0; + if (tailLengthT > 0.0001) { + vec2 tailTang = queryPathTangent(pathId, tTailEnd, a_source, a_target); + vec2 tailChord = queryPathPosition(pathId, tStart, a_source, a_target) + - queryPathPosition(pathId, tTailEnd, a_source, a_target); + float tailChordLen = length(tailChord); + if (tailChordLen > 0.0001) { + maxDeviation = max(maxDeviation, 1.0 - dot(-tailTang, tailChord / tailChordLen)); + } + } + if (headLengthT > 0.0001) { + vec2 headTang = queryPathTangent(pathId, tHeadStart, a_source, a_target); + vec2 headChord = queryPathPosition(pathId, tEnd, a_source, a_target) + - queryPathPosition(pathId, tHeadStart, a_source, a_target); + float headChordLen = length(headChord); + if (headChordLen > 0.0001) { + maxDeviation = max(maxDeviation, 1.0 - dot(headTang, headChord / headChordLen)); + } + } + straightenFactor = smoothstep(0.035, 0.5, maxDeviation); + } + + // When straightening, blend tStart/tEnd toward straight-line clamp positions + if (straightenFactor > 0.001) { + if (tailLengthRatio > 0.0) { + float srcExtent = a_sourceSize * u_correctionRatio / u_sizeRatio * 2.0; + float srcEffective = 1.0 - u_correctionRatio / srcExtent; + float lo = 0.0, hi = 0.5; + for (int i = 0; i < 12; i++) { + float mid = (lo + hi) * 0.5; + vec2 pos = mix(a_source, a_target, mid); + vec2 localPos = (pos - a_source) / srcExtent; + float sdf = querySDF(int(a_sourceShapeId), localPos, srcEffective); + if (sdf < 0.0) lo = mid; else hi = mid; + } + tStart = mix(tStart, (lo + hi) * 0.5, straightenFactor); + } + if (headLengthRatio > 0.0) { + float tgtExtent = a_targetSize * u_correctionRatio / u_sizeRatio * 2.0; + float tgtEffective = 1.0 - u_correctionRatio / tgtExtent; + float lo = 0.5, hi = 1.0; + for (int i = 0; i < 12; i++) { + float mid = (lo + hi) * 0.5; + vec2 pos = mix(a_source, a_target, mid); + vec2 localPos = (pos - a_target) / tgtExtent; + float sdf = querySDF(int(a_targetShapeId), localPos, tgtEffective); + if (sdf < 0.0) hi = mid; else lo = mid; + } + tEnd = mix(tEnd, (lo + hi) * 0.5, straightenFactor); + } + } + + pre_clamp = vec4(tStart, tEnd, straightenFactor, pathLength); + // gl_Position is unused (RASTERIZER_DISCARD is active) but must be assigned + gl_Position = vec4(0.0); +} +`)}var Gn=0,mi=1,Mn=2;function Pd(n,a,e){var t=[];e&&(t.push([Gn,0,-1],[Gn,0,1]),t.push([Gn,1,-1],[Gn,1,1]));for(var r=0;r<=n;r++){var i=r/n;t.push([mi,i,-1],[mi,i,1])}return a&&(t.push([Mn,0,-1],[Mn,0,1]),t.push([Mn,1,-1],[Mn,1,1])),{data:t,attributes:[{name:"a_zone",size:1,type:Nn},{name:"a_zoneT",size:1,type:Nn},{name:"a_side",size:1,type:Nn}],verticesPerEdge:t.length}}function kd(n,a,e,t){var r=He([].concat(V(n),V(e))),i=Jt(r),o=new Set(["u_matrix","u_sizeRatio","u_correctionRatio","u_zoomRatio","u_pixelRatio","u_cameraAngle","u_minEdgeThickness","u_pickingPadding","u_nodeDataTexture"]),s=new Set,l=[],u=function(v){!o.has(v.name)&&!s.has(v.name)&&(s.add(v.name),l.push("uniform ".concat(v.type," ").concat(v.name,";")))};n.forEach(function(g){return g.uniforms.forEach(u)}),a.forEach(function(g){return g.uniforms.forEach(u)}),e.forEach(function(g){return g.uniforms.forEach(u)});var d=t.map(function(g){var v=g.size===1?"float":"vec".concat(g.size);return"in ".concat(v," ").concat(g.name,";")}).join(` +`),h=a.map(function(g){return J(g.widthFactor)}).join(", "),c=Math.max.apply(Math,V(n.map(function(g){return g.minBodyLengthRatio||0}))),f=`#version 300 es + +// Constant attributes (per vertex) +`.concat(d,` + +// Per-edge attributes +// Edge data (source/target indices, thickness, extremity ratios, path/extremity IDs) +// is fetched from edge data texture via edge index +in float a_edgeIndex; // Index into edge data texture +in vec4 a_color; // Edge color +in vec4 a_id; // Edge ID for picking +in vec4 pre_clamp; // Pre-computed per-edge values: tStart, tEnd, straightenFactor, pathLength + +// Standard uniforms +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_zoomRatio; +uniform float u_pixelRatio; +uniform float u_cameraAngle; +uniform float u_minEdgeThickness; +#ifdef PICKING_MODE +uniform float u_pickingPadding; +#endif +uniform sampler2D u_nodeDataTexture; +uniform int u_nodeDataTextureWidth; +uniform sampler2D u_edgeDataTexture; +uniform int u_edgeDataTextureWidth; + +// Edge path attribute texture uniforms +`).concat(i.uniformDeclarations,` + +// Custom uniforms +`).concat(l.join(` +`),` + +// Standard varyings +out vec4 v_color; +out vec4 v_id; +out float v_thickness; // Edge body thickness (in consistent units) +out float v_maxWidthFactor; // Max width factor for geometry expansion +out float v_t; +out float v_tStart; +out float v_tEnd; +out float v_side; +out float v_antialiasingWidth; // Anti-aliasing width (normalized: u_correctionRatio / thickness) +out vec2 v_source; +out vec2 v_target; +out float v_edgeLength; +out vec2 v_position; // World position of the vertex (for position-based distance) +out float v_sourceNodeSize; // Source node size (mirrored in labels/generator.ts as plain float) +out float v_targetNodeSize; // Target node size (mirrored in labels/generator.ts as plain float) + +// Zone varyings +out float v_zone; // 0=tail, 1=body, 2=head +out float v_zoneT; // Position within zone [0,1] +out float v_headLengthRatio; // Head length as ratio of thickness +out float v_tailLengthRatio; // Tail length as ratio of thickness +out float v_headWidthRatio; // Head width factor +out float v_tailWidthRatio; // Tail width factor + +// Multi-path/extremity varyings +flat out int v_pathId; +flat out int v_headId; +flat out int v_tailId; + +// Path/layer attribute varyings (fetched from edge attribute texture) +`).concat(i.vertexVaryingDeclarations,` + +const float bias = 255.0 / 254.0; + +// Width factor array for extremities (shared pool for head/tail) +const float EXTREMITY_WIDTH_FACTORS[`).concat(a.length,"] = float[](").concat(h,`); + +// All path functions +`).concat(Ga(n),` + +// Path selector functions +`).concat(Ma(n),` + +void main() { + // Fetch edge data from edge texture (2 texels per edge) + // Texel 0: sourceNodeIndex, targetNodeIndex, thickness, reserved + // Texel 1: headLengthRatio, tailLengthRatio, pathId, (headId << 4) | tailId + int edgeIdx = int(a_edgeIndex); + int texel0Idx = edgeIdx * 2; + int texel1Idx = edgeIdx * 2 + 1; + ivec2 edgeTexCoord0 = ivec2(texel0Idx % u_edgeDataTextureWidth, texel0Idx / u_edgeDataTextureWidth); + ivec2 edgeTexCoord1 = ivec2(texel1Idx % u_edgeDataTextureWidth, texel1Idx / u_edgeDataTextureWidth); + vec4 edgeData0 = texelFetch(u_edgeDataTexture, edgeTexCoord0, 0); + vec4 edgeData1 = texelFetch(u_edgeDataTexture, edgeTexCoord1, 0); + + // Unpack edge data + int srcIdx = int(edgeData0.x); + int tgtIdx = int(edgeData0.y); + float a_thickness = edgeData0.z; + // edgeData0.w is now reserved (curvature moved to path attribute texture) + float a_headLengthRatio = edgeData1.x; + float a_tailLengthRatio = edgeData1.y; + int pathId = int(edgeData1.z); + int extremityPacked = int(edgeData1.w); + int headId = extremityPacked >> 4; + int tailId = extremityPacked & 15; + + // Fetch path/layer attributes from edge attribute texture +`).concat(i.fetchCode,` + + // Assign path/layer attribute varyings +`).concat(i.varyingAssignments,` + + // Fetch source and target node data from node texture + ivec2 srcTexCoord = ivec2(srcIdx % u_nodeDataTextureWidth, srcIdx / u_nodeDataTextureWidth); + ivec2 tgtTexCoord = ivec2(tgtIdx % u_nodeDataTextureWidth, tgtIdx / u_nodeDataTextureWidth); + vec4 srcNodeData = texelFetch(u_nodeDataTexture, srcTexCoord, 0); + vec4 tgtNodeData = texelFetch(u_nodeDataTexture, tgtTexCoord, 0); + + vec2 a_source = srcNodeData.xy; + vec2 a_target = tgtNodeData.xy; + float a_sourceSize = srcNodeData.z; + float a_targetSize = tgtNodeData.z; + + // Assign node size varyings early (path functions like loops need them during clamping) + v_sourceNodeSize = a_sourceSize; + v_targetNodeSize = a_targetSize; + + // Convert thickness to WebGL units + float minThickness = u_minEdgeThickness; + float pixelsThickness = max(a_thickness, minThickness * u_sizeRatio); + float webGLThickness = pixelsThickness * u_correctionRatio / u_sizeRatio; + + // Extremity parameters from ID lookups (shared pool) + float headLengthRatio = a_headLengthRatio; + float tailLengthRatio = a_tailLengthRatio; + float headWidthFactor = EXTREMITY_WIDTH_FACTORS[headId]; + float tailWidthFactor = EXTREMITY_WIDTH_FACTORS[tailId]; + float minBodyLengthRatio = `).concat(J(c),`; + + // Pre-computed per-edge values from the transform feedback pre-pass + float tStart = pre_clamp.x; + float tEnd = pre_clamp.y; + float straightenFactor = pre_clamp.z; + float pathLength = pre_clamp.w; + + // Width factor for geometry expansion (use max of both extremities) + float widthFactor = max(max(headWidthFactor, tailWidthFactor), 1.0); + + // Anti-aliasing width (~1 pixel, normalized by thickness) + float antialiasingWidth = u_correctionRatio / webGLThickness; + + float visibleLength = pathLength * (tEnd - tStart); + + // Compute extremity lengths in world units + float headLength = headLengthRatio * webGLThickness; + float tailLength = tailLengthRatio * webGLThickness; + float minBodyLength = minBodyLengthRatio * webGLThickness; + + // Handle short edges: scale down extremities if needed + float totalNeededLength = headLength + tailLength + minBodyLength; + float extremityScale = 1.0; + if (totalNeededLength > visibleLength && totalNeededLength > 0.0001) { + extremityScale = visibleLength / totalNeededLength; + headLength *= extremityScale; + tailLength *= extremityScale; + } + + // Convert lengths to t-values + float headLengthT = pathLength > 0.0001 ? headLength / pathLength : 0.0; + float tailLengthT = pathLength > 0.0001 ? tailLength / pathLength : 0.0; + + // Zone boundaries in t-space + float tTailEnd = tStart + tailLengthT; + float tHeadStart = tEnd - headLengthT; + + // Ensure body has non-negative length + if (tTailEnd > tHeadStart) { + float mid = (tStart + tEnd) * 0.5; + tTailEnd = mid; + tHeadStart = mid; + } + + // Convert to webGL units for geometry expansion + float aaWidthWebGL = antialiasingWidth * webGLThickness; + + // Extra geometry width for picking padding (0 in visual mode) + #ifdef PICKING_MODE + float pickingPaddingWebGL = u_pickingPadding * u_correctionRatio; + #else + float pickingPaddingWebGL = 0.0; + #endif + + // Straight-line direction and normal (for blending when straightenFactor > 0) + vec2 straightDir = length(a_target - a_source) > 0.0001 + ? normalize(a_target - a_source) : vec2(1.0, 0.0); + vec2 straightNormal = vec2(-straightDir.y, straightDir.x); + + // Zone-based vertex processing using path selectors + vec2 position; + vec2 normal; + float t; + float zone = a_zone; + float zoneT = a_zoneT; + float side = a_side; + + // Scaled extremity width factors (geometry must be at least as wide as body) + float scaledTailWidth = max(tailWidthFactor * extremityScale, 1.0); + float scaledHeadWidth = max(headWidthFactor * extremityScale, 1.0); + + if (zone < 0.5) { + // TAIL ZONE: rectangular quad with scaled width + vec2 tang = queryPathTangent(pathId, tTailEnd, a_source, a_target); + normal = vec2(-tang.y, tang.x); + vec2 centerPos = mix(queryPathPosition(pathId, tStart, a_source, a_target), + queryPathPosition(pathId, tTailEnd, a_source, a_target), zoneT); + float halfWidth = webGLThickness * scaledTailWidth * 0.5 + aaWidthWebGL + pickingPaddingWebGL; + position = centerPos + normal * side * halfWidth; + t = mix(tStart, tTailEnd, zoneT); + + } else if (zone < 1.5) { + // BODY ZONE: follows path curvature with width = 1.0 + t = mix(tTailEnd, tHeadStart, zoneT); + normal = queryPathNormal(pathId, t, a_source, a_target); + float halfWidth = webGLThickness * 0.5 + aaWidthWebGL + pickingPaddingWebGL; + position = queryPathPosition(pathId, t, a_source, a_target) + normal * side * halfWidth; + + } else { + // HEAD ZONE: rectangular quad with scaled width + vec2 tang = queryPathTangent(pathId, tHeadStart, a_source, a_target); + normal = vec2(-tang.y, tang.x); + vec2 centerPos = mix(queryPathPosition(pathId, tHeadStart, a_source, a_target), + queryPathPosition(pathId, tEnd, a_source, a_target), zoneT); + float halfWidth = webGLThickness * scaledHeadWidth * 0.5 + aaWidthWebGL + pickingPaddingWebGL; + position = centerPos + normal * side * halfWidth; + t = mix(tHeadStart, tEnd, zoneT); + } + + // Blend toward straight line based on path twist in extremity zones + if (straightenFactor > 0.001) { + float zoneWidth = zone < 0.5 ? webGLThickness * scaledTailWidth * 0.5 + aaWidthWebGL + pickingPaddingWebGL : + zone < 1.5 ? webGLThickness * 0.5 + aaWidthWebGL + pickingPaddingWebGL : + webGLThickness * scaledHeadWidth * 0.5 + aaWidthWebGL + pickingPaddingWebGL; + vec2 straightPos = mix(a_source, a_target, t) + straightNormal * side * zoneWidth; + position = mix(position, straightPos, straightenFactor); + } + + gl_Position = vec4((u_matrix * vec3(position, 1.0)).xy, 0.0, 1.0); + + // Pass varyings to fragment shader + v_color = a_color; + v_color.a *= bias; + v_id = a_id; + v_thickness = webGLThickness; + v_maxWidthFactor = widthFactor; + v_t = t; + v_tStart = tStart; + v_tEnd = tEnd; + v_side = side; + v_antialiasingWidth = antialiasingWidth; + v_source = a_source; + v_target = a_target; + v_edgeLength = pathLength; + v_position = position; + + // Zone varyings + v_zone = zone; + v_zoneT = zoneT; + v_headLengthRatio = headLengthRatio * extremityScale; + v_tailLengthRatio = tailLengthRatio * extremityScale; + // Scale extremity width proportionally with length when crushed + v_headWidthRatio = headWidthFactor * extremityScale; + v_tailWidthRatio = tailWidthFactor * extremityScale; + + // Multi-path varyings + v_pathId = pathId; + v_headId = headId; + v_tailId = tailId; +} +`);return f}function Id(n,a,e){var t=He([].concat(V(n),V(e))),r=Jt(t),i=new Set(["u_matrix","u_sizeRatio","u_correctionRatio","u_zoomRatio","u_pixelRatio","u_cameraAngle","u_minEdgeThickness","u_pickingPadding"]),o=new Set,s=[],l=function(f){!i.has(f.name)&&!o.has(f.name)&&(o.add(f.name),s.push("uniform ".concat(f.type," ").concat(f.name,";")))};n.forEach(function(c){return c.uniforms.forEach(l)}),a.forEach(function(c){return c.uniforms.forEach(l)}),e.forEach(function(c){return c.uniforms.forEach(l)});var u=a.map(function(c){var f;return J((f=c.baseRatio)!==null&&f!==void 0?f:.5)}).join(", "),d=e.map(function(c,f){return" // Layer ".concat(f+1,": ").concat(c.name,` + color = blendOver(color, layer_`).concat(c.name,"(context));")}).join(` + +`),h=`#version 300 es +precision highp float; + +// Standard varyings +in vec4 v_color; +in vec4 v_id; +in float v_thickness; // Edge body thickness +in float v_maxWidthFactor; // Max width factor for geometry expansion +in float v_t; +in float v_tStart; +in float v_tEnd; +in float v_side; +in float v_antialiasingWidth; // Anti-aliasing width (normalized: u_correctionRatio / thickness) +in vec2 v_source; +in vec2 v_target; +in float v_edgeLength; +in vec2 v_position; // World position of the fragment +in float v_sourceNodeSize; // Source node size (mirrored in labels/generator.ts as plain float) +in float v_targetNodeSize; // Target node size (mirrored in labels/generator.ts as plain float) + +// Zone varyings +in float v_zone; // 0=tail, 1=body, 2=head +in float v_zoneT; // Position within zone [0,1] +in float v_headLengthRatio; // Head length as ratio of thickness (scaled for short edges) +in float v_tailLengthRatio; // Tail length as ratio of thickness (scaled for short edges) +in float v_headWidthRatio; // Head width factor +in float v_tailWidthRatio; // Tail width factor + +// Multi-path/extremity varyings +flat in int v_pathId; +flat in int v_headId; +flat in int v_tailId; + +// Path/layer attribute varyings (from vertex shader texture fetch) +`.concat(r.fragmentVaryingDeclarations,` + +// Standard uniforms (needed by some path types) +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; +#ifdef PICKING_MODE +uniform float u_pickingPadding; +#endif + +// Custom uniforms +`).concat(s.join(` +`),` + +// Fragment output (single target - picking handled via separate pass) +out vec4 fragColor; + +// Base ratio array for extremities (shared pool for head/tail) +const float EXTREMITY_BASE_RATIOS[`).concat(a.length,"] = float[](").concat(u,`); + +// EdgeContext struct +struct EdgeContext { + float t; // Position along path [0, 1] + float sdf; // Signed distance from centerline + vec2 position; // World position + vec2 tangent; // Path tangent + vec2 normal; // Path normal + float thickness; // Edge thickness + float aaWidth; // Anti-aliasing width + float edgeLength; // Total path length + float tStart; // Clamped start t + float tEnd; // Clamped end t + float distanceFromSource; // Arc distance from source + float distanceToTarget; // Arc distance to target +}; + +EdgeContext context; + +// Alpha "over" compositing for layer blending +vec4 blendOver(vec4 bg, vec4 fg) { + float a = fg.a; + return vec4(mix(bg.rgb, fg.rgb, a), bg.a + a * (1.0 - bg.a)); +} + +// All path functions +`).concat(Ga(n),` + +// Path selector functions +`).concat(Ma(n),` + +// All extremity functions +`).concat(wd(a),` + +// Extremity SDF selector (shared pool for head/tail) +`).concat(Rd(a),` + +// Layer functions +`).concat(e.map(function(c){return c.glsl}).join(` + +`),` + +// Helper: Compute arc length using path selector +float computeArcLengthMulti(int pathId, float t0, float t1, vec2 source, vec2 target, int samples) { + float arcLen = 0.0; + vec2 prev = queryPathPosition(pathId, t0, source, target); + for (int i = 1; i <= samples; i++) { + float t = t0 + (t1 - t0) * float(i) / float(samples); + vec2 curr = queryPathPosition(pathId, t, source, target); + arcLen += length(curr - prev); + prev = curr; + } + return arcLen; +} + +void main() { + // Compute normalized t within visible edge (0 = start, 1 = end) + float tNorm = (v_t - v_tStart) / max(v_tEnd - v_tStart, 0.0001); + + // Edge body half-thickness + float halfThickness = v_thickness * 0.5; + + // Convert normalized AA width to webGL units (~1 pixel) + float aaWidthWebGL = v_antialiasingWidth * v_thickness; + + // Distance from centerline based on v_side interpolation + float zoneWidthFactor = v_zone < 0.5 ? v_tailWidthRatio : + v_zone < 1.5 ? 1.0 : + v_headWidthRatio; + // In PICKING_MODE, inflate halfGeometryWidth to match the inflated vertex geometry + #ifdef PICKING_MODE + float halfGeometryWidth = halfThickness * zoneWidthFactor + aaWidthWebGL + u_pickingPadding * aaWidthWebGL; + #else + float halfGeometryWidth = halfThickness * zoneWidthFactor + aaWidthWebGL; + #endif + float distFromCenter = abs(v_side) * halfGeometryWidth; + + // Populate EdgeContext (for layer functions) + context.t = tNorm; + context.sdf = distFromCenter - halfThickness; + context.position = queryPathPosition(v_pathId, v_t, v_source, v_target); + context.tangent = queryPathTangent(v_pathId, v_t, v_source, v_target); + context.normal = queryPathNormal(v_pathId, v_t, v_source, v_target); + context.thickness = v_thickness; + context.aaWidth = aaWidthWebGL; + context.edgeLength = v_edgeLength; + context.tStart = v_tStart; + context.tEnd = v_tEnd; + + // Compute arc distances + float visibleLength = v_edgeLength * (v_tEnd - v_tStart); + float pathT = v_t; + float pathTNorm = tNorm; +`).concat(n.every(function(c){return c.linearParameterization})?` // All paths have linear parameterization: t maps directly to arc distance + context.distanceFromSource = pathTNorm * visibleLength; + context.distanceToTarget = (1.0 - pathTNorm) * visibleLength;`:n.every(function(c){return!c.linearParameterization})?` // No paths have linear parameterization: use numerical integration + context.distanceFromSource = computeArcLengthMulti(v_pathId, v_tStart, pathT, v_source, v_target, 16); + context.distanceToTarget = computeArcLengthMulti(v_pathId, pathT, v_tEnd, v_source, v_target, 16);`:` // Mixed parameterization: use analytical for linear paths, numerical for others + if (`.concat(n.filter(function(c){return c.linearParameterization}).map(function(c){return"v_pathId == ".concat(n.indexOf(c))}).join(" || "),`) { + context.distanceFromSource = pathTNorm * visibleLength; + context.distanceToTarget = (1.0 - pathTNorm) * visibleLength; + } else { + context.distanceFromSource = computeArcLengthMulti(v_pathId, v_tStart, pathT, v_source, v_target, 16); + context.distanceToTarget = computeArcLengthMulti(v_pathId, pathT, v_tEnd, v_source, v_target, 16); + }`),` + + // Compute SDF based on zone using extremity selector (shared pool) + float bodySDF = distFromCenter - halfThickness; + float finalSDF; + + // Get base ratios from shared array + float headBaseRatio = EXTREMITY_BASE_RATIOS[v_headId]; + float tailBaseRatio = EXTREMITY_BASE_RATIOS[v_tailId]; + + if (v_zone < 0.5) { + // TAIL ZONE: v_zoneT goes 0 (tip) to 1 (base) + vec2 uv = vec2((1.0 - v_zoneT) * v_tailLengthRatio, v_side * v_tailWidthRatio * 0.5); + float tailSDF = queryExtremitySDF(v_tailId, uv, v_tailLengthRatio, v_tailWidthRatio) * v_thickness; + + // Apply union only near base (v_zoneT > 1 - baseRatio) + if (v_zoneT > 1.0 - tailBaseRatio) { + finalSDF = min(tailSDF, bodySDF); + } else { + finalSDF = tailSDF; + } + } else if (v_zone < 1.5) { + // BODY ZONE: distance from centerline + finalSDF = bodySDF; + } else { + // HEAD ZONE: v_zoneT goes 0 (base) to 1 (tip) + vec2 uv = vec2(v_zoneT * v_headLengthRatio, v_side * v_headWidthRatio * 0.5); + float headSDF = queryExtremitySDF(v_headId, uv, v_headLengthRatio, v_headWidthRatio) * v_thickness; + + // Apply union only near base (v_zoneT < baseRatio) + if (v_zoneT < headBaseRatio) { + finalSDF = min(headSDF, bodySDF); + } else { + finalSDF = headSDF; + } + } + + #ifdef PICKING_MODE + // Picking pass: output edge ID for pixels within the picking area + if (finalSDF > u_pickingPadding * aaWidthWebGL) discard; + fragColor = v_id; + #else + // Visual pass: anti-aliased edge with layers + float alpha = smoothstep(aaWidthWebGL, -aaWidthWebGL, finalSDF); + if (alpha < 0.01) discard; + + // Apply layers sequentially with "over" compositing + vec4 color = vec4(0.0); + +`).concat(d,` + + // Mix with transparent to fade both color AND alpha (pre-multiplied alpha for correct blending) + fragColor = mix(vec4(0.0), color, alpha); + #endif +} +`);return h}function Fd(n,a,e){var t=tt(a.length)?!0:a.length>0,r=tt(e.length)?!0:e.length>0;if(n.generateConstantData){var i=n.generateConstantData();return{data:i.data,attributes:i.attributes,verticesPerEdge:i.verticesPerEdge}}return Pd(n.segments,t,r)}function Ia(n){var a=zi(n),e=a.paths,t=a.extremities,r=a.layers,i=new Map,o=new Map,s=new Map,l=F(e),u;try{for(l.s();!(u=l.n()).done;){var d=u.value,h=F(t),c;try{for(h.s();!(c=h.n()).done;){var f=c.value,g=F(t),v;try{for(g.s();!(v=g.n()).done;){var y=v.value,p="".concat(d.name,":").concat(f.name,":").concat(y.name),m=Fd(d,f,y);i.set(p,m.verticesPerEdge),o.set(p,m.data);var b=F(m.attributes),_;try{for(b.s();!(_=b.n()).done;){var x=_.value;s.has(x.name)||s.set(x.name,x)}}catch(H){b.e(H)}finally{b.f()}}}catch(H){g.e(H)}finally{g.f()}}}catch(H){h.e(H)}finally{h.f()}}}catch(H){l.e(H)}finally{l.f()}var S=Array.from(s.values()),E={};S.forEach(function(H,Q){E[H.name]=Q});var w=0,T="",R=F(i),A;try{for(R.s();!(A=R.n()).done;){var P=ie(A.value,2),C=P[0],L=P[1];L>w&&(w=L,T=C)}}catch(H){R.e(H)}finally{R.f()}var k=o.get(T)||[],I=T.split(":"),z=ie(I,1),N=z[0],O=e.find(function(H){return H.name===N}),B=[];O!=null&&O.generateConstantData?B=O.generateConstantData().attributes:B=[{name:"a_zone"},{name:"a_zoneT"},{name:"a_side"}];var $=k.map(function(H){var Q=new Array(S.length).fill(0);return B.forEach(function(he,oe){var be=E[he.name];be!==void 0&&oe visibleLength && totalNeededLength > 0.0001) { + float extremityScale = visibleLength / totalNeededLength; + headLength *= extremityScale; + tailLength *= extremityScale; + } + + float bodyStartDist = tStart * pathLength + tailLength; + float bodyEndDist = tEnd * pathLength - headLength; + return vec3(bodyStartDist, bodyEndDist, max(bodyEndDist - bodyStartDist, 0.0)); +} +`;function Nd(n,a){var e=J(n),t=J(a);return` +float computeEdgeLabelAlpha(float bodyLength, float textWidthWebGL) { + float ratio = textWidthWebGL > 0.0001 ? min(bodyLength / textWidthWebGL, 1.0) : 1.0; + if (ratio < `.concat(e,`) return 0.0; + if (ratio < `).concat(t,") return (ratio - ").concat(e,") / (").concat(t," - ").concat(e,`); + return 1.0; +} +`)}var Wd=` +float computeEdgeLabelPerpOffset( + float positionMode, + float halfThickness, float marginWebGL, float halfTextHeight, + vec2 source, vec2 target, mat3 matrix +) { + float magnitude = halfThickness + marginWebGL + halfTextHeight; + if (positionMode == 1.0) return magnitude; + if (positionMode == 2.0) return -magnitude; + if (positionMode == 3.0) { + vec3 sc = matrix * vec3(source, 1.0); + vec3 tc = matrix * vec3(target, 1.0); + return sc.x < tc.x ? magnitude : -magnitude; + } + return 0.0; +} +`;function Mi(n){var a=n.paths,e=n.minVisibilityThreshold,t=n.fullVisibilityThreshold,r=a.some(function(s){return s.hasSharpCorners}),i=a.map(function(s){return"// --- Path: ".concat(s.name,` --- +`).concat(s.glsl,` + +// Tangent/normal functions: analytical if provided, otherwise numerical +`).concat(s.analyticalTangentGlsl||Ii(s.name),` + +// Auto-generated fallbacks for any missing path functions +`).concat(Fi(s.name,s.glsl),` + +// Corner skip helpers (for paths with sharp corners like step/taxi) +`).concat(s.cornerSkipGlsl||"",` +`)}).join(` +`),o=r?`// Corner function selectors (only some paths have sharp corners) +vec2 queryGetCornerTs(int pathId, vec2 source, vec2 target) { + switch (pathId) { +`.concat(a.map(function(s,l){return s.hasSharpCorners?" case ".concat(l,": return path_").concat(s.name,"_getCornerTs(source, target);"):" case ".concat(l,": return vec2(-1.0, -1.0); // No corners for ").concat(s.name)}).join(` +`),` + default: return vec2(-1.0, -1.0); + } +} + +vec2 queryGetCornerConcavity(int pathId, vec2 source, vec2 target, float perpOffset) { + switch (pathId) { +`).concat(a.map(function(s,l){return s.hasSharpCorners?" case ".concat(l,": return path_").concat(s.name,"_getCornerConcavity(source, target, perpOffset);"):" case ".concat(l,": return vec2(0.0, 0.0); // No corners for ").concat(s.name)}).join(` +`),` + default: return vec2(0.0, 0.0); + } +}`):"";return` +// ============================================================================ +// Node Shape SDFs (for binary-search clamp) +// ============================================================================ + +`.concat(Di(),` + +`).concat(Ri(),` + +// ============================================================================ +// Path Functions (one block per path) +// ============================================================================ + +`).concat(i,` + +// ============================================================================ +// Path Query Selectors (dispatch by pathId) +// ============================================================================ + +`).concat(Xt(a,"queryPathPosition","position","vec2","float t, vec2 source, vec2 target","t, source, target"),` + +`).concat(Xt(a,"queryPathTangent","tangent","vec2","float t, vec2 source, vec2 target","t, source, target"),` + +`).concat(Xt(a,"queryPathNormal","normal","vec2","float t, vec2 source, vec2 target","t, source, target"),` + +`).concat(Xt(a,"queryPathLength","length","float","vec2 source, vec2 target","source, target"),` + +`).concat(Xt(a,"queryPathTAtDistance","t_at_distance","float","float dist, vec2 source, vec2 target","dist, source, target"),` + +`).concat(o,` + +// ============================================================================ +// Binary Search Clamp Functions (find where path exits source / enters target) +// ============================================================================ + +`).concat(Gd(a),` + +// ============================================================================ +// Shared helpers (body bounds, alpha ramp, perpendicular offset) +// ============================================================================ + +`).concat(Md,` +`).concat(Nd(e,t),` +`).concat(Wd,` +`)}var Od=Qe.fontSize,Bd=new Map,Ni=24,yi=(Ni+1)*2;function Ud(n){var a=n.paths,e=n.fontSizeMode,t=n.headLengthRatio,r=n.tailLengthRatio,i=n.minVisibilityThreshold,o=n.fullVisibilityThreshold,s=e==="scaled",l=ct(),u=He([].concat(V(a),[l])),d=Jt(u);return`#version 300 es + +// Per-instance attributes +in float a_edgeIndex; +in float a_edgeAttrIndex; +in float a_baseFontSize; +in float a_totalTextWidth; +in float a_positionMode; +in float a_margin; +in float a_padding; +in vec4 a_color; +in vec4 a_id; + +// Per-vertex (constant) attribute: strip vertex index +in float a_vertexIndex; + +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_pixelRatio; +uniform float u_cameraAngle; +uniform vec2 u_resolution; +uniform sampler2D u_nodeDataTexture; +uniform int u_nodeDataTextureWidth; +uniform sampler2D u_edgeDataTexture; +uniform int u_edgeDataTextureWidth; +`.concat(s?"uniform float u_zoomSizeRatio;":"",` + +`).concat(d.uniformDeclarations,` + +out vec4 v_color; +out vec4 v_id; +out float v_alphaModifier; + +const float ATLAS_FONT_SIZE = `).concat(J(Od),`; +const float HEAD_RATIO = `).concat(J(t),`; +const float TAIL_RATIO = `).concat(J(r),`; +const int RIBBON_SEGMENTS = `).concat(Ni,`; + +// Path attribute varyings (declared as plain locals since this shader has no FS inputs for them) +`).concat(d.vertexVaryingDeclarations.replace(/out /g,""),` + +// Node size variables used by some path functions (self-loops, etc.) +float v_sourceNodeSize; +float v_targetNodeSize; + +// Shared preamble: shape SDFs, path functions + selectors, clamp, helpers. +`).concat(Mi({paths:a,minVisibilityThreshold:i,fullVisibilityThreshold:o}),` + +void main() { + int vIdx = int(a_vertexIndex); + int pairIdx = vIdx / 2; + int side = vIdx - pairIdx * 2; // 0 = left/bottom, 1 = right/top + + // --- Fetch edge data (2 texels per edge) --- + int edgeIdx = int(a_edgeIndex); + int texel0Idx = edgeIdx * 2; + int texel1Idx = edgeIdx * 2 + 1; + ivec2 e0 = ivec2(texel0Idx % u_edgeDataTextureWidth, texel0Idx / u_edgeDataTextureWidth); + ivec2 e1 = ivec2(texel1Idx % u_edgeDataTextureWidth, texel1Idx / u_edgeDataTextureWidth); + vec4 edgeData0 = texelFetch(u_edgeDataTexture, e0, 0); + vec4 edgeData1 = texelFetch(u_edgeDataTexture, e1, 0); + + int srcIdx = int(edgeData0.x); + int tgtIdx = int(edgeData0.y); + float thickness = edgeData0.z; + int pathId = int(edgeData1.z); + + // --- Fetch path attributes (curvature, etc.) --- + { + int edgeIdx = int(a_edgeAttrIndex); +`).concat(d.fetchCode,` +`).concat(d.varyingAssignments,` + } + + // --- Fetch node data (x, y, size, shapeId) --- + ivec2 srcTC = ivec2(srcIdx % u_nodeDataTextureWidth, srcIdx / u_nodeDataTextureWidth); + ivec2 tgtTC = ivec2(tgtIdx % u_nodeDataTextureWidth, tgtIdx / u_nodeDataTextureWidth); + vec4 srcN = texelFetch(u_nodeDataTexture, srcTC, 0); + vec4 tgtN = texelFetch(u_nodeDataTexture, tgtTC, 0); + + vec2 source = srcN.xy; + vec2 target = tgtN.xy; + float sourceSize = srcN.z; + float targetSize = tgtN.z; + v_sourceNodeSize = sourceSize; + v_targetNodeSize = targetSize; + int sourceShapeId = int(srcN.w); + int targetShapeId = int(tgtN.w); + + // --- Pixel-to-graph conversion (fixed font mode) --- + float matrixScaleX = length(vec2(u_matrix[0][0], u_matrix[1][0])); + float pixelToGraph = 2.0 / (matrixScaleX * u_resolution.x); + + float webGLThickness = thickness * u_correctionRatio / u_sizeRatio; + + // --- Body bounds (shared with edge label shader) --- + vec3 bodyBounds = computeEdgeLabelBodyBounds( + pathId, source, sourceSize, sourceShapeId, + target, targetSize, targetShapeId, + webGLThickness, HEAD_RATIO, TAIL_RATIO + ); + float bodyStartDist = bodyBounds.x; + float bodyEndDist = bodyBounds.y; + float bodyLength = bodyBounds.z; + + // --- Text dimensions --- + float baseFontSize = a_baseFontSize; + `).concat(s?`float fontScale = baseFontSize / ATLAS_FONT_SIZE * u_zoomSizeRatio; + float textWidthWebGL = a_totalTextWidth * fontScale * u_correctionRatio / u_sizeRatio; + float halfTextHeight = baseFontSize * 0.35 * u_zoomSizeRatio * u_correctionRatio / u_sizeRatio; + float marginWebGL = a_margin * u_zoomSizeRatio * u_correctionRatio / u_sizeRatio;`:`float fontScale = baseFontSize / ATLAS_FONT_SIZE; + float textWidthWebGL = a_totalTextWidth * fontScale * pixelToGraph; + float halfTextHeight = baseFontSize * 0.35 * pixelToGraph; + float marginWebGL = a_margin * pixelToGraph;`,` + float paddingWebGL = a_padding * pixelToGraph; + + // --- Alpha modifier (shared with edge label shader) --- + float alphaModifier = computeEdgeLabelAlpha(bodyLength, textWidthWebGL); + if (alphaModifier <= 0.0 || textWidthWebGL <= 0.0) { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); + v_color = vec4(0.0); + v_id = vec4(0.0); + v_alphaModifier = 0.0; + return; + } + + // --- Perpendicular offset (shared with edge label shader) --- + float halfThickness = webGLThickness * 0.5; + float perpOffset = computeEdgeLabelPerpOffset( + a_positionMode, halfThickness, marginWebGL, halfTextHeight, source, target, u_matrix + ); + + // --- Ribbon span (clipped to body) --- + float bodyCenterDist = (bodyStartDist + bodyEndDist) * 0.5; + float halfTextWebGL = textWidthWebGL * 0.5; + float labelStartDist = max(bodyCenterDist - halfTextWebGL, bodyStartDist); + float labelEndDist = min(bodyCenterDist + halfTextWebGL, bodyEndDist); + + // Sample centerline at this pair, then apply perpendicular offset. + // The ribbon follows the centerline path (simple & robust); for curved edges + // this closely matches the offset path the characters sit on. + float u = float(pairIdx) / float(RIBBON_SEGMENTS); + float arcDist = mix(labelStartDist, labelEndDist, u); + float t = queryPathTAtDistance(pathId, arcDist, source, target); + vec2 pos = queryPathPosition(pathId, t, source, target); + vec2 tan = queryPathTangent(pathId, t, source, target); + vec2 perp = vec2(-tan.y, tan.x); + + vec2 centerPos = pos + perp * perpOffset; + + float halfRibbon = halfTextHeight + paddingWebGL; + float sideSign = side == 0 ? -1.0 : 1.0; + vec2 ribbonPos = centerPos + perp * (sideSign * halfRibbon); + + vec3 clipPos = u_matrix * vec3(ribbonPos, 1.0); + gl_Position = vec4(clipPos.xy, 0.0, 1.0); + + v_color = a_color; + v_id = a_id; + v_alphaModifier = alphaModifier; +} +`)}var Hd=`#version 300 es +precision highp float; + +in vec4 v_color; +in vec4 v_id; +in float v_alphaModifier; + +out vec4 fragColor; + +void main() { +#ifdef PICKING_MODE + if (v_alphaModifier <= 0.0) discard; + const float bias = 255.0 / 254.0; + fragColor = v_id; + fragColor.a *= bias; +#else + float alpha = v_color.a * v_alphaModifier; + if (alpha <= 0.0) discard; + fragColor = vec4(v_color.rgb * alpha, alpha); +#endif +} +`,$d=(function(n){function a(){var e;j(this,a);for(var t=arguments.length,r=new Array(t),i=0;ithis.bufferCapacity&&(this.bufferCapacity=Math.max(t,Math.ceil(this.bufferCapacity*1.5)||10),pe(a,"reallocate",this,3)([this.bufferCapacity]))}}])})(rt);function Vd(n){var a=n.shaderConfig,e=a.paths,t=a.fontSizeMode;if(e.length===0)throw new Error("createEdgeLabelBackgroundProgram: shaderConfig must declare at least one path");var r=ct(),i=He([].concat(V(e),[r])),o=Un([].concat(V(e),[r]),i),s=null;return(function(l){function u(d,h,c){var f;return j(this,u),s||(s=Ud(a)),f=te(this,u,[d,h,c]),D(f,"edgeAttributeTexture",null),f.edgeAttributeTexture=new Bn(d,i),f.packedAttributeData=new Float32Array(i.floatsPerItem),f}return ne(u,l),q(u,[{key:"getDefinition",value:function(){for(var h=WebGL2RenderingContext,c=h.FLOAT,f=h.UNSIGNED_BYTE,g=h.TRIANGLE_STRIP,v=[],y=0;y0&&p.push("u_edgeAttributeTexture","u_edgeAttributeTextureWidth","u_edgeAttributeTexelsPerEdge"),{VERTICES:yi,VERTEX_SHADER_SOURCE:s,FRAGMENT_SHADER_SOURCE:Hd,METHOD:g,UNIFORMS:p,ATTRIBUTES:[{name:"a_edgeIndex",size:1,type:c},{name:"a_edgeAttrIndex",size:1,type:c},{name:"a_baseFontSize",size:1,type:c},{name:"a_totalTextWidth",size:1,type:c},{name:"a_positionMode",size:1,type:c},{name:"a_margin",size:1,type:c},{name:"a_padding",size:1,type:c},{name:"a_color",size:4,type:f,normalized:!0},{name:"a_id",size:4,type:f,normalized:!0}],CONSTANT_ATTRIBUTES:[{name:"a_vertexIndex",size:1,type:c}],CONSTANT_DATA:v}}},{key:"processEdgeLabelBackground",value:function(h,c,f){var g=0;if(this.edgeAttributeTexture&&i.floatsPerItem>0){g=this.edgeAttributeTexture.allocate(c);var v=this.packedAttributeData;Hn(o,f.edgeAttributes,v,"",1,Bd,0),this.edgeAttributeTexture.updateAllAttributes(c,v)}var y=this.array,p=h*this.STRIDE;y[p++]=f.edgeIndex,y[p++]=g,y[p++]=f.baseFontSize,y[p++]=f.totalTextWidth,y[p++]=f.positionMode,y[p++]=f.margin,y[p++]=f.padding,y[p++]=f.color,y[p++]=f.id}},{key:"setUniforms",value:function(h,c){var f=c.gl,g=c.uniformLocations;if(f.uniformMatrix3fv(g.u_matrix,!1,h.matrix),f.uniform1f(g.u_sizeRatio,h.sizeRatio),f.uniform1f(g.u_correctionRatio,h.correctionRatio),f.uniform1f(g.u_pixelRatio,h.pixelRatio),f.uniform1f(g.u_cameraAngle,h.cameraAngle),f.uniform2f(g.u_resolution,h.width,h.height),g.u_nodeDataTexture!==void 0&&f.uniform1i(g.u_nodeDataTexture,h.nodeDataTextureUnit),g.u_nodeDataTextureWidth!==void 0&&f.uniform1i(g.u_nodeDataTextureWidth,h.nodeDataTextureWidth),g.u_edgeDataTexture!==void 0&&f.uniform1i(g.u_edgeDataTexture,h.edgeDataTextureUnit),g.u_edgeDataTextureWidth!==void 0&&f.uniform1i(g.u_edgeDataTextureWidth,h.edgeDataTextureWidth),t==="scaled"&&g.u_zoomSizeRatio!==void 0){var v=this.renderer.getSetting("zoomToSizeRatioFunction");f.uniform1f(g.u_zoomSizeRatio,1/v(h.zoomRatio))}this.edgeAttributeTexture&&i.floatsPerItem>0&&g.u_edgeAttributeTexture!==void 0&&(this.edgeAttributeTexture.bind(at),f.uniform1i(g.u_edgeAttributeTexture,at),f.uniform1i(g.u_edgeAttributeTextureWidth,this.edgeAttributeTexture.getTextureWidth()),f.uniform1i(g.u_edgeAttributeTexelsPerEdge,this.edgeAttributeTexture.getTexelsPerItem()))}},{key:"renderProgram",value:function(h,c){this.edgeAttributeTexture&&i.floatsPerItem>0&&this.edgeAttributeTexture.upload(),pe(u,"renderProgram",this,3)([h,c])}},{key:"kill",value:function(){this.edgeAttributeTexture&&(this.edgeAttributeTexture.kill(),this.edgeAttributeTexture=null),pe(u,"kill",this,3)([])}}])})($d)}var jd=(function(n){function a(){return j(this,a),te(this,a,arguments)}return ne(a,n),q(a,[{key:"processEdgeLabel",value:function(t,r,i){return pe(a,"processLabel",this,3)([t,r,i])}}])})(Ci);function Wi(n){var a,e,t,r,i;return{paths:n.paths,headLengthRatio:(a=n.headLengthRatio)!==null&&a!==void 0?a:0,tailLengthRatio:(e=n.tailLengthRatio)!==null&&e!==void 0?e:0,fontSizeMode:(t=n.fontSizeMode)!==null&&t!==void 0?t:"fixed",minVisibilityThreshold:(r=n.minVisibilityThreshold)!==null&&r!==void 0?r:.7,fullVisibilityThreshold:(i=n.fullVisibilityThreshold)!==null&&i!==void 0?i:.8}}var qd=Qe.fontSize,Xd=17/64;function Yd(n){var a=n.paths,e=n.hasBorder,t=e===void 0?!1:e,r=n.fontSizeMode,i=r===void 0?"fixed":r,o=n.minVisibilityThreshold,s=o===void 0?.5:o,l=n.fullVisibilityThreshold,u=l===void 0?.6:l,d=i==="scaled",h=a.some(function(y){return y.hasSharpCorners}),c=ct(),f=He([].concat(V(a),[c])),g=Jt(f),v=`#version 300 es + +// ============================================================================ +// Attributes - Per Character (Instanced) +// ============================================================================ + +// Edge geometry: indices for texture lookup +// Edge data (source/target node indices, thickness, head/tail ratios) is fetched from edge data texture +// Edge path attributes (curvature, etc.) are fetched from edge attribute texture +in float a_edgeIndex; // Index into edge data texture +in float a_edgeAttrIndex; // Index into edge attribute texture (for curvature, etc.) +in float a_baseFontSize; // Base font size in pixels (per-label) + +// Character metrics (in glyph units = atlas font size pixels) +in vec4 a_charMetrics; // (charTextOffset, charAdvance, totalTextWidth, positionMode) +in vec4 a_charDims; // (charSize.x, charSize.y, charOffset.x, charOffset.y) + +// Atlas texture coordinates +in vec4 a_texCoords; // (x, y, width, height) in atlas pixels + +// Label parameters +in vec2 a_labelParams; // (margin, unused) + +// Appearance +in vec4 a_color; // Character color (RGBA, normalized) +`.concat(t?"in vec4 a_borderColor; // Border color (RGBA, normalized)":"",` + +// ============================================================================ +// Attributes - Per Vertex (Constant) +// ============================================================================ + +in vec2 a_quadCorner; // Quad corner: (0,0), (1,0), (0,1), (1,1) + +// ============================================================================ +// Uniforms +// ============================================================================ + +uniform mat3 u_matrix; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_pixelRatio; +uniform float u_cameraAngle; // Required by node shape SDFs +// u_sdfBufferPixels kept for ABI compatibility but unused in shader +uniform float u_sdfBufferPixels; +uniform vec2 u_resolution; +uniform vec2 u_atlasSize; +uniform sampler2D u_nodeDataTexture; // Shared texture with node position/size/shape data +uniform int u_nodeDataTextureWidth; // Width of 2D node data texture for coordinate calculation +uniform sampler2D u_edgeDataTexture; // Shared texture with edge data +uniform int u_edgeDataTextureWidth; // Width of 2D edge data texture for coordinate calculation +`).concat(d?"uniform float u_zoomSizeRatio; // Zoom-based size ratio from zoomToSizeRatioFunction":"",` + +// Edge path attribute texture uniforms (for curvature and other path attributes) +`).concat(g.uniformDeclarations,` + +// ============================================================================ +// Varyings +// ============================================================================ + +out vec2 v_texCoord; +out vec4 v_color; +`).concat(t?"out vec4 v_borderColor;":"",` +out float v_edgeFade; // 0 = fully visible, 1 = fully faded (outside body) +out float v_alphaModifier; // 0-1 based on label visibility ratio +out float v_fontScale; // Ratio of rendered font size to atlas font size +`).concat(t?"out float v_positionMode; // Position mode for conditional border (0=over needs border)":"",` + +// ============================================================================ +// Constants +// ============================================================================ + +const float bias = 255.0 / 254.0; +const float FADE_WIDTH_PIXELS = 15.0; // Width of fade gradient in pixels +const float ATLAS_FONT_SIZE = `).concat(J(qd),`; // Base font size used in SDF atlas +const float VERTICAL_CENTER_RATIO = `).concat(J(Xd),`; // Baseline to visual center ratio + +// ============================================================================ +// Path Attribute Variables (set in main, used by path functions) +// ============================================================================ +// Path attributes are fetched from the edge attribute texture and stored in +// variables with v_ prefix (e.g., v_curvature) for path functions to access. +`).concat(g.vertexVaryingDeclarations.replace(/out /g,""),` + +// Node size variables (set in main, used by some path functions like loops). +// These mirror the v_sourceNodeSize / v_targetNodeSize varyings in generator.ts, +// but are plain floats here since the label shader is vertex-only. +float v_sourceNodeSize; +float v_targetNodeSize; + +// Shared preamble: shape SDFs, path functions + selectors, clamp, helpers. +`).concat(Mi({paths:a,minVisibilityThreshold:s,fullVisibilityThreshold:u}),` + +// ============================================================================ +// Main +// ============================================================================ + +void main() { + // ------------------------------------------------------------------------- + // Fetch edge data from edge texture (2 texels per edge) + // ------------------------------------------------------------------------- + // Texel 0: sourceNodeIndex, targetNodeIndex, thickness, reserved + // Texel 1: headLengthRatio, tailLengthRatio, pathId, extremityIds + int edgeIdx = int(a_edgeIndex); + int texel0Idx = edgeIdx * 2; + int texel1Idx = edgeIdx * 2 + 1; + ivec2 edgeTexCoord0 = ivec2(texel0Idx % u_edgeDataTextureWidth, texel0Idx / u_edgeDataTextureWidth); + ivec2 edgeTexCoord1 = ivec2(texel1Idx % u_edgeDataTextureWidth, texel1Idx / u_edgeDataTextureWidth); + vec4 edgeData0 = texelFetch(u_edgeDataTexture, edgeTexCoord0, 0); + vec4 edgeData1 = texelFetch(u_edgeDataTexture, edgeTexCoord1, 0); + + // Unpack edge data + int srcIdx = int(edgeData0.x); + int tgtIdx = int(edgeData0.y); + float thickness = edgeData0.z; + // edgeData0.w is reserved + float headLengthRatio = edgeData1.x; + float tailLengthRatio = edgeData1.y; + int pathId = int(edgeData1.z); // Path type for multi-path support + float baseFontSize = a_baseFontSize; + + // ------------------------------------------------------------------------- + // Fetch path attributes from edge attribute texture + // ------------------------------------------------------------------------- + // Note: The fetch code uses 'edgeIdx' variable, so we set it to the attribute texture index + { + int edgeIdx = int(a_edgeAttrIndex); // Use attribute texture index for path attributes +`).concat(g.fetchCode,` +`).concat(g.varyingAssignments,` + } + + // ------------------------------------------------------------------------- + // Fetch node data from node texture + // ------------------------------------------------------------------------- + // Texture format: vec4(x, y, size, shapeId) + // 2D texture layout: texCoord = (index % width, index / width) + ivec2 srcTexCoord = ivec2(srcIdx % u_nodeDataTextureWidth, srcIdx / u_nodeDataTextureWidth); + ivec2 tgtTexCoord = ivec2(tgtIdx % u_nodeDataTextureWidth, tgtIdx / u_nodeDataTextureWidth); + vec4 srcNodeData = texelFetch(u_nodeDataTexture, srcTexCoord, 0); + vec4 tgtNodeData = texelFetch(u_nodeDataTexture, tgtTexCoord, 0); + + vec2 source = srcNodeData.xy; + vec2 target = tgtNodeData.xy; + float sourceSize = srcNodeData.z; + float targetSize = tgtNodeData.z; + v_sourceNodeSize = sourceSize; + v_targetNodeSize = targetSize; + int sourceShapeId = int(srcNodeData.w); + int targetShapeId = int(tgtNodeData.w); + float charTextOffset = a_charMetrics.x; + float charAdvance = a_charMetrics.y; + float totalTextWidth = a_charMetrics.z; + float positionMode = a_charMetrics.w; + vec2 charSize = a_charDims.xy; + vec2 charOffset = a_charDims.zw; + float margin = a_labelParams.x; + + // ------------------------------------------------------------------------- + // Compute pixel-to-graph conversion (for fixed font size mode) + // ------------------------------------------------------------------------- + // This converts screen pixels to graph units such that N pixels on screen + // becomes N pixels regardless of zoom level. + // matrixScaleX is how much the matrix scales graph units to clip space + float matrixScaleX = length(vec2(u_matrix[0][0], u_matrix[1][0])); + float pixelToGraph = 2.0 / (matrixScaleX * u_resolution.x); + + // ------------------------------------------------------------------------- + // Step 1: Convert thickness to WebGL units + // ------------------------------------------------------------------------- + float webGLThickness = thickness * u_correctionRatio / u_sizeRatio; + + // ------------------------------------------------------------------------- + // Step 2: Compute body bounds (truncated at node boundaries + extremities) + // ------------------------------------------------------------------------- + vec3 bodyBounds = computeEdgeLabelBodyBounds( + pathId, source, sourceSize, sourceShapeId, + target, targetSize, targetShapeId, + webGLThickness, headLengthRatio, tailLengthRatio + ); + float bodyStartDist = bodyBounds.x; + float bodyEndDist = bodyBounds.y; + float bodyLength = bodyBounds.z; + + // ------------------------------------------------------------------------- + // Step 3: Compute font scale and text dimensions + // ------------------------------------------------------------------------- + // Font size modes: + // - "fixed": Constant pixel size regardless of zoom, using pixelToGraph conversion + // - "scaled": Scales with zoom using zoomToSizeRatioFunction + `).concat(d?`// Scaled mode: font scales with zoom + float fontScale = baseFontSize / ATLAS_FONT_SIZE * u_zoomSizeRatio; + // Convert glyph-unit metrics to WebGL units (scales with zoom) + float textWidthWebGL = totalTextWidth * fontScale * u_correctionRatio / u_sizeRatio; + float charOffsetWebGL = charTextOffset * fontScale * u_correctionRatio / u_sizeRatio; + float charAdvanceWebGL = charAdvance * fontScale * u_correctionRatio / u_sizeRatio;`:`// Fixed mode: font stays constant in screen pixels + float fontScale = baseFontSize / ATLAS_FONT_SIZE; + // Convert glyph-unit metrics to graph units using pixelToGraph (zoom-independent) + float textWidthWebGL = totalTextWidth * fontScale * pixelToGraph; + float charOffsetWebGL = charTextOffset * fontScale * pixelToGraph; + float charAdvanceWebGL = charAdvance * fontScale * pixelToGraph;`,` + + // Font scale varying for fragment shader gamma scaling. + // Ratio of rendered font size to atlas font size \u2014 used to tighten the + // anti-aliasing band for large labels so they stay sharp. + v_fontScale = fontScale; + + // ------------------------------------------------------------------------- + // Step 4: Alpha modifier from how much of the label fits in the body + // ------------------------------------------------------------------------- + float alphaModifier = computeEdgeLabelAlpha(bodyLength, textWidthWebGL); + + // ------------------------------------------------------------------------- + // Step 5: Compute character center offset (truncation check moved to after curvature adjustment) + // ------------------------------------------------------------------------- + // Character center position relative to label center (on centerline, before curvature adjustment) + float charCenterOffset = charOffsetWebGL + charAdvanceWebGL * 0.5 - textWidthWebGL * 0.5; + + // ------------------------------------------------------------------------- + // Step 6: Compute perpendicular offset based on position mode + // ------------------------------------------------------------------------- + // Position modes: 0=over, 1=above, 2=below, 3=auto + // Needed early for curvature-adaptive character spacing in Step 7 + float halfThickness = webGLThickness * 0.5; + `).concat(d?`// Scaled mode: margin and text height scale with zoom (same factor as font) + float marginWebGL = margin * u_zoomSizeRatio * u_correctionRatio / u_sizeRatio; + float halfTextHeight = baseFontSize * 0.35 * u_zoomSizeRatio * u_correctionRatio / u_sizeRatio;`:`// Fixed mode: margin and text height stay constant in screen pixels + float marginWebGL = margin * pixelToGraph; + float halfTextHeight = baseFontSize * 0.35 * pixelToGraph;`,` + float perpOffset = computeEdgeLabelPerpOffset( + positionMode, halfThickness, marginWebGL, halfTextHeight, source, target, u_matrix + ); + + // ------------------------------------------------------------------------- + // Step 7: Position character on path using offset path traversal + // ------------------------------------------------------------------------- + // Body center in arc distance + float bodyCenterDist = (bodyStartDist + bodyEndDist) * 0.5; + + // For "over" mode (perpOffset = 0), use simple centerline placement + // For above/below modes, walk along the offset path to find correct position + float charT; + + if (perpOffset == 0.0) { + // Simple case: place on centerline + float charArcDist = bodyCenterDist + charCenterOffset; + charT = queryPathTAtDistance(pathId, charArcDist, source, target); + } else { + // Offset path traversal: walk along the offset curve to find character position + // This ensures even character spacing regardless of curvature + + // Start from body center on offset path + float centerT = queryPathTAtDistance(pathId, bodyCenterDist, source, target); + + `).concat(h?`// ----------------------------------------------------------------------- + // Corner skip setup for step/taxi edges with above/below labels + // ----------------------------------------------------------------------- + // At concave corners (inner side of the bend), characters would bunch up + // because the offset path has near-zero arc length. We detect corner + // crossings during the offset path traversal and add skip distance. + + // Get corner t values and concavity + vec2 cornerTs = queryGetCornerTs(pathId, source, target); + vec2 concavity = queryGetCornerConcavity(pathId, source, target, perpOffset); + + // Skip distance in graph units, proportional to on-screen font size + // For fixed mode: use pixelToGraph so gap stays constant regardless of zoom + // For scaled mode: use the same conversion as text width + `.concat(d?"float skipDistGraph = STEP_INNER_CORNER_SKIP_FACTOR * baseFontSize * u_zoomSizeRatio * u_correctionRatio / u_sizeRatio;":"float skipDistGraph = STEP_INNER_CORNER_SKIP_FACTOR * baseFontSize * pixelToGraph;",` + + // Corner t values for detecting crossings during traversal + float corner1T = cornerTs.x; + float corner2T = cornerTs.y; + bool corner1IsConcave = concavity.x > 0.5; + bool corner2IsConcave = concavity.y > 0.5;`):"",` + + // Target distance along offset path from center + float targetOffsetDist = abs(charCenterOffset); + + // Handle center character (charCenterOffset \u2248 0) - no search needed + if (targetOffsetDist < 0.0001) { + charT = centerT; + } else { + vec2 centerPos = queryPathPosition(pathId, centerT, source, target); + vec2 centerNormal = queryPathNormal(pathId, centerT, source, target); + vec2 offsetCenter = centerPos + centerNormal * perpOffset; + + float searchDir = charCenterOffset > 0.0 ? 1.0 : -1.0; + + // Search bounds (t values for body start and end) + float tBodyStart = queryPathTAtDistance(pathId, bodyStartDist, source, target); + float tBodyEnd = queryPathTAtDistance(pathId, bodyEndDist, source, target); + + // Walk along offset path to find character position + float accumDist = 0.0; + vec2 prevOffsetPos = offsetCenter; + float prevT = centerT; + float foundT = centerT; + + // Search range depends on direction + float tSearchEnd = searchDir > 0.0 ? tBodyEnd : tBodyStart; + + `).concat(h?`// Track which concave corners we've crossed to add skip distance + bool crossedCorner1 = false; + bool crossedCorner2 = false; + float effectiveTargetDist = targetOffsetDist;`:"",` + + const int STEPS = 32; + for (int i = 1; i <= STEPS; i++) { + // Step along centerline t, from center toward target + float stepT = centerT + searchDir * float(i) * abs(tSearchEnd - centerT) / float(STEPS); + + `).concat(h?`// Check for concave corner crossings and add skip distance + // Corner 1 crossing check + if (corner1IsConcave && !crossedCorner1) { + bool crossingCorner1 = (searchDir > 0.0) + ? (prevT < corner1T && stepT >= corner1T) + : (prevT > corner1T && stepT <= corner1T); + if (crossingCorner1) { + crossedCorner1 = true; + effectiveTargetDist += skipDistGraph; + } + } + + // Corner 2 crossing check + if (corner2IsConcave && !crossedCorner2) { + bool crossingCorner2 = (searchDir > 0.0) + ? (prevT < corner2T && stepT >= corner2T) + : (prevT > corner2T && stepT <= corner2T); + if (crossingCorner2) { + crossedCorner2 = true; + effectiveTargetDist += skipDistGraph; + } + }`:"",` + + // Compute offset position at this t + vec2 stepPos = queryPathPosition(pathId, stepT, source, target); + vec2 stepNormal = queryPathNormal(pathId, stepT, source, target); + vec2 offsetPos = stepPos + stepNormal * perpOffset; + + // Distance along offset path + float segDist = length(offsetPos - prevOffsetPos); + + `).concat(h?`if (accumDist + segDist >= effectiveTargetDist) { + // Interpolate within segment to find exact t + float remaining = effectiveTargetDist - accumDist; + float segT = remaining / max(segDist, 0.0001); + foundT = mix(prevT, stepT, segT); + break; + }`:`if (accumDist + segDist >= targetOffsetDist) { + // Interpolate within segment to find exact t + float remaining = targetOffsetDist - accumDist; + float segT = remaining / max(segDist, 0.0001); + foundT = mix(prevT, stepT, segT); + break; + }`,` + + accumDist += segDist; + prevOffsetPos = offsetPos; + prevT = stepT; + // Update foundT to last valid position in case loop exhausts without finding target + foundT = stepT; + } + + charT = foundT; + } + } + + // Get position and tangent at final character position + vec2 pathPos = queryPathPosition(pathId, charT, source, target); + vec2 tangent = queryPathTangent(pathId, charT, source, target); + + // Compute perpendicular direction (90 degrees from tangent) + vec2 perpDir = vec2(-tangent.y, tangent.x); + + // Apply perpendicular offset to path position + vec2 offsetPathPos = pathPos + perpDir * perpOffset; + + // ------------------------------------------------------------------------- + // Step 8: Build character quad + // ------------------------------------------------------------------------- + // Character size in screen pixels + vec2 charSizePixels = charSize * fontScale; + + // Character offset from origin to the atlas region's top-left corner. + // bearingX/bearingY already include the SDF buffer. + vec2 charOffsetPixels = charOffset * fontScale; + + // The character's local X offset from pathPos (which is at character center) + float charLocalX = -charAdvance * 0.5 * fontScale; + + // Build quad position: + // - Start at character origin (charLocalX on X axis, 0 on Y axis = baseline) + // - Add bearing offset to get to atlas region corner + // - Add quad corner * size to get vertex position + vec2 quadPos; + quadPos.x = charLocalX + charOffsetPixels.x + a_quadCorner.x * charSizePixels.x; + // charOffset.y = -bearingY (negated), so -charOffsetPixels.y = bearingY * fontScale + // (distance from baseline to atlas region top, positive = upward) + // Quad corner (0,0) = bottom-left, (1,1) = top-right + quadPos.y = -charOffsetPixels.y - charSizePixels.y * (1.0 - a_quadCorner.y); + + // Center vertically on the path by offsetting by half the visual text height + // VERTICAL_CENTER_RATIO is the distance from baseline to visual center as a ratio of atlas font size + float verticalCenterOffset = VERTICAL_CENTER_RATIO * ATLAS_FONT_SIZE * fontScale; + quadPos.y -= verticalCenterOffset; + + // ------------------------------------------------------------------------- + // Step 9: Rotate quad to align with tangent + // ------------------------------------------------------------------------- + // Rotation matrix from tangent + // tangent = (cos(angle), sin(angle)), so we can build rotation directly + mat2 rotation = mat2(tangent.x, tangent.y, -tangent.y, tangent.x); + + // Convert pixel offset to WebGL units for rotation + `).concat(d?"vec2 quadPosWebGL = quadPos * u_correctionRatio / u_sizeRatio; // Scaled mode":"vec2 quadPosWebGL = quadPos * pixelToGraph; // Fixed mode: use pixelToGraph for zoom-independent size",` + + // Rotate around character center on path + vec2 rotatedOffset = rotation * quadPosWebGL; + + // Final position in graph space (using offset path position for above/below modes) + vec2 worldPos = offsetPathPos + rotatedOffset; + + // ------------------------------------------------------------------------- + // Step 10: Transform to clip space + // ------------------------------------------------------------------------- + vec3 clipPos = u_matrix * vec3(worldPos, 1.0); + gl_Position = vec4(clipPos.xy, 0.0, 1.0); + + // ------------------------------------------------------------------------- + // Step 11: Texture coordinates + // ------------------------------------------------------------------------- + // Flip Y for texture coordinates (texture Y goes down, quad Y goes up) + vec2 texCorner = vec2(a_quadCorner.x, 1.0 - a_quadCorner.y); + v_texCoord = (a_texCoords.xy + texCorner * a_texCoords.zw) / u_atlasSize; + + // ------------------------------------------------------------------------- + // Step 12: Pass color, border color, and alpha modifier + // ------------------------------------------------------------------------- + v_color = a_color; + v_color.a *= bias; +`).concat(t?` v_borderColor = a_borderColor; + v_borderColor.a *= bias; + v_positionMode = positionMode;`:"",` + v_alphaModifier = alphaModifier; + + // ------------------------------------------------------------------------- + // Step 13: Compute edge fade for soft truncation + // ------------------------------------------------------------------------- + // Convert fade width from pixels to WebGL units + `).concat(d?"float fadeWidthWebGL = FADE_WIDTH_PIXELS * u_correctionRatio / u_sizeRatio;":"float fadeWidthWebGL = FADE_WIDTH_PIXELS * pixelToGraph;",` + + // Compute the arc position of THIS VERTEX (not just character center) + // The quad extends from charCenter - advance/2 to charCenter + advance/2 + // a_quadCorner.x is 0 for left edge, 1 for right edge + float vertexLocalOffset = (a_quadCorner.x - 0.5) * charAdvanceWebGL; + float vertexArcOffset = charCenterOffset + vertexLocalOffset; + + // Compute distance from body edges (positive = inside body, negative = outside) + float halfBody = bodyLength * 0.5; + float distFromStart = vertexArcOffset + halfBody; // Distance from body start edge + float distFromEnd = halfBody - vertexArcOffset; // Distance from body end edge + float distFromEdge = min(distFromStart, distFromEnd); + + // Compute fade: 0 = fully visible (deep inside body), 1 = fully faded (at body edge) + // Fade goes from 0 (at 2*fadeWidth inside) to 1 (at body edge) + // This ensures text is fully transparent before reaching extremities + v_edgeFade = 1.0 - smoothstep(0.0, fadeWidthWebGL * 2.0, distFromEdge); +} +`);return v}function Kd(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},a=n.hasBorder,e=a===void 0?!1:a,t=`#version 300 es +precision highp float; + +in vec2 v_texCoord; +in vec4 v_color; +`.concat(e?"in vec4 v_borderColor;":"",` +in float v_edgeFade; // 0 = fully visible, 1 = fully faded +in float v_alphaModifier; // 0-1 based on label visibility ratio +in float v_fontScale; // Ratio of rendered font size to atlas font size +`).concat(e?"in float v_positionMode; // Position mode (0=over, 1=above, 2=below, 3=auto)":"",` + +uniform sampler2D u_atlas; +uniform float u_gamma; +uniform float u_sdfBuffer; +uniform float u_pixelRatio; +`).concat(e?"uniform float u_borderWidth; // Border width in SDF units (normalized)":"",` + +// Fragment output (single target - picking handled via separate pass) +out vec4 fragColor; + +void main() { + #ifdef PICKING_MODE + // Edge labels are not pickable - discard all fragments in picking mode + discard; + #else + // SDF stores normalized distance: 0.5 = on edge, >0.5 = inside glyph + float sdfValue = texture(u_atlas, v_texCoord).a; + + // Edge threshold accounting for SDF buffer padding + float edge = 1.0 - u_sdfBuffer; + + // Scale gamma inversely with font scale so small labels get a wider AA band + // (smoother) and large labels get a tighter band (sharper). + float aaWidth = u_gamma / (u_pixelRatio * v_fontScale); + + // Apply edge fade for soft truncation at body boundaries + // Also apply visibility-based alpha modifier for short edge labels + float edgeAlpha = (1.0 - v_edgeFade) * v_alphaModifier; + +`).concat(e?` // Fill alpha: fully opaque inside the glyph + float fillAlpha = smoothstep(edge - aaWidth, edge + aaWidth, sdfValue); + + // Only apply border for "over" position mode (v_positionMode == 0.0) + // Labels positioned above/below/auto don't overlap the edge line and don't need borders + if (v_positionMode < 0.5) { + // Border rendering: compute alpha for both fill and border regions + // Border extends from (edge - borderWidth) to edge + float borderEdge = edge - u_borderWidth; + + // Border alpha: opaque in the border region (between borderEdge and edge) + float borderAlpha = smoothstep(borderEdge - aaWidth, borderEdge + aaWidth, sdfValue); + + // Composite: fill on top of border + // Border is visible where borderAlpha > 0 but fillAlpha < 1 + vec3 borderColorPremult = v_borderColor.rgb * v_borderColor.a * borderAlpha * edgeAlpha; + vec3 fillColorPremult = v_color.rgb * v_color.a * fillAlpha * edgeAlpha; + + // Blend fill over border (fill replaces border where fill is opaque) + float finalBorderAlpha = borderAlpha * (1.0 - fillAlpha); + vec3 finalColor = fillColorPremult + v_borderColor.rgb * v_borderColor.a * finalBorderAlpha * edgeAlpha; + float finalAlpha = (v_color.a * fillAlpha + v_borderColor.a * finalBorderAlpha) * edgeAlpha; + + fragColor = vec4(finalColor, finalAlpha); + } else { + // No border for above/below/auto positions - simple text rendering + float finalAlpha = v_color.a * fillAlpha * edgeAlpha; + fragColor = vec4(v_color.rgb * finalAlpha, finalAlpha); + }`:` // Smooth transition from transparent to opaque at glyph edge + float alpha = smoothstep(edge - aaWidth, edge + aaWidth, sdfValue); + + // Premultiplied alpha output + float finalAlpha = v_color.a * alpha * edgeAlpha; + fragColor = vec4(v_color.rgb * finalAlpha, finalAlpha);`,` + #endif +} +`);return t}function Zd(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"fixed",t=["u_matrix","u_sizeRatio","u_correctionRatio","u_pixelRatio","u_cameraAngle","u_sdfBufferPixels","u_resolution","u_atlasSize","u_atlas","u_gamma","u_sdfBuffer","u_nodeDataTexture","u_nodeDataTextureWidth","u_edgeDataTexture","u_edgeDataTextureWidth","u_edgeAttributeTexture","u_edgeAttributeTextureWidth","u_edgeAttributeTexelsPerEdge"];e==="scaled"&&t.push("u_zoomSizeRatio"),a&&t.push("u_borderWidth");var r=F(n),i;try{for(r.s();!(i=r.n()).done;){var o=i.value,s=F(o.uniforms),l;try{for(s.s();!(l=s.n()).done;){var u=l.value;t.includes(u.name)||t.push(u.name)}}catch(d){s.e(d)}finally{s.f()}}}catch(d){r.e(d)}finally{r.f()}return t}function bi(n){var a=n.hasBorder,e=a===void 0?!1:a,t=n.fontSizeMode,r=t===void 0?"fixed":t;return{vertexShader:Yd(n),fragmentShader:Kd({hasBorder:e}),uniforms:Zd(n.paths,e,r)}}var Qd=new Map;function Jd(n){switch(n){case"over":return 0;case"above":return 1;case"below":return 2;case"auto":return 3;default:return 0}}function eh(n){var a,e=n.color,t=n.margin,r=n.textBorder,i=Wi(n),o=i.paths,s=i.fontSizeMode,l=i.minVisibilityThreshold,u=i.fullVisibilityThreshold,d=!!r,h=null;return a=(function(c){function f(g,v,y){var p;j(this,f),h||(h=bi({paths:o,hasBorder:d,fontSizeMode:s,minVisibilityThreshold:l,fullVisibilityThreshold:u})),p=te(this,f,[g,v,y]),D(p,"atlasTexture",null),D(p,"atlasNeedsUpdate",!1),D(p,"labelGlyphCache",new Map),D(p,"edgeAttributeTexture",null);var m=ct();if(p.attributeLayout=He([].concat(V(o),[m])),p.attrDescriptors=Un([].concat(V(o),[m]),p.attributeLayout),p.edgeAttributeTexture=new Bn(g,p.attributeLayout),p.packedAttributeData=new Float32Array(p.attributeLayout.floatsPerItem),p.atlasManager=new gt,p.gamma=.025,p.sdfBuffer=Qe.cutoff,p.atlasTexture=g.createTexture(),!p.atlasTexture)throw new Error("EdgeLabelProgram: failed to create atlas texture");g.bindTexture(g.TEXTURE_2D,p.atlasTexture),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR),g.bindTexture(g.TEXTURE_2D,null),p.atlasManager.on(gt.ATLAS_UPDATED_EVENT,function(){p.atlasNeedsUpdate=!0,setTimeout(function(){return p.renderer.refresh()},0)});var b={family:"sans-serif",weight:"normal",style:"normal"};return p.defaultFontKey=p.atlasManager.registerFont(b),p}return ne(f,c),q(f,[{key:"getDefinition",value:function(){var v=WebGL2RenderingContext,y=v.FLOAT,p=v.UNSIGNED_BYTE,m=v.TRIANGLE_STRIP,b=new Set,_=[],x=F(o),S;try{for(x.s();!(S=x.n()).done;){var E=S.value,w=F(E.attributes),T;try{for(w.s();!(T=w.n()).done;){var R=T.value,A=R.name.startsWith("a_")?R.name:"a_".concat(R.name);b.has(A)||(b.add(A),_.push({name:A,size:R.size,type:R.type}))}}catch(P){w.e(P)}finally{w.f()}}}catch(P){x.e(P)}finally{x.f()}return{VERTICES:4,VERTEX_SHADER_SOURCE:h.vertexShader,FRAGMENT_SHADER_SOURCE:h.fragmentShader,METHOD:m,UNIFORMS:h.uniforms,ATTRIBUTES:[{name:"a_edgeIndex",size:1,type:y},{name:"a_edgeAttrIndex",size:1,type:y},{name:"a_baseFontSize",size:1,type:y},{name:"a_charMetrics",size:4,type:y},{name:"a_charDims",size:4,type:y},{name:"a_texCoords",size:4,type:y},{name:"a_labelParams",size:2,type:y},{name:"a_color",size:4,type:p,normalized:!0}].concat(V(d?[{name:"a_borderColor",size:4,type:p,normalized:!0}]:[]),V(_.filter(function(P){return!["a_curvature","curvature"].includes(P.name)}))),CONSTANT_ATTRIBUTES:[{name:"a_quadCorner",size:2,type:y}],CONSTANT_DATA:[[0,0],[1,0],[0,1],[1,1]]}}},{key:"prepareLabelGlyphs",value:function(v,y){if(y.hidden||!y.text){this.labelGlyphCache.delete(v);return}var p=y.text,m=y.fontKey||this.defaultFontKey;this.atlasManager.ensureGlyphs(p,m);var b=[],_=[],x=0,S=F(p),E;try{for(S.s();!(E=S.n()).done;){var w=E.value,T=w.codePointAt(0);if(T===void 0){b.push(void 0),_.push(x);continue}var R=this.atlasManager.getGlyph(T,m);b.push(R),_.push(x),R&&(x+=R.advance)}}catch(A){S.e(A)}finally{S.f()}this.labelGlyphCache.set(v,{glyphs:b,xOffsets:_,totalWidth:x})}},{key:"processCharacter",value:function(v,y,p,m){var b,_,x,S=this.array,E=this.STRIDE,w=v*E,T=this.labelGlyphCache.get(y.parentKey);if(!T||!T.glyphs[m]){for(var R=0;R0?[b[0].width,b[0].height]:[1,1];if(p.uniformMatrix3fv(m.u_matrix,!1,v.matrix),p.uniform1f(m.u_sizeRatio,v.sizeRatio),p.uniform1f(m.u_correctionRatio,v.correctionRatio),p.uniform1f(m.u_pixelRatio,v.pixelRatio),p.uniform1f(m.u_cameraAngle,v.cameraAngle),p.uniform1f(m.u_sdfBufferPixels,Qe.buffer),p.uniform2f(m.u_resolution,v.width,v.height),p.uniform2f(m.u_atlasSize,_[0],_[1]),p.uniform1f(m.u_gamma,this.gamma),p.uniform1f(m.u_sdfBuffer,this.sdfBuffer),p.activeTexture(p.TEXTURE0),p.bindTexture(p.TEXTURE_2D,this.atlasTexture),p.uniform1i(m.u_atlas,0),m.u_nodeDataTexture!==void 0&&p.uniform1i(m.u_nodeDataTexture,v.nodeDataTextureUnit),m.u_nodeDataTextureWidth!==void 0&&p.uniform1i(m.u_nodeDataTextureWidth,v.nodeDataTextureWidth),m.u_edgeDataTexture!==void 0&&p.uniform1i(m.u_edgeDataTexture,v.edgeDataTextureUnit),m.u_edgeDataTextureWidth!==void 0&&p.uniform1i(m.u_edgeDataTextureWidth,v.edgeDataTextureWidth),d&&r&&m.u_borderWidth!==void 0){var x=r.width/Qe.buffer*this.sdfBuffer;p.uniform1f(m.u_borderWidth,x)}if(this.edgeAttributeTexture&&m.u_edgeAttributeTexture!==void 0&&(this.edgeAttributeTexture.bind(at),p.uniform1i(m.u_edgeAttributeTexture,at),p.uniform1i(m.u_edgeAttributeTextureWidth,this.edgeAttributeTexture.getTextureWidth()),p.uniform1i(m.u_edgeAttributeTexelsPerEdge,this.edgeAttributeTexture.getTexelsPerItem())),s==="scaled"&&m.u_zoomSizeRatio!==void 0){var S=this.renderer.getSetting("zoomToSizeRatioFunction"),E=1/S(v.zoomRatio);p.uniform1f(m.u_zoomSizeRatio,E)}}},{key:"renderProgram",value:function(v,y){this.updateAtlasTexture(),this.atlasManager.hasPendingGlyphs()&&(this.atlasManager.flush(),this.updateAtlasTexture()),this.edgeAttributeTexture&&this.edgeAttributeTexture.upload(),pe(f,"renderProgram",this,3)([v,y])}},{key:"registerFont",value:function(v){var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"normal";return this.atlasManager.registerFont({family:v,weight:y,style:p})}},{key:"getAtlasManager",value:function(){return this.atlasManager}},{key:"ensureGlyphsReady",value:function(v,y){var p=y||this.defaultFontKey,m=F(v),b;try{for(m.s();!(b=m.n()).done;){var _=b.value;this.atlasManager.ensureGlyphs(_,p)}}catch(x){m.e(x)}finally{m.f()}this.atlasManager.flush()}},{key:"measureLabelAtlasWidth",value:function(v,y){var p=y||this.defaultFontKey;this.atlasManager.ensureGlyphs(v,p),this.atlasManager.hasPendingGlyphs()&&this.atlasManager.flush();var m=0,b=F(v),_;try{for(b.s();!(_=b.n()).done;){var x=_.value,S=x.codePointAt(0);if(S!==void 0){var E=this.atlasManager.getGlyph(S,p);E&&(m+=E.advance)}}}catch(w){b.e(w)}finally{b.f()}return m}},{key:"kill",value:function(){var v=this.normalProgram.gl;this.atlasTexture&&(v.deleteTexture(this.atlasTexture),this.atlasTexture=null),this.edgeAttributeTexture&&(this.edgeAttributeTexture.kill(),this.edgeAttributeTexture=null),this.atlasManager.destroy(),this.labelGlyphCache.clear(),pe(f,"kill",this,3)([])}}],[{key:"generatedShaders",get:function(){return h||(h=bi({paths:o,hasBorder:d,fontSizeMode:s,minVisibilityThreshold:l,fullVisibilityThreshold:u})),h}}])})(jd),D(a,"programOptions",n),D(a,"labelColor",e),D(a,"labelMargin",t),a}function th(){var n=` +// No extremity - always returns positive (outside) +float extremity_none(vec2 uv, float lengthRatio, float widthRatio) { + return 1.0; +} +`;return{name:"none",glsl:n,length:0,widthFactor:1,margin:0,uniforms:[],attributes:[]}}function Oi(n){var a,e,t,r=zi(n),i=r.paths,o=r.layers,s=r.defaultHead,l=r.defaultTail,u=[th()].concat(V(r.extremities)),d={},h={};i.forEach(function(E,w){return d[E.name]=w}),u.forEach(function(E,w){return h[E.name]=w});var c=(a=h[s])!==null&&a!==void 0?a:0,f=(e=h[l])!==null&&e!==void 0?e:0,g=null,v=He([].concat(V(i),V(o))),y=(t=(function(E){function w(T,R,A){var P;j(this,w),g||(g=Ia({paths:i,extremities:u,layers:o})),P=te(this,w,[T,R,A]),D(P,"layerLifecycles",new Map),D(P,"needsShaderRegeneration",!1),D(P,"edgeAttributeTexture",null),D(P,"layout",v),D(P,"attrDescriptors",[]),D(P,"lifecycleIndexOffset",i.length),P._pickingBuffer=R,P.edgeAttributeTexture=new Bn(T,P.layout),P.packedAttributeData=new Float32Array(P.layout.floatsPerItem),o.forEach(function(L,k){if(L.lifecycle){var I={gl:T,renderer:{refresh:function(){return A.refresh()}},getUniformLocation:function(N){return T.getUniformLocation(P.normalProgram.program,N)},requestShaderRegeneration:function(){P.needsShaderRegeneration=!0},requestRefresh:function(){A.refresh()}};P.layerLifecycles.set(k,L.lifecycle(I))}}),P.layerLifecycles.forEach(function(L){var k;return(k=L.init)===null||k===void 0?void 0:k.call(L)});var C=new Map;return P.layerLifecycles.forEach(function(L,k){L.getAttributeData&&C.set(i.length+k,L)}),P.attrDescriptors=Un([].concat(V(i),V(o)),P.layout,C),P}return ne(w,E),q(w,[{key:"resolveEdgeIds",value:function(R,A,P){var C=R,L=0,k=c,I=f,z=A?C.selfLoopPath:P&&C.parallelPath?C.parallelPath:C.path;z&&d[z]!==void 0&&(L=d[z]),C.head&&C.head!=="none"&&h[C.head]!==void 0&&(k=h[C.head]),C.tail&&C.tail!=="none"&&h[C.tail]!==void 0&&(I=h[C.tail]);var N=u[k],O=u[I];return{pathId:L,headId:k,tailId:I,headLengthRatio:tt(N.length)?0:N.length,tailLengthRatio:tt(O.length)?0:O.length}}},{key:"getPrePassDefinition",value:function(){var R=["u_sizeRatio","u_correctionRatio","u_cameraAngle","u_minEdgeThickness","u_nodeDataTexture","u_nodeDataTextureWidth","u_edgeDataTexture","u_edgeDataTextureWidth","u_edgeAttributeTexture","u_edgeAttributeTextureWidth","u_edgeAttributeTexelsPerEdge"];return[].concat(V(i),V(u)).forEach(function(A){return A.uniforms.forEach(function(P){return R.push(P.name)})}),{shaderSource:g.prePassVertexShader,tfVaryingNames:Sd,floatsPerInstance:Td,outputAttributes:[{name:"pre_clamp",size:4,floatOffset:0}],uniformNames:R,inputAttributeName:"a_edgeIndex"}}},{key:"setPrePassUniforms",value:function(R,A,P){A.u_sizeRatio&&R.uniform1f(A.u_sizeRatio,P.sizeRatio),A.u_correctionRatio&&R.uniform1f(A.u_correctionRatio,P.correctionRatio),A.u_cameraAngle&&R.uniform1f(A.u_cameraAngle,P.cameraAngle),A.u_minEdgeThickness&&R.uniform1f(A.u_minEdgeThickness,P.minEdgeThickness),A.u_nodeDataTexture&&R.uniform1i(A.u_nodeDataTexture,P.nodeDataTextureUnit),A.u_nodeDataTextureWidth&&R.uniform1i(A.u_nodeDataTextureWidth,P.nodeDataTextureWidth),A.u_edgeDataTexture&&R.uniform1i(A.u_edgeDataTexture,P.edgeDataTextureUnit),A.u_edgeDataTextureWidth&&R.uniform1i(A.u_edgeDataTextureWidth,P.edgeDataTextureWidth),this.edgeAttributeTexture&&this.layout.floatsPerItem>0&&(this.edgeAttributeTexture.bind(at),A.u_edgeAttributeTexture&&R.uniform1i(A.u_edgeAttributeTexture,at),A.u_edgeAttributeTextureWidth&&R.uniform1i(A.u_edgeAttributeTextureWidth,this.edgeAttributeTexture.getTextureWidth()),A.u_edgeAttributeTexelsPerEdge&&R.uniform1i(A.u_edgeAttributeTexelsPerEdge,this.edgeAttributeTexture.getTexelsPerItem()));for(var C=new Set,L=0,k=[].concat(V(i),V(u));L0&&(this.edgeAttributeTexture.bind(at),L.u_edgeAttributeTexture&&C.uniform1i(L.u_edgeAttributeTexture,at),L.u_edgeAttributeTextureWidth&&C.uniform1i(L.u_edgeAttributeTextureWidth,this.edgeAttributeTexture.getTextureWidth()),L.u_edgeAttributeTexelsPerEdge&&C.uniform1i(L.u_edgeAttributeTexelsPerEdge,this.edgeAttributeTexture.getTexelsPerItem()));var k=new Set;i.forEach(function(I){I.uniforms.forEach(function(z){k.has(z.name)||(k.add(z.name),P.setTypedUniform(z,A))})}),u.forEach(function(I){I.uniforms.forEach(function(z){k.has(z.name)||(k.add(z.name),P.setTypedUniform(z,A))})}),o.forEach(function(I){I.uniforms.forEach(function(z){k.has(z.name)||(k.add(z.name),P.setTypedUniform(z,A))})})}},{key:"renderProgram",value:function(R,A){this.maybeRegenerateShaders(),this.layerLifecycles.forEach(function(P){var C;return(C=P.beforeRender)===null||C===void 0?void 0:C.call(P)}),pe(w,"renderProgram",this,3)([R,A])}},{key:"uploadAttributeTexture",value:function(){this.edgeAttributeTexture&&this.layout.floatsPerItem>0&&this.edgeAttributeTexture.upload()}},{key:"kill",value:function(){this.layerLifecycles.forEach(function(R){var A;return(A=R.kill)===null||A===void 0?void 0:A.call(R)}),this.edgeAttributeTexture&&(this.edgeAttributeTexture.kill(),this.edgeAttributeTexture=null),pe(w,"kill",this,3)([])}}],[{key:"generatedShaders",get:function(){return g||(g=Ia({paths:i,extremities:u,layers:o})),g}}])})(md),D(t,"programOptions",M(M({},n),{},{extremities:u})),D(t,"pathNameToIndex",d),D(t,"extremityNameToIndex",h),D(t,"defaultHeadIndex",c),D(t,"defaultTailIndex",f),t),p=u[c],m=u[f],b=M({paths:i,headLengthRatio:tt(p.length)?0:p.length,tailLengthRatio:tt(m.length)?0:m.length},n.label),_=Wi(b),x=eh(b);y.LabelProgram=x;var S=Vd({shaderConfig:_});return y.LabelBackgroundProgram=S,y}var nh=2;function Bi(n,a,e){var t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nh,r=a.canvas,i=r.width,o=r.height,s=e.x,l=e.y,u=e.rowHeight,d=e.maxRowWidth,h={},c=[],f=F(n),g;try{for(f.s();!(g=f.n()).done;){var v=g.value,y=v.width+t,p=v.height+t;if(y>i||p>o||s+y>i&&l+u+p>o){c.push(v);continue}s+y>i&&(d=Math.max(d,s),s=0,l+=u,u=p),v.draw(a,s,l),h[v.key]={x:s,y:l,width:v.width,height:v.height},s+=y,u=Math.max(u,p)}}catch(m){f.e(m)}finally{f.f()}return d=Math.max(d,s),{atlas:h,cursor:{x:s,y:l,rowHeight:u,maxRowWidth:d},remaining:c}}function De(n,a,e,t){var r=Object.defineProperty;try{r({},"",{})}catch{r=0}De=function(i,o,s,l){function u(d,h){De(i,d,function(c){return this._invoke(d,h,c)})}o?r?r(i,o,{value:s,enumerable:!l,configurable:!l,writable:!l}):i[o]=s:(u("next",0),u("throw",1),u("return",2))},De(n,a,e,t)}function Re(){var n,a,e=typeof Symbol=="function"?Symbol:{},t=e.iterator||"@@iterator",r=e.toStringTag||"@@toStringTag";function i(f,g,v,y){var p=g&&g.prototype instanceof s?g:s,m=Object.create(p.prototype);return De(m,"_invoke",(function(b,_,x){var S,E,w,T=0,R=x||[],A=!1,P={p:0,n:0,v:n,a:C,f:C.bind(n,4),d:function(L,k){return S=L,E=0,w=n,P.n=k,o}};function C(L,k){for(E=L,w=k,a=0;!A&&T&&!I&&a3?(I=O===k)&&(w=z[(E=z[4])?5:(E=3,3)],z[4]=z[5]=n):z[0]<=N&&((I=L<2&&Nk||k>O)&&(z[4]=L,z[5]=k,P.n=O,E=0))}if(I||L>1)return o;throw A=!0,k}return function(L,k,I){if(T>1)throw TypeError("Generator is already running");for(A&&k===1&&C(k,I),E=k,w=I;(a=E<2?n:w)||!A;){S||(E?E<3?(E>1&&(P.n=-1),C(E,w)):P.n=w:P.v=w);try{if(T=2,S){if(E||(L="next"),a=S[L]){if(!(a=a.call(S,w)))throw TypeError("iterator result is not an object");if(!a.done)return a;w=a.value,E<2&&(E=0)}else E===1&&(a=S.return)&&a.call(S),E<2&&(w=TypeError("The iterator does not provide a '"+L+"' method"),E=1);S=n}else if((a=(A=P.n<0)?w:b.call(_,P))!==o)break}catch(z){S=n,E=1,w=z}finally{T=1}}return{value:a,done:A}}})(f,v,y),!0),m}var o={};function s(){}function l(){}function u(){}a=Object.getPrototypeOf;var d=[][t]?a(a([][t]())):(De(a={},t,function(){return this}),a),h=u.prototype=s.prototype=Object.create(d);function c(f){return Object.setPrototypeOf?Object.setPrototypeOf(f,u):(f.__proto__=u,De(f,r,"GeneratorFunction")),f.prototype=Object.create(h),f}return l.prototype=u,De(h,"constructor",u),De(u,"constructor",l),l.displayName="GeneratorFunction",De(u,r,"GeneratorFunction"),De(h),De(h,r,"Generator"),De(h,t,function(){return this}),De(h,"toString",function(){return"[object Generator]"}),(Re=function(){return{w:i,m:c}})()}function Ui(n,a,e,t,r,i,o){try{var s=n[i](o),l=s.value}catch(u){return void e(u)}s.done?a(l):Promise.resolve(l).then(t,r)}function Ct(n){return function(){var a=this,e=arguments;return new Promise(function(t,r){var i=n.apply(a,e);function o(l){Ui(i,t,r,o,s,"next",l)}function s(l){Ui(i,t,r,o,s,"throw",l)}o(void 0)})}}var $n=new Map,Hi=!1;function ah(n){return new Promise(function(a,e){var t=new FileReader;t.onload=function(){return a(t.result)},t.onerror=e,t.readAsDataURL(n)})}function rh(n){if(!$n.has(n)){var a=fetch(n).then(function(e){return e.blob()}).then(ah).catch(function(){return $n.delete(n),null});$n.set(n,a)}return $n.get(n)}function ih(n){return Na.apply(this,arguments)}function Na(){return Na=Ct(Re().m(function n(a){var e,t,r;return Re().w(function(i){for(;;)switch(i.n){case 0:return e=document.createElement("div"),e.innerHTML=a,t=Array.from(e.querySelectorAll("img[src]")),r=t.filter(function(o){return!o.getAttribute("src").startsWith("data:")}),i.n=1,Promise.all(r.map((function(){var o=Ct(Re().m(function s(l){var u;return Re().w(function(d){for(;;)switch(d.n){case 0:return d.n=1,rh(l.getAttribute("src"));case 1:u=d.v,u&&l.setAttribute("src",u);case 2:return d.a(2)}},s)}));return function(s){return o.apply(this,arguments)}})()));case 1:return i.a(2,e.innerHTML)}},n)})),Na.apply(this,arguments)}function $i(n){return Wa.apply(this,arguments)}function Wa(){return Wa=Ct(Re().m(function n(a){var e,t,r,i,o,s,l,u,d,h,c,f,g,v=arguments;return Re().w(function(y){for(;;)switch(y.n){case 0:if(e=v.length>1&&v[1]!==void 0?v[1]:1,t=a instanceof SVGElement?new XMLSerializer().serializeToString(a):a,r=new DOMParser,i=r.parseFromString(t,"image/svg+xml"),o=i.querySelector("svg"),o){y.n=1;break}return y.a(2,null);case 1:if(s=parseFloat(o.getAttribute("width")||""),l=parseFloat(o.getAttribute("height")||""),(!(s>0)||!(l>0))&&(u=o.getAttribute("viewBox"),u&&(d=u.trim().split(/[\s,]+/),s=parseFloat(d[2]),l=parseFloat(d[3]))),!(!(s>0)||!(l>0))){y.n=2;break}return console.warn("Sigma: SVG label attachment has no parseable dimensions \u2014 skipped."),y.a(2,null);case 2:return h=Math.ceil(s*e),c=Math.ceil(l*e),f=new Blob([t],{type:"image/svg+xml"}),g=URL.createObjectURL(f),y.a(2,new Promise(function(p){var m=new Image;m.onload=function(){var b=document.createElement("canvas");b.width=h,b.height=c,b.getContext("2d").drawImage(m,0,0,h,c),URL.revokeObjectURL(g);try{b.getContext("2d").getImageData(0,0,1,1)}catch(_){if(_ instanceof DOMException&&_.name==="SecurityError"){Hi||(Hi=!0,console.warn('Sigma: A label attachment was skipped because the rendered canvas is tainted. SVG with (used by the "html" attachment type) is blocked in Chromium and Safari. Use type: "canvas" with Canvas 2D rendering instead.')),p(null);return}throw _}p(b)},m.onerror=function(){URL.revokeObjectURL(g),p(null)},m.src=g}))}},n)})),Wa.apply(this,arguments)}function oh(n,a){var e=document.createElement("div");e.style.cssText="position:fixed;left:-99999px;top:0;visibility:hidden;width:max-content;height:max-content",e.innerHTML=(a?""):"")+n,document.body.appendChild(e);var t=e.getBoundingClientRect(),r=t.width,i=t.height;return document.body.removeChild(e),{width:Math.ceil(r),height:Math.ceil(i)}}function sh(n,a,e,t){return Oa.apply(this,arguments)}function Oa(){return Oa=Ct(Re().m(function n(a,e,t,r){var i,o,s,l,u,d,h,c,f=arguments;return Re().w(function(g){for(;;)switch(g.n){case 0:return i=f.length>4&&f[4]!==void 0?f[4]:1,o=a instanceof HTMLElement?a.outerHTML:a,g.n=1,ih(o);case 1:return s=g.v,(t==null||r==null)&&(l=oh(s,e),t=t??l.width,r=r??l.height),u=Math.ceil(t*i),d=Math.ceil(r*i),h=e?""):"",c='')+'')+''.concat(h).concat(s,"")+"",g.a(2,$i(c,1))}},n)})),Oa.apply(this,arguments)}function lh(n){return Ba.apply(this,arguments)}function Ba(){return Ba=Ct(Re().m(function n(a){var e,t=arguments,r;return Re().w(function(i){for(;;)switch(i.n){case 0:e=t.length>1&&t[1]!==void 0?t[1]:1,r=a.type,i.n=r==="canvas"?1:r==="svg"?2:r==="html"?3:4;break;case 1:return i.a(2,a.canvas);case 2:return i.a(2,$i(a.svg,e));case 3:return i.a(2,sh(a.html,a.css,a.width,a.height,e));case 4:return i.a(2)}},n)})),Ba.apply(this,arguments)}var it=2,Vn=7,uh=["u_matrix","u_resolution","u_labelPixelSnapping","u_sizeRatio","u_correctionRatio","u_cameraAngle","u_nodeDataTexture","u_nodeDataTextureWidth","u_atlasTexture"],dh=`#version 300 es +precision highp float; + +// Camera / viewport +uniform mat3 u_matrix; +uniform vec2 u_resolution; +uniform float u_labelPixelSnapping; +uniform float u_sizeRatio; +uniform float u_correctionRatio; +uniform float u_cameraAngle; + +// Data textures +uniform sampler2D u_nodeDataTexture; +uniform float u_nodeDataTextureWidth; + +// Atlas (size is fixed at 2048\xD72048 \u2014 matches AttachmentManager.ATLAS_SIZE) +uniform sampler2D u_atlasTexture; +const vec2 u_atlasSize = vec2(2048.0); + +// Per-instance +in float a_nodeIndex; +in vec4 a_atlasRect; // x, y, width, height in atlas pixels +in vec2 a_attachmentSize; // pixel dimensions of attachment image +in float a_positionMode; // label position: 0=right, 1=left, 2=above, 3=below, 4=over +in float a_attachmentPlacement; // 0=below, 1=above, 2=left, 3=right (relative to label) +in float a_labelWidth; // label width in pixels +in float a_labelHeight; // label height in pixels +in float a_labelAngle; // label rotation angle + +// Per-vertex (constant) +in vec2 a_quadCorner; // [-1,-1], [1,-1], [-1,1], [1,1] + +out vec2 v_texCoord; + +`.concat(Zt,` +`).concat(Ti,` + +void main() { + // Read node data from texture + float texIdx = a_nodeIndex - 1.0; + float texWidth = u_nodeDataTextureWidth; + float col = mod(texIdx, texWidth); + float row = floor(texIdx / texWidth); + vec4 nodeData = texelFetch(u_nodeDataTexture, ivec2(int(col), int(row)), 0); + vec2 nodePos = nodeData.xy; + float nodeSize = nodeData.z; + + // Node position in NDC + vec3 projected = u_matrix * vec3(nodePos, 1.0); + vec2 posNDC = projected.xy; + + // Node radius in pixels (matches label program logic) + float matrixScaleX = length(vec2(u_matrix[0][0], u_matrix[1][0])); + float nodeRadiusGraphSpace = nodeSize * u_correctionRatio / u_sizeRatio * 2.0; + float nodeRadiusNDC = nodeRadiusGraphSpace * matrixScaleX; + float nodeRadiusPixels = nodeRadiusNDC * u_resolution.x / 2.0; + + // Approximate edge distance (circle assumption): + float edgeDist = nodeRadiusPixels; + float margin = 4.0; + + // Label direction in screen space (Y-down) + vec2 labelDir = getLabelDirection(a_positionMode); + + // ----------------------------------------------------------------------- + // Step 1: Compute the label bounding box top-left corner (in screen pixels + // from node center), matching the label program's alignment logic. + // ----------------------------------------------------------------------- + float offsetDist = edgeDist + margin; + vec2 posOffset = labelDir * offsetDist; // offset from node center to label anchor + + // Label top-left corner relative to node center (screen pixels, Y-down) + vec2 labelTopLeft; + if (a_positionMode < 0.5) { + // Right: label left edge at posOffset.x, vertically centered + labelTopLeft = vec2(posOffset.x, -a_labelHeight / 2.0); + } else if (a_positionMode < 1.5) { + // Left: label right edge at posOffset.x (label extends left) + labelTopLeft = vec2(posOffset.x - a_labelWidth, -a_labelHeight / 2.0); + } else if (a_positionMode < 2.5) { + // Above: horizontally centered, bottom edge at posOffset.y + labelTopLeft = vec2(-a_labelWidth / 2.0, posOffset.y - a_labelHeight); + } else if (a_positionMode < 3.5) { + // Below: horizontally centered, top edge at posOffset.y + labelTopLeft = vec2(-a_labelWidth / 2.0, posOffset.y); + } else { + // Over: centered on node + labelTopLeft = vec2(-a_labelWidth / 2.0, -a_labelHeight / 2.0); + } + + // Label center + vec2 labelCenter = labelTopLeft + vec2(a_labelWidth, a_labelHeight) / 2.0; + + // ----------------------------------------------------------------------- + // Step 2: Compute the attachment center relative to the label center, + // based on the attachment placement direction. + // ----------------------------------------------------------------------- + float gap = `).concat(it.toFixed(1),`; + vec2 attachCenter; + + if (a_attachmentPlacement < 0.5) { + // Below: left-align with label + attachCenter = vec2( + labelTopLeft.x + a_attachmentSize.x / 2.0, + labelCenter.y + a_labelHeight / 2.0 + gap + a_attachmentSize.y / 2.0 + ); + } else if (a_attachmentPlacement < 1.5) { + // Above: left-align with label + attachCenter = vec2( + labelTopLeft.x + a_attachmentSize.x / 2.0, + labelCenter.y - (a_labelHeight / 2.0 + gap + a_attachmentSize.y / 2.0) + ); + } else if (a_attachmentPlacement < 2.5) { + // Left: top-align with label + attachCenter = vec2( + labelCenter.x - (a_labelWidth / 2.0 + gap + a_attachmentSize.x / 2.0), + labelTopLeft.y + a_attachmentSize.y / 2.0 + ); + } else { + // Right: top-align with label + attachCenter = vec2( + labelCenter.x + (a_labelWidth / 2.0 + gap + a_attachmentSize.x / 2.0), + labelTopLeft.y + a_attachmentSize.y / 2.0 + ); + } + + // ----------------------------------------------------------------------- + // Step 3: Apply label angle rotation and compute final position. + // ----------------------------------------------------------------------- + mat2 rotMat = rotate2D(a_labelAngle); + + vec2 rotatedCenter = rotMat * attachCenter; + vec2 halfSize = a_attachmentSize / 2.0; + vec2 cornerOffset = rotMat * (a_quadCorner * halfSize); + + // Work in screen pixels (Y-down) so we can snap to the pixel grid. + // NDC \u2192 screen: screenX = (ndc+1)*res/2, screenY = (1-ndc)*res/2 + vec2 nodeScreen = vec2( + (posNDC.x + 1.0) * u_resolution.x * 0.5, + (1.0 - posNDC.y) * u_resolution.y * 0.5 + ); + + // Snap node center to pixel grid so label/backdrop/attachment move as a unit + vec2 snapDelta = (round(nodeScreen) - nodeScreen) * u_labelPixelSnapping; + + // Snap the quad's top-left corner to integer pixel boundaries so atlas + // texels map 1:1 to device pixels (prevents LINEAR filtering blur). + vec2 centerScreen = nodeScreen + rotatedCenter + snapDelta; + vec2 topLeft = centerScreen - halfSize; + topLeft = mix(topLeft, round(topLeft), u_labelPixelSnapping); + centerScreen = topLeft + halfSize; + + vec2 vertexScreen = centerScreen + cornerOffset; + + // Screen \u2192 NDC + gl_Position = vec4( + vertexScreen.x * 2.0 / u_resolution.x - 1.0, + 1.0 - vertexScreen.y * 2.0 / u_resolution.y, + 0.0, 1.0 + ); + + // Texture coordinates: map from atlas rect + vec2 texOrigin = a_atlasRect.xy / u_atlasSize; + vec2 texSize = a_atlasRect.zw / u_atlasSize; + vec2 uv = (a_quadCorner + 1.0) / 2.0; + v_texCoord = texOrigin + uv * texSize; +} +`),hh=`#version 300 es +precision highp float; + +uniform sampler2D u_atlasTexture; + +in vec2 v_texCoord; + +layout(location = 0) out vec4 fragColor; +#ifdef PICKING_MODE +layout(location = 1) out vec4 pickColor; +#endif + +void main() { + // Canvas textures are premultiplied; output directly for (ONE, 1-SRC_ALPHA) blending + vec4 color = texture(u_atlasTexture, v_texCoord); + if (color.a < 0.01) discard; + fragColor = color; +#ifdef PICKING_MODE + pickColor = vec4(0.0); // Attachments are not pickable +#endif +} +`,Vi={below:0,above:1,left:2,right:3},ji=(function(n){function a(){var e;j(this,a);for(var t=arguments.length,r=new Array(t),i=0;ithis.bufferCapacity&&(this.bufferCapacity=Math.max(t,Math.ceil(this.bufferCapacity*1.5)||10),pe(a,"reallocate",this,3)([this.bufferCapacity]))}},{key:"hasNothingToRender",value:function(){return this.totalCount===0}},{key:"drawWebGL",value:function(t,r){var i=r.gl;this.totalCount!==0&&i.drawArraysInstanced(t,0,this.VERTICES,this.totalCount)}}])})(rt),Rt=2048,qi=(function(){function n(a,e,t){j(this,n),D(this,"cache",new Map),D(this,"pending",new Set),D(this,"atlas",{}),D(this,"glTexture",null),D(this,"dirty",!0),this.gl=a,this.renderers=e,this.scheduleRender=t,this.packCanvas=document.createElement("canvas"),this.packCanvas.width=Rt,this.packCanvas.height=Rt,this.packCtx=this.packCanvas.getContext("2d")}return q(n,[{key:"renderAttachment",value:function(e,t,r){var i=this,o="".concat(e,":").concat(t);if(!(this.cache.has(o)||this.pending.has(o))){var s=this.renderers[t];if(s){var l=s(r);if(l){this.pending.add(o);var u=r.pixelRatio;Promise.resolve(l).then((function(){var d=Ct(Re().m(function h(c){var f;return Re().w(function(g){for(;;)switch(g.n){case 0:if(i.pending.has(o)){g.n=1;break}return g.a(2);case 1:if(i.pending.delete(o),c){g.n=2;break}return g.a(2);case 2:return g.n=3,lh(c,u);case 3:if(f=g.v,!(!f||f.width===0||f.height===0)){g.n=4;break}return g.a(2);case 4:i.cache.set(o,{image:f,width:f.width,height:f.height}),i.dirty=!0,i.scheduleRender();case 5:return g.a(2)}},h)}));return function(h){return d.apply(this,arguments)}})())}}}}},{key:"regenerateAtlas",value:function(){if(this.dirty){this.dirty=!1;var e=[];if(this.cache.forEach(function(u,d){e.push({key:d,width:u.width,height:u.height,draw:function(c,f,g){c.drawImage(u.image,f,g)}})}),e.length===0){this.atlas={},this.deleteGLTexture();return}var t={x:0,y:0,rowHeight:0,maxRowWidth:0};this.packCtx.clearRect(0,0,Rt,Rt);var r=Bi(e,this.packCtx,t),i=r.atlas,o=r.remaining;this.atlas=i,o.length>0&&console.warn("Sigma: ".concat(o.length," label attachment(s) could not fit in the ").concat(Rt,"x").concat(Rt," atlas and will not be rendered.")),this.deleteGLTexture();var s=this.gl,l=s.createTexture();s.activeTexture(s.TEXTURE0+Vn),s.bindTexture(s.TEXTURE_2D,l),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,this.packCanvas),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),this.glTexture=l}}},{key:"bindTexture",value:function(e){if(this.glTexture){var t=this.gl;t.activeTexture(t.TEXTURE0+e),t.bindTexture(t.TEXTURE_2D,this.glTexture)}}},{key:"getEntry",value:function(e,t){var r="".concat(e,":").concat(t);return this.atlas[r]||null}},{key:"invalidateNode",value:function(e){var t="".concat(e,":"),r=F(this.cache.keys()),i;try{for(r.s();!(i=r.n()).done;){var o=i.value;o.startsWith(t)&&(this.cache.delete(o),this.dirty=!0)}}catch(d){r.e(d)}finally{r.f()}var s=F(this.pending),l;try{for(s.s();!(l=s.n()).done;){var u=l.value;u.startsWith(t)&&this.pending.delete(u)}}catch(d){s.e(d)}finally{s.f()}}},{key:"clear",value:function(){this.cache.clear(),this.pending.clear(),this.atlas={},this.dirty=!0,this.deleteGLTexture()}},{key:"kill",value:function(){this.clear(),this.packCanvas=null,this.packCtx=null,this.gl=null}},{key:"deleteGLTexture",value:function(){this.glTexture&&(this.gl.deleteTexture(this.glTexture),this.glTexture=null)}}])})(),Ua=(function(){function n(a){j(this,n),D(this,"buckets",new Map),D(this,"keyDepth",new Map);var e=F(a),t;try{for(e.s();!(t=e.n()).done;){var r=t.value;this.buckets.set(r,new Set)}}catch(i){e.e(i)}finally{e.f()}}return q(n,[{key:"has",value:function(e){return this.keyDepth.has(e)}},{key:"getBucket",value:function(e){return this.buckets.get(e)}},{key:"set",value:function(e,t){var r,i=this.keyDepth.get(e);if(i!==t){var o=this.buckets.get(t);if(!o)throw new Error('Sigma: "'.concat(t,'" is not a declared depth layer'));i!==void 0&&((r=this.buckets.get(i))===null||r===void 0||r.delete(e)),o.add(e),this.keyDepth.set(e,t)}}},{key:"remove",value:function(e){var t=this.keyDepth.get(e);t!==void 0&&(this.buckets.get(t).delete(e),this.keyDepth.delete(e))}},{key:"clearAll",value:function(){var e=F(this.buckets.values()),t;try{for(e.s();!(t=e.n()).done;){var r=t.value;r.clear()}}catch(i){e.e(i)}finally{e.f()}this.keyDepth.clear()}},{key:"getSorted",value:function(e,t){var r=this.buckets.get(e);return!r||r.size===0?[]:V(r).sort(function(i,o){return t(i)-t(o)})}}])})(),Xi=(function(n){function a(e,t){return j(this,a),te(this,a,[e,1,t])}return ne(a,n),q(a,[{key:"updateNode",value:function(t,r,i,o,s){var l=this.indexMap.get(t);if(l===void 0)throw new Error('Node "'.concat(t,'" not allocated in NodeDataTexture'));var u=l*4;this.data[u]=r,this.data[u+1]=i,this.data[u+2]=o,this.data[u+3]=s,this.markDirty(l)}}])})(On),Yi=(function(n){function a(e,t){return j(this,a),te(this,a,[e,2,t])}return ne(a,n),q(a,[{key:"updateEdge",value:function(t,r,i,o,s,l){var u=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0,d=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0,h=arguments.length>8&&arguments[8]!==void 0?arguments[8]:0,c=this.indexMap.get(t);if(c===void 0)throw new Error('Edge "'.concat(t,'" not allocated in EdgeDataTexture'));var f=c*this.TEXELS_PER_ITEM*4;this.data[f+0]=r,this.data[f+1]=i,this.data[f+2]=o,this.data[f+3]=0,this.data[f+4]=s,this.data[f+5]=l,this.data[f+6]=u,this.data[f+7]=(d&15)<<4|h&15,this.markDirty(c)}}])})(On);function ch(n){return X(n)==="object"&&"uniforms"in n&&Array.isArray(n.uniforms)}function fh(n){return X(n)==="object"&&"uniforms"in n&&"attributes"in n&&"glsl"in n}function gh(n){return X(n)==="object"&&"uniforms"in n&&"attributes"in n&&"segments"in n}function vh(n){return X(n)==="object"&&"uniforms"in n&&"attributes"in n&&"length"in n}function ph(n){return X(n)==="object"&&"uniforms"in n&&"attributes"in n&&"glsl"in n}function mh(n){return X(n)==="object"&&"glsl"in n&&"name"in n&&!("uniforms"in n)}function yh(n){return X(n)==="object"&&"glsl"in n&&"name"in n&&!("uniforms"in n)}function bh(n){return X(n)==="object"&&"glsl"in n&&"name"in n&&!("uniforms"in n)}function xh(n){if(ch(n))return n;if(mh(n))return{name:n.name,glsl:n.glsl,inradiusFactor:n.inradiusFactor,uniforms:[]};throw new Error("Invalid node shape specification: ".concat(JSON.stringify(n)))}function _h(n){if(fh(n))return n;if(Wr(n))return{name:n.name,glsl:n.glsl,uniforms:[],attributes:[]};throw new Error("Invalid node layer specification: ".concat(JSON.stringify(n)))}function Th(n){if(gh(n))return n;if(yh(n))return{name:n.name,glsl:n.glsl,segments:n.segments,uniforms:[],attributes:[]};throw new Error("Invalid edge path specification: ".concat(JSON.stringify(n)))}function Sh(n){if(ph(n))return n;if(Or(n))return{name:n.name,glsl:n.glsl,uniforms:[],attributes:[]};throw new Error("Invalid edge layer specification: ".concat(JSON.stringify(n)))}function Eh(n){if(vh(n))return n;if(bh(n))return{name:n.name,glsl:n.glsl,length:n.length,widthFactor:n.widthFactor,margin:0,uniforms:[],attributes:[]};throw new Error("Invalid edge extremity specification: ".concat(JSON.stringify(n)))}function wh(n){var a,e,t=(a=n?.shapes)!==null&&a!==void 0?a:Tn.shapes,r=(e=n?.layers)!==null&&e!==void 0?e:Tn.layers,i=t.map(xh),o=r.map(_h);if(i.length===0)throw new Error("At least one node shape must be specified.");if(o.length===0)throw new Error("At least one node layer must be specified.");return{shapes:i,layers:o}}function Ah(n){var a,e,t,r=(a=n?.paths)!==null&&a!==void 0?a:$t.paths,i=(e=n?.extremities)!==null&&e!==void 0?e:$t.extremities,o=(t=n?.layers)!==null&&t!==void 0?t:$t.layers,s=r.map(Th),l=i.map(Eh).filter(function(d){return d!==null}),u=o.map(Sh);if(s.length===0)throw new Error("At least one edge path must be specified.");if(u.length===0)throw new Error("At least one edge layer must be specified.");return{paths:s,extremities:l,layers:u}}function Ki(n){var a=wh(n),e=a.shapes,t=a.layers,r=n?.variables||{},i=Li({shapes:e,layers:t,rotateWithCamera:n?.rotateWithCamera,label:n?.label,backdrop:n?.backdrop});return{program:i,variables:r}}function Zi(n){var a=Ah(n),e=a.paths,t=a.extremities,r=a.layers,i={},o=F(e),s;try{for(o.s();!(s=o.n()).done;){var l=s.value;l.variables&&Object.assign(i,l.variables)}}catch(d){o.e(d)}finally{o.f()}Object.assign(i,n?.variables||{});var u=Oi({paths:e,extremities:t,layers:r,defaultHead:n?.defaultHead,defaultTail:n?.defaultTail,label:n?.label});return{program:u,variables:i,paths:e}}var qf=Ye(Nt()),Xf=Ye(Ue());var jn=1.5,Qi=(function(n){function a(){var e;return j(this,a),e=te(this,a),D(e,"x",.5),D(e,"y",.5),D(e,"angle",0),D(e,"ratio",1),D(e,"minRatio",null),D(e,"maxRatio",null),D(e,"enabledZooming",!0),D(e,"enabledPanning",!0),D(e,"enabledRotation",!0),D(e,"clean",null),D(e,"nextFrame",null),D(e,"previousState",null),D(e,"enabled",!0),D(e,"currentAnimationFrom",null),D(e,"currentAnimationTo",null),e.previousState=e.getState(),e}return ne(a,n),q(a,[{key:"enable",value:function(){return this.enabled=!0,this}},{key:"disable",value:function(){return this.enabled=!1,this}},{key:"getState",value:function(){return{x:this.x,y:this.y,angle:this.angle,ratio:this.ratio}}},{key:"hasState",value:function(t){return this.x===t.x&&this.y===t.y&&this.ratio===t.ratio&&this.angle===t.angle}},{key:"getPreviousState",value:function(){var t=this.previousState;return t?{x:t.x,y:t.y,angle:t.angle,ratio:t.ratio}:null}},{key:"getBoundedRatio",value:function(t){var r=t;return typeof this.minRatio=="number"&&(r=Math.max(r,this.minRatio)),typeof this.maxRatio=="number"&&(r=Math.min(r,this.maxRatio)),r}},{key:"validateState",value:function(t){var r={};return this.enabledPanning&&typeof t.x=="number"&&(r.x=t.x),this.enabledPanning&&typeof t.y=="number"&&(r.y=t.y),this.enabledZooming&&typeof t.ratio=="number"&&(r.ratio=this.getBoundedRatio(t.ratio)),this.enabledRotation&&typeof t.angle=="number"&&(r.angle=t.angle),this.clean?this.clean(M(M({},this.getState()),r)):r}},{key:"isAnimated",value:function(){return!!this.nextFrame}},{key:"setState",value:function(t){if(!this.enabled)return this;this.previousState=this.getState();var r=this.validateState(t);return typeof r.x=="number"&&(this.x=r.x),typeof r.y=="number"&&(this.y=r.y),typeof r.ratio=="number"&&(this.ratio=r.ratio),typeof r.angle=="number"&&(this.angle=r.angle),this.hasState(this.previousState)||this.emit("updated",this.getState()),this}},{key:"updateState",value:function(t){return this.setState(t(this.getState())),this}},{key:"animate",value:function(t){var r=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;if(!o)return new Promise(function(v){return r.animate(t,i,v)});if(this.enabled){var s=M(M({},ai),i),l=this.validateState(t),u=_n(s.easing),d=Date.now(),h=this.getState(),c=M(M({},h),l),f=function(){var y=(Date.now()-d)/s.duration;if(y>=1){r.nextFrame=null,r.setState(l),r.emitAnimationEnd(!0),r.animationCallback&&(r.animationCallback.call(null),r.animationCallback=void 0);return}var p=u(y),m={};typeof l.x=="number"&&(m.x=h.x+(l.x-h.x)*p),typeof l.y=="number"&&(m.y=h.y+(l.y-h.y)*p),r.enabledRotation&&typeof l.angle=="number"&&(m.angle=h.angle+(l.angle-h.angle)*p),typeof l.ratio=="number"&&(m.ratio=h.ratio+(l.ratio-h.ratio)*p),r.setState(m),r.nextFrame=requestAnimationFrame(f)},g=this.nextFrame!==null;g&&(cancelAnimationFrame(this.nextFrame),this.nextFrame=null,this.emitAnimationEnd(!1),this.animationCallback&&this.animationCallback.call(null)),this.currentAnimationFrom=h,this.currentAnimationTo=c,this.animationCallback=o,this.emit("animationStart",h,c),g?this.nextFrame=requestAnimationFrame(f):f()}}},{key:"emitAnimationEnd",value:function(t){var r=this.currentAnimationFrom,i=this.currentAnimationTo;!r||!i||(this.currentAnimationFrom=null,this.currentAnimationTo=null,this.emit("animationEnd",r,i,t))}},{key:"animatedZoom",value:function(t){return t?typeof t=="number"?this.animate({ratio:this.ratio/t}):this.animate({ratio:this.ratio/(t.factor||jn)},t):this.animate({ratio:this.ratio/jn})}},{key:"animatedUnzoom",value:function(t){return t?typeof t=="number"?this.animate({ratio:this.ratio*t}):this.animate({ratio:this.ratio*(t.factor||jn)},t):this.animate({ratio:this.ratio*jn})}},{key:"animatedReset",value:function(t){return this.animate({x:.5,y:.5,ratio:1,angle:0},t)}},{key:"copy",value:function(){return a.from(this.getState())}}],[{key:"from",value:function(t){var r=new a;return r.setState(t)}}])})(Cn);function Ce(n,a){var e=a.getBoundingClientRect();return{x:n.clientX-e.left,y:n.clientY-e.top}}function $e(n,a){var e=M(M({},Ce(n,a)),{},{sigmaDefaultPrevented:!1,preventSigmaDefault:function(){e.sigmaDefaultPrevented=!0},original:n});return e}function pt(n){var a="x"in n?n:M(M({},n.touches[0]||n.previousTouches[0]),{},{original:n.original,sigmaDefaultPrevented:n.sigmaDefaultPrevented,preventSigmaDefault:function(){n.sigmaDefaultPrevented=!0,a.sigmaDefaultPrevented=!0}});return a}function Dh(n,a){return M(M({},$e(n,a)),{},{delta:lo(n)})}var Rh=2;function Xn(n){for(var a=[],e=0,t=Math.min(n.length,Rh);e0;r.draggedEvents=0,h&&r.renderer.getSetting("hideEdgesOnMove")&&r.renderer.refresh()},0),this.emit("mouseup",$e(t,this.container))}}},{key:"handleMove",value:function(t){var r=this;if(this.enabled){var i=$e(t,this.container);if(this.emit("mousemovebody",i),(t.target===this.container||t.composedPath()[0]===this.container)&&this.emit("mousemove",i),this.isMouseDown&&this.draggedEvents++,!i.sigmaDefaultPrevented){if(this.isMouseDown){this.isMoving=!0,typeof this.movingTimeout=="number"&&clearTimeout(this.movingTimeout),this.movingTimeout=window.setTimeout(function(){r.movingTimeout=null,r.isMoving=!1},this.settings.dragTimeout);var o=this.renderer.getCamera(),s=Ce(t,this.container),l=s.x,u=s.y,d=this.renderer.viewportToFramedGraph({x:this.lastMouseX,y:this.lastMouseY}),h=this.renderer.viewportToFramedGraph({x:l,y:u}),c=d.x-h.x,f=d.y-h.y,g=o.getState(),v=g.x+c,y=g.y+f;this.isPanningStage||(this.isPanningStage=!0,this.renderer._setPanning(!0)),o.setState({x:v,y}),this.lastMouseX=l,this.lastMouseY=u,t.preventDefault(),t.stopPropagation()}if(this.isRightMouseDown){var p=Ce(t,this.container),m=p.x,b=p.y,_=this.container.offsetWidth/2,x=this.container.offsetHeight/2,S=Math.atan2(b-x,m-_),E=S-this.startRotationAngle,w=this.renderer.getCamera();w.setState({angle:this.startCameraAngle+E}),t.preventDefault(),t.stopPropagation()}}}}},{key:"handleLeave",value:function(t){this.emit("mouseleave",$e(t,this.container))}},{key:"handleEnter",value:function(t){this.emit("mouseenter",$e(t,this.container))}},{key:"handleWheel",value:function(t){var r=this,i=this.renderer.getCamera();if(!(!this.enabled||!i.enabledZooming)){var o=lo(t);if(o){var s=Dh(t,this.container);if(this.emit("wheel",s),s.sigmaDefaultPrevented){t.preventDefault(),t.stopPropagation();return}var l=this.settings,u=l.enableScrollBlocking,d=l.scrollBlockingReleaseThreshold,h=i.getState().ratio,c=o>0?1/this.settings.zoomingRatio:this.settings.zoomingRatio,f=i.getBoundedRatio(h*c),g=o>0?1:-1,v=Date.now(),y=h===f;y?this.consecutiveBoundaryWheelEvents++:this.consecutiveBoundaryWheelEvents=0;var p=u&&(!y||this.consecutiveBoundaryWheelEvents<=d);p&&(t.preventDefault(),t.stopPropagation()),!y&&(this.currentWheelDirection===g&&this.lastWheelTriggerTime&&v-this.lastWheelTriggerTimet.size?-1:e.sizet.key?1:-1}}])})(),ro=(function(){function n(){j(this,n),D(this,"width",0),D(this,"height",0),D(this,"cellSize",0),D(this,"columns",0),D(this,"rows",0),D(this,"cells",{})}return q(n,[{key:"resizeAndClear",value:function(e,t){this.width=e.width,this.height=e.height,this.cellSize=t,this.columns=Math.ceil(e.width/t),this.rows=Math.ceil(e.height/t),this.cells={}}},{key:"getIndex",value:function(e){var t=Math.floor(e.x/this.cellSize),r=Math.floor(e.y/this.cellSize);return r*this.columns+t}},{key:"add",value:function(e,t,r){var i=new ao(e,t),o=this.getIndex(r),s=this.cells[o];s||(s=[],this.cells[o]=s),s.push(i)}},{key:"organize",value:function(){for(var e in this.cells){var t=this.cells[e];t.sort(ao.compare)}}},{key:"getLabelsToDisplay",value:function(e,t,r){var i=this.cellSize*this.cellSize,o=i/e/e,s=o*t/i,l=Math.ceil(s),u=[];if(r)for(var d=Math.max(0,Math.floor(r.x1/this.cellSize)),h=Math.min(this.columns-1,Math.floor(r.x2/this.cellSize)),c=Math.max(0,Math.floor(r.y1/this.cellSize)),f=Math.min(this.rows-1,Math.floor(r.y2/this.cellSize)),g=c;g<=f;g++)for(var v=d;v<=h;v++){var y=g*this.columns+v,p=this.cells[y];if(p)for(var m=0;mh||C.yf)){var L=this.internals.framedGraphToViewport(C),k=L.x,I=L.y,z=this.internals.scaleSize(C.size);C.labelVisibility!=="visible"&&zr+kt+z||I<-It-z||I>i+It+z||this.displayedNodeLabels.add(P)}}}},{key:"renderWebGLLabels",value:function(e,t){var r,i,o,s=this.internals,l=s.nodeDataCache,u=s.labelProgram,d=s.primitives,h=s.nodeDataTexture,c=[],f=F(this.displayedNodeLabels),g;try{for(f.s();!(g=f.n()).done;){var v=g.value;if(!this.renderedNodeLabels.has(v)){var y=l[v];t&&y.labelDepth!==t||(this.renderedNodeLabels.add(v),c.push(v))}}}catch(Pe){f.e(Pe)}finally{f.f()}if(u){for(var p=0,m=0,b=c.length;m2&&arguments[2]!==void 0?arguments[2]:{};j(this,a),d=te(this,a),D(d,"nodeReducer",null),D(d,"edgeReducer",null),D(d,"stageCanvas",null),D(d,"mouseLayer",null),D(d,"extraElements",{}),D(d,"webGLContext",null),D(d,"pickingFrameBuffer",null),D(d,"pickingTexture",null),D(d,"pickingDepthBuffer",null),D(d,"activeListeners",{}),D(d,"nodeVariableEntries",[]),D(d,"edgeVariableEntries",[]),D(d,"edgePathsByName",new Map),D(d,"nodeProgramIndex",{}),D(d,"edgeProgramIndex",{}),D(d,"edgeTextureIndexCache",{}),D(d,"nodeGraphCoords",{}),D(d,"nodeExtent",{x:[0,1],y:[0,1]}),D(d,"matrix",Ge()),D(d,"invMatrix",Ge()),D(d,"correctionRatio",1),D(d,"frameId",0),D(d,"customBBox",null),D(d,"normalizationFunction",Ca({x:[0,1],y:[0,1]})),D(d,"graphToViewportRatio",1),D(d,"pickingState",Mh()),D(d,"prevNodeVisibilities",{}),D(d,"width",0),D(d,"height",0),D(d,"autoRescaleFrozen",!1),D(d,"stylesDeclaration",null),D(d,"resolvedStageStyle",{}),D(d,"renderFrame",null),D(d,"pendingProcess","full"),D(d,"needToRefreshState",!1),D(d,"checkEdgesEventsFrame",null),D(d,"edgeStyleAnalysis",{dependency:"static",xAttribute:null,yAttribute:null}),D(d,"depthLayers",V(wn)),D(d,"customLayerPrograms",new Map),D(d,"nodeShapeSlug",null),D(d,"sdfAtlas",null),D(d,"depthRanges",{nodes:{},edges:{}}),D(d,"nodeBaseDepth",{}),D(d,"edgeBaseDepth",{});var c=h.primitives,f=h.styles,g=h.settings,v=g===void 0?{}:g,y=h.nodeReducer,p=h.edgeReducer,m=h.customNodeState,b=h.customEdgeState,_=h.customGraphState;d.stateManager=new Zh(function(){return d.scheduleStateRefresh()},m,b,_);var x=c??Br;d.stylesDeclaration=f?{nodes:(r=f.nodes)!==null&&r!==void 0?r:Dn.nodes,edges:(i=f.edges)!==null&&i!==void 0?i:Dn.edges,stage:f.stage}:Dn,d.nodeReducer=y??null,d.edgeReducer=p??null;var S=xa(d.stylesDeclaration.nodes);d.nodeReducer&&(S.dependency="graph-state"),d.edgeStyleAnalysis=xa(d.stylesDeclaration.edges),d.edgeReducer&&(d.edgeStyleAnalysis.dependency="graph-state"),d.stylesDeclaration.stage&&(d.resolvedStageStyle=Aa(d.stylesDeclaration.stage,d.stateManager.graphState));var E=si(v);if(kn(E),E.enableNodeDrag){var w=S.xAttribute,T=S.yAttribute;if((!w||!T)&&!E.dragPositionToAttributes)throw new Error('Sigma: `enableNodeDrag` is true but position attribute names could not be inferred from styles. Either use attribute bindings for x/y in your node styles (e.g. `x: { attribute: "x" }`), or provide a `dragPositionToAttributes` setting.')}if(ii(e),!(t instanceof HTMLElement))throw new Error("Sigma: container should be an html element.");d.container=t,d.edgeGroups=new Gh(e,function(Y,ge){for(var Be=0;Be0&&(Pe=new qi(L,Ae,function(){return d.scheduleRender()}),Ft=new ji(L,null,C));var zt=Zi(x?.edges),Gt=zt.program,ra=zt.variables,ia=zt.paths;d.edgeVariableEntries=Object.entries(ra),d.edgePathsByName=new Map(ia.map(function(Y){return[Y.name,Y]})),d.edgeProgram=new Gt(L,null,C);var Mt=Gt.LabelProgram,oa=Mt?new Mt(L,null,C):null,on=Gt.LabelBackgroundProgram,sa=on?new on(L,d.pickingFrameBuffer,C):null;return d.internals={nodeDataCache:{},edgeDataCache:{},nodesWithForcedLabels:new Set,nodesWithBackdrop:new Set,edgesWithForcedLabels:new Set,settings:E,primitives:x,pixelRatio:jt(),graph:e,stateManager:d.stateManager,dragManager:R,nodeStyleAnalysis:S,pickingState:d.pickingState,labelProgram:H,edgeLabelProgram:oa,edgeLabelBackgroundProgram:sa,backdropProgram:he,labelBackgroundProgram:be,attachmentManager:Pe,attachmentProgram:Ft,nodeDataTexture:A,edgeDataTexture:P,nodeShapeMap:O,nodeGlobalShapeIds:B,getDimensions:function(){return d.getDimensions()},getGraphDimensions:function(){return d.getGraphDimensions()},getStagePadding:function(){return d.getStagePadding()},getCameraState:function(){return d.camera.getState()},getHitAtPosition:function(ge){return d.getHitAtPosition(ge)},setNodeState:function(ge,Be){return d.setNodeState(ge,Be)},setEdgeState:function(ge,Be){return d.setEdgeState(ge,Be)},updateContainerCursor:function(){return d.updateContainerCursor()},scheduleRefresh:function(){return d.scheduleRefresh()},viewportToFramedGraph:function(ge){return d.viewportToFramedGraph(ge)},viewportToGraph:function(ge){return d.viewportToGraph(ge)},framedGraphToViewport:function(ge){return d.framedGraphToViewport(ge)},scaleSize:function(ge){return d.scaleSize(ge)},emit:function(ge,Be){return d.emit(ge,Be)}},d.labelRenderer=new Kh(d.internals),d.resize(),d.initializeWebGLLabels(),d.camera=new Qi,d.bindCameraHandlers(),d.mouseCaptor=new Ph(d.mouseLayer,d),d.mouseCaptor.setSettings(d.internals.settings),d.touchCaptor=new Fh(d.mouseLayer,d),d.touchCaptor.setSettings(d.internals.settings),d.bindEventHandlers(),d.bindGraphHandlers(),d.handleSettingsUpdate(),d.refresh(),d}return ne(a,n),q(a,[{key:"initializeWebGLLabels",value:function(){this.sdfAtlas=new gt,this.sdfAtlas.registerFont({family:"sans-serif",weight:"normal",style:"normal"})}},{key:"resetWebGLTexture",value:function(){var t=this.webGLContext;if(!this.pickingFrameBuffer)return this;var r=Math.ceil(this.width*this.internals.pixelRatio/this.internals.settings.pickingDownSizingRatio),i=Math.ceil(this.height*this.internals.pixelRatio/this.internals.settings.pickingDownSizingRatio);t.bindFramebuffer(t.FRAMEBUFFER,this.pickingFrameBuffer),this.pickingTexture&&t.deleteTexture(this.pickingTexture);var o=t.createTexture();o&&(t.bindTexture(t.TEXTURE_2D,o),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r,i,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,o,0),this.pickingTexture=o),this.pickingDepthBuffer&&t.deleteRenderbuffer(this.pickingDepthBuffer);var s=t.createRenderbuffer();return s&&(t.bindRenderbuffer(t.RENDERBUFFER,s),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,r,i),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,s),this.pickingDepthBuffer=s),t.bindFramebuffer(t.FRAMEBUFFER,null),this}},{key:"bindCameraHandlers",value:function(){var t=this;return this.activeListeners.camera=function(){t.refreshMatrices(),t.scheduleRender()},this.activeListeners.cameraAnimationStart=function(r,i){r.ratio!==i.ratio&&t.stateManager.setGraphState({isZooming:!0})},this.activeListeners.cameraAnimationEnd=function(){t.stateManager.setGraphState({isZooming:!1})},this.camera.on("updated",this.activeListeners.camera),this.camera.on("animationStart",this.activeListeners.cameraAnimationStart),this.camera.on("animationEnd",this.activeListeners.cameraAnimationEnd),this}},{key:"unbindCameraHandlers",value:function(){return this.camera.removeListener("updated",this.activeListeners.camera),this.camera.removeListener("animationStart",this.activeListeners.cameraAnimationStart),this.camera.removeListener("animationEnd",this.activeListeners.cameraAnimationEnd),this}},{key:"getHitAtPosition",value:function(t){var r,i=this.webGLContext;i.bindFramebuffer(i.FRAMEBUFFER,this.pickingFrameBuffer);var o=Rr(i,this.pickingFrameBuffer,t.x,t.y,this.internals.pixelRatio,this.internals.settings.pickingDownSizingRatio),s=Dr.apply(void 0,V(o));return(r=this.pickingState.lookup[s])!==null&&r!==void 0?r:null}},{key:"bindEventHandlers",value:function(){return Hh(this.internals,this.mouseCaptor,this.touchCaptor,this.activeListeners),this}},{key:"bindGraphHandlers",value:function(){return $h({graph:this.internals.graph,edgeGroups:this.edgeGroups,addNode:this.addNode.bind(this),updateNode:this.updateNode.bind(this),removeNode:this.removeNode.bind(this),addEdge:this.addEdge.bind(this),updateEdge:this.updateEdge.bind(this),removeEdge:this.removeEdge.bind(this),clearEdgeState:this.clearEdgeState.bind(this),clearNodeState:this.clearNodeState.bind(this),clearEdgeIndices:this.clearEdgeIndices.bind(this),clearNodeIndices:this.clearNodeIndices.bind(this),refresh:this.refresh.bind(this)},this.activeListeners),this}},{key:"unbindGraphHandlers",value:function(){Vh(this.internals.graph,this.activeListeners)}},{key:"getNodeShapeId",value:function(t){return this.internals.nodeShapeMap&&this.internals.nodeGlobalShapeIds&&t.shape&&t.shape in this.internals.nodeShapeMap?this.internals.nodeGlobalShapeIds[this.internals.nodeShapeMap[t.shape]]:vt(t.shape||"circle")}},{key:"processNodes",value:function(){var t=this.internals.graph,r=this.internals.settings,i=this.getDimensions();if((r.autoRescale!=="once"||!this.autoRescaleFrozen)&&(this.nodeExtent=this.computeNodeExtent(),r.autoRescale==="once"&&(this.autoRescaleFrozen=!0)),r.autoRescale===!1){var o=i.width,s=i.height,l=this.nodeExtent,u=l.x,d=l.y;this.nodeExtent={x:[(u[0]+u[1])/2-o/2,(u[0]+u[1])/2+o/2],y:[(d[0]+d[1])/2-s/2,(d[0]+d[1])/2+s/2]}}this.normalizationFunction=Ca(this.customBBox||this.nodeExtent);var h=new Qi,c=ft(h.getState(),i,this.getGraphDimensions(),this.getStagePadding());this.labelRenderer.labelGrid.resizeAndClear(i,r.labelGridCellSize);var f=!1;Ha(this.pickingState,"node");for(var g=t.nodes(),v=0,y=g.length;v1&&arguments[1]!==void 0?arguments[1]:{},i=r.tolerance,o=i===void 0?0:i,s=r.boundaries,l=M({},t),u=s||this.nodeExtent,d=ie(u.x,2),h=d[0],c=d[1],f=ie(u.y,2),g=f[0],v=f[1],y=[this.graphToViewport({x:h,y:g},{cameraState:t}),this.graphToViewport({x:c,y:g},{cameraState:t}),this.graphToViewport({x:h,y:v},{cameraState:t}),this.graphToViewport({x:c,y:v},{cameraState:t})],p=1/0,m=-1/0,b=1/0,_=-1/0;y.forEach(function(L){var k=L.x,I=L.y;p=Math.min(p,k),m=Math.max(m,k),b=Math.min(b,I),_=Math.max(_,I)});var x=m-p,S=_-b,E=this.getDimensions(),w=E.width,T=E.height,R=0,A=0;if(x>=w?mo&&(R=p-o):m>w+o?R=m-(w+o):p<-o&&(R=p+o),S>=T?_o&&(A=b-o):_>T+o?A=_-(T+o):b<-o&&(A=b+o),R||A){var P=this.viewportToFramedGraph({x:0,y:0},{cameraState:t}),C=this.viewportToFramedGraph({x:R,y:A},{cameraState:t});R=C.x-P.x,A=C.y-P.y,l.x+=R,l.y+=A}return l}},{key:"refreshMatrices",value:function(){var t=this.camera.getState(),r=this.getDimensions(),i=this.getGraphDimensions(),o=this.getStagePadding();this.matrix=ft(t,r,i,o),this.invMatrix=ft(t,r,i,o,!0),this.correctionRatio=ri(this.matrix,t,r),this.graphToViewportRatio=this.getGraphToViewportRatio()}},{key:"processData",value:function(){var t;this.emit("beforeProcess"),(t=this.internals.attachmentManager)===null||t===void 0||t.clear();var r=this.processNodes();(this.pendingProcess==="full"||r)&&this.processEdges(),Nh(this.pickingState,this.internals),this.pendingProcess="none",this.emit("afterProcess")}},{key:"render",value:function(){var t=this,r,i,o,s;this.emit("beforeRender");var l=function(){return t.emit("afterRender"),t};if(this.renderFrame&&(cancelAnimationFrame(this.renderFrame),this.renderFrame=null),this.resize(),this.pendingProcess!=="none"&&this.processData(),this.needToRefreshState&&this.refreshState(),this.needToRefreshState=!1,this.stateManager.clearDirtyTracking(),this.pendingProcess!=="none"&&this.processData(),this.clear(),this.resetWebGLTexture(),!this.internals.graph.order)return l();var u=this.mouseCaptor,d=this.camera.isAnimated()||u.isMoving||u.draggedEvents||u.currentWheelDirection;this.refreshMatrices(),this.frameId++;var h=this.getRenderParams(),c=Te.edge.writesPickingThisFrame(this.internals)?h:M(M({},h),{},{pickingFrameBuffer:null});this.labelRenderer.resetFrame();var f=this.webGLContext,g=Math.ceil(this.width*this.internals.pixelRatio/this.internals.settings.pickingDownSizingRatio),v=Math.ceil(this.height*this.internals.pixelRatio/this.internals.settings.pickingDownSizingRatio);f.bindFramebuffer(f.FRAMEBUFFER,this.pickingFrameBuffer),f.viewport(0,0,g,v),f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,this.width*this.internals.pixelRatio,this.height*this.internals.pixelRatio),f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),this.internals.nodeDataTexture.upload(),this.internals.edgeDataTexture.upload(),(r=(i=this.nodeProgram).uploadLayerTexture)===null||r===void 0||r.call(i),(o=this.edgeProgram)===null||o===void 0||(s=o.uploadAttributeTexture)===null||s===void 0||s.call(o),this.internals.nodeDataTexture.bind(oo),this.internals.edgeDataTexture.bind(so),this.internals.settings.renderLabels&&this.labelRenderer.computeDisplayedNodeLabels(),this.internals.settings.renderEdgeLabels&&this.labelRenderer.computeDisplayedEdgeLabels();var y=F(this.customLayerPrograms.values()),p;try{for(y.s();!(p=y.n()).done;){var m=p.value.program;m.preRender&&m.preRender(h)}}catch($){y.e($)}finally{y.f()}f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,this.width*this.internals.pixelRatio,this.height*this.internals.pixelRatio),f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA);var b=F(this.depthLayers),_;try{for(b.s();!(_=b.n()).done;){var x=_.value,S=F(this.customLayerPrograms.values()),E;try{for(S.s();!(E=S.n()).done;){var w=E.value;w.depth===x&&w.program.render(h)}}catch($){S.e($)}finally{S.f()}var T=this.depthRanges.edges[x];if(T&&(!this.internals.settings.hideEdgesOnMove||!d)){var R=F(T),A;try{for(R.s();!(A=R.n()).done;){var P=A.value,C=P.offset,L=P.count;L>0&&this.edgeProgram.render(c,C,L)}}catch($){R.e($)}finally{R.f()}}this.internals.settings.renderEdgeLabels&&(!this.internals.settings.hideLabelsOnMove||!d)&&(this.labelRenderer.renderEdgeLabelBackgrounds(Te.edgeLabel.writesPickingThisFrame(this.internals)?h:M(M({},h),{},{pickingFrameBuffer:null}),x),this.labelRenderer.renderEdgeLabels(h,x)),this.labelRenderer.cacheAttachments(x),this.labelRenderer.renderBackdrops(M(M({},h),{},{pickingFrameBuffer:null}),x);var k=this.depthRanges.nodes[x];if(k){var I=F(k),z;try{for(I.s();!(z=I.n()).done;){var N=z.value,O=N.offset,B=N.count;B>0&&this.nodeProgram.render(h,O,B)}}catch($){I.e($)}finally{I.f()}}this.labelRenderer.renderAttachments(M(M({},h),{},{pickingFrameBuffer:null}),x),this.labelRenderer.renderLabelBackgrounds(Te.nodeLabel.writesPickingThisFrame(this.internals)?h:M(M({},h),{},{pickingFrameBuffer:null}),x),this.internals.settings.renderLabels&&this.labelRenderer.renderWebGLLabels(h,x)}}catch($){b.e($)}finally{b.f()}return this.internals.settings.DEBUG_displayPickingLayer&&(f.bindFramebuffer(f.READ_FRAMEBUFFER,this.pickingFrameBuffer),f.bindFramebuffer(f.DRAW_FRAMEBUFFER,null),f.blitFramebuffer(0,0,g,v,0,0,this.width*this.internals.pixelRatio,this.height*this.internals.pixelRatio,f.COLOR_BUFFER_BIT,f.NEAREST)),this.internals.settings.hideLabelsOnMove&&d,l()}},{key:"postEvaluateNode",value:function(t,r,i){var o=t;o.x===void 0&&(o.x=r.x),o.y===void 0&&(o.y=r.y),t.highlighted=i.isHighlighted;for(var s=0,l=this.nodeVariableEntries.length;sl&&(f=-f),r[h.spread.variable]=f}}}},{key:"addEdge",value:function(t){var r=this.internals.graph.getEdgeAttributes(t),i=this.stateManager.getEdgeState(t),o={};if(wa(this.stylesDeclaration.edges,r,i,this.stateManager.graphState,this.internals.graph,o),this.postEvaluateEdge(o,r),this.edgeReducer){var s=this.edgeReducer(t,o,r,i,this.stateManager.graphState,this.internals.graph);o=M(M({},o),s)}this.applyEdgeSpread(t,o,i),this.internals.edgeDataCache[t]=o,this.internals.edgesWithForcedLabels.delete(t),o.labelVisibility==="visible"&&o.visibility!=="hidden"&&this.internals.edgesWithForcedLabels.add(t),this.itemBuckets.edges.set(t,o.depth)}},{key:"updateEdge",value:function(t){this.addEdge(t)}},{key:"removeEdge",value:function(t){this.itemBuckets.edges.remove(t),delete this.internals.edgeDataCache[t],delete this.edgeProgramIndex[t],delete this.edgeTextureIndexCache[t],this.internals.edgeDataTexture.free(t),this.stateManager.removeEdge(t),this.internals.edgesWithForcedLabels.delete(t)}},{key:"clearNodeIndices",value:function(){this.labelRenderer.resetLabelGrid(),this.nodeExtent={x:[0,1],y:[0,1]},this.internals.nodeDataCache={},this.nodeGraphCoords={},this.edgeProgramIndex={},this.internals.nodesWithForcedLabels=new Set,this.internals.nodesWithBackdrop=new Set,this.prevNodeVisibilities={},this.itemBuckets.nodes.clearAll(),this.depthRanges.nodes={},this.nodeBaseDepth={}}},{key:"clearEdgeIndices",value:function(){this.internals.edgeDataCache={},this.edgeProgramIndex={},this.edgeTextureIndexCache={},this.internals.edgesWithForcedLabels=new Set,Ha(this.pickingState,"edge"),this.itemBuckets.edges.clearAll(),this.depthRanges.edges={},this.edgeBaseDepth={},this.edgeGroups.clear()}},{key:"clearIndices",value:function(){this.clearEdgeIndices(),this.clearNodeIndices()}},{key:"clearNodeState",value:function(){this.labelRenderer.resetFrame(),this.internals.nodesWithBackdrop.clear(),this.internals.dragManager.clear(),this.autoRescaleFrozen=!1,this.stateManager.clearNodes()}},{key:"clearEdgeState",value:function(){this.labelRenderer.clearEdgeLabels(),this.stateManager.clearEdges()}},{key:"clearState",value:function(){this.clearEdgeState(),this.clearNodeState(),this.stateManager.resetGraphState()}},{key:"addNodeToProgram",value:function(t,r){var i=this.internals.nodeDataCache[t];this.internals.nodeDataTexture.allocate(t),this.internals.nodeDataTexture.updateNode(t,i.x,i.y,i.size,this.getNodeShapeId(i));var o=this.internals.nodeDataTexture.getIndex(t);this.nodeProgram.process(ot(this.pickingState,"node",t),r,i,o,t),this.nodeProgramIndex[t]=r}},{key:"addEdgeToProgram",value:function(t,r){var i,o,s=this.internals.edgeDataCache[t],l=this.internals.graph.source(t),u=this.internals.graph.target(t),d=this.internals.edgeDataTexture.allocate(t);this.edgeTextureIndexCache[t]=d;var h=l===u,c=!h&&((i=(o=this.stateManager.getEdgeState(t))===null||o===void 0?void 0:o.parallelCount)!==null&&i!==void 0?i:1)>1,f=this.edgeProgram.resolveEdgeIds(s,h,c),g=f.pathId,v=f.headId,y=f.tailId,p=f.headLengthRatio,m=f.tailLengthRatio;this.internals.edgeDataTexture.updateEdge(t,this.internals.nodeDataTexture.getIndex(l),this.internals.nodeDataTexture.getIndex(u),s.size,p,m,g,v,y),this.edgeProgram.process(ot(this.pickingState,"edge",t),r,this.internals.nodeDataCache[l],this.internals.nodeDataCache[u],s,d),this.edgeProgramIndex[t]=r}},{key:"getRenderParams",value:function(){return{frameId:this.frameId,matrix:this.matrix,invMatrix:this.invMatrix,width:this.width,height:this.height,pixelRatio:this.internals.pixelRatio,zoomRatio:this.camera.ratio,cameraAngle:this.camera.angle,sizeRatio:1/this.scaleSize(),correctionRatio:this.correctionRatio,downSizingRatio:this.internals.settings.pickingDownSizingRatio,minEdgeThickness:this.internals.settings.minEdgeThickness,antiAliasingFeather:this.internals.settings.antiAliasingFeather,nodePickingPadding:this.internals.settings.nodePickingPadding,edgePickingPadding:this.internals.settings.edgePickingPadding,labelPickingPadding:this.internals.settings.labelPickingPadding,nodeDataTextureUnit:oo,nodeDataTextureWidth:this.internals.nodeDataTexture.getTextureWidth(),edgeDataTextureUnit:so,edgeDataTextureWidth:this.internals.edgeDataTexture.getTextureWidth(),pickingFrameBuffer:this.pickingFrameBuffer,labelPixelSnapping:this.internals.settings.labelPixelSnapping?1:0}}},{key:"getStagePadding",value:function(){var t=this.internals.settings,r=t.stagePadding,i=t.autoRescale;return i&&r||0}},{key:"getLayerElement",value:function(t){if(t==="mouse")return this.mouseLayer;var r=this.extraElements[t];if(!r)throw new Error('Sigma: layer "'.concat(t,'" does not exist'));return r}},{key:"initWebGLContext",value:function(){var t=this.createWebGLContext("stage");this.stageCanvas=this.extraElements.stage,this.webGLContext=t;var r=t.createFramebuffer();if(!r)throw new Error("Sigma: cannot create picking frame buffer");t.bindFramebuffer(t.FRAMEBUFFER,r);var i=t.createTexture();if(!i)throw new Error("Sigma: cannot create picking texture");t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0);var o=t.createRenderbuffer();if(!o)throw new Error("Sigma: cannot create picking depth buffer");if(t.bindRenderbuffer(t.RENDERBUFFER,o),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,1,1),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,o),t.checkFramebufferStatus(t.FRAMEBUFFER)!==t.FRAMEBUFFER_COMPLETE)throw new Error("Sigma: picking framebuffer is not complete");t.bindFramebuffer(t.FRAMEBUFFER,null),this.pickingFrameBuffer=r,this.pickingTexture=i,this.pickingDepthBuffer=o}},{key:"createLayer",value:function(t,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(this.extraElements[t])throw new Error('Sigma: a layer named "'.concat(t,'" already exists'));var o=Pa(r,{position:"absolute"},{class:"sigma-".concat(t)});return i.style&&Object.assign(o.style,i.style),this.extraElements[t]=o,"beforeLayer"in i&&i.beforeLayer?this.getLayerElement(i.beforeLayer).before(o):"afterLayer"in i&&i.afterLayer?this.getLayerElement(i.afterLayer).after(o):this.container.appendChild(o),o}},{key:"createCanvas",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.createLayer(t,"canvas",r)}},{key:"createWebGLContext",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=this.createCanvas(t,r);r.hidden&&i.remove();var o=i.getContext("webgl2",M({preserveDrawingBuffer:!1,antialias:!1,depth:!0},r));if(!o)throw new Error("Sigma: WebGL 2 is not supported by your browser. Please use a modern browser (Chrome 56+, Firefox 51+, Safari 15+, Edge 79+).");return o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),o}},{key:"killLayer",value:function(t){if(t==="stage"||t==="mouse")throw new Error('Sigma: cannot kill built-in layer "'.concat(t,'"'));var r=this.extraElements[t];if(!r)throw new Error("Sigma: cannot kill layer ".concat(t,", which does not exist"));return r.remove(),delete this.extraElements[t],this}},{key:"getWebGLContext",value:function(){if(!this.webGLContext)throw new Error("Sigma: WebGL context is not available");return this.webGLContext}},{key:"addCustomLayerProgram",value:function(t,r,i){var o;if(!this.depthLayers.includes(r))throw new Error('Sigma: cannot add custom layer program at depth "'.concat(r,'", ')+"it must be declared in primitives.depthLayers. Current layers: ".concat(this.depthLayers.join(", ")));return(o=this.customLayerPrograms.get(t))===null||o===void 0||o.program.kill(),this.customLayerPrograms.set(t,{depth:r,program:i}),this.refresh(),this}},{key:"removeCustomLayerProgram",value:function(t){var r=this.customLayerPrograms.get(t);return r&&(r.program.kill(),this.customLayerPrograms.delete(t),this.scheduleRender()),this}},{key:"getCamera",value:function(){return this.camera}},{key:"setCamera",value:function(t){return this.unbindCameraHandlers(),this.camera=t,this.bindCameraHandlers(),this.scheduleRender(),this}},{key:"getContainer",value:function(){return this.container}},{key:"getGraph",value:function(){return this.internals.graph}},{key:"setGraph",value:function(t){if(t===this.internals.graph)return this;var r=this.stateManager.hovered;if(r){var i,o=(i=Te[r.kind].parent)!==null&&i!==void 0?i:r.kind,s=o==="node"?t.hasNode(r.key):t.hasEdge(r.key);s||this.stateManager.setHovered(null)}return this.unbindGraphHandlers(),this.checkEdgesEventsFrame!==null&&(cancelAnimationFrame(this.checkEdgesEventsFrame),this.checkEdgesEventsFrame=null),this.internals.graph=t,this.bindGraphHandlers(),this.refresh(),this}},{key:"getMouseCaptor",value:function(){return this.mouseCaptor}},{key:"getTouchCaptor",value:function(){return this.touchCaptor}},{key:"getDimensions",value:function(){return{width:this.width,height:this.height}}},{key:"getGraphDimensions",value:function(){var t=this.customBBox||this.nodeExtent;return{width:t.x[1]-t.x[0]||1,height:t.y[1]-t.y[0]||1}}},{key:"getNodeDisplayData",value:function(t){var r=this.internals.nodeDataCache[t];return r?Object.assign({},r):void 0}},{key:"getEdgeDisplayData",value:function(t){var r=this.internals.edgeDataCache[t];return r?Object.assign({},r):void 0}},{key:"getNodeState",value:function(t){return this.stateManager.getNodeState(t)}},{key:"getEdgeState",value:function(t){return this.stateManager.getEdgeState(t)}},{key:"getGraphState",value:function(){return this.stateManager.getGraphState()}},{key:"setNodeState",value:function(t,r){return this.stateManager.setNodeState(t,r),this}},{key:"setEdgeState",value:function(t,r){return this.stateManager.setEdgeState(t,r),this}},{key:"setGraphState",value:function(t){return this.stateManager.setGraphState(t),this}},{key:"_setPanning",value:function(t){this.stateManager.setGraphState({isPanning:t})}},{key:"_setZooming",value:function(t){this.stateManager.setGraphState({isZooming:t})}},{key:"setNodesState",value:function(t,r){return this.stateManager.setNodesState(t,r),this}},{key:"setEdgesState",value:function(t,r){return this.stateManager.setEdgesState(t,r),this}},{key:"updateContainerCursor",value:function(){var t=this.stateManager.hovered,r=this.resolvedStageStyle.cursor||"";this.container.style.cursor=t&&Wh(this.internals,t)||r}},{key:"refreshStageStyle",value:function(){this.resolvedStageStyle=Aa(this.stylesDeclaration.stage,this.stateManager.graphState),this.resolvedStageStyle.background!==void 0&&(this.container.style.backgroundColor=this.resolvedStageStyle.background),this.updateContainerCursor()}},{key:"getNodeDisplayedLabels",value:function(){return new Set(this.labelRenderer.displayedNodeLabels)}},{key:"getEdgeDisplayedLabels",value:function(){return new Set(this.labelRenderer.displayedEdgeLabels)}},{key:"getSettings",value:function(){return M({},this.internals.settings)}},{key:"getSetting",value:function(t){return this.internals.settings[t]}},{key:"setSetting",value:function(t,r){return this.internals.settings[t]=r,kn(this.internals.settings),this.handleSettingsUpdate(),this.scheduleRefresh(),this}},{key:"updateSetting",value:function(t,r){return this.setSetting(t,r(this.internals.settings[t])),this}},{key:"setSettings",value:function(t){return this.internals.settings=M(M({},this.internals.settings),t),kn(this.internals.settings),this.handleSettingsUpdate(),this.scheduleRefresh(),this}},{key:"resize",value:function(t){var r=this.width,i=this.height;if(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,this.internals.pixelRatio=jt(),this.width===0)if(this.internals.settings.allowInvalidContainer)this.width=1;else throw new Error("Sigma: Container has no width. You can set the allowInvalidContainer setting to true to stop seeing this error.");if(this.height===0)if(this.internals.settings.allowInvalidContainer)this.height=1;else throw new Error("Sigma: Container has no height. You can set the allowInvalidContainer setting to true to stop seeing this error.");if(!t&&r===this.width&&i===this.height)return this;for(var o=0,s=[this.mouseLayer].concat(V(Object.values(this.extraElements)));o0&&this.nodeProgram.invalidateBuffers();for(var m=(t==null||(u=t.partialGraph)===null||u===void 0?void 0:u.edges)||[],b=0,_=m.length;b<_;b++){var x=m[b];if(this.updateEdge(x),i){var S=this.edgeProgramIndex[x];if(S===void 0)throw new Error('Sigma: edge "'.concat(x,`" can't be repaint`));this.addEdgeToProgram(x,S)}}i&&m.length>0&&this.edgeProgram.invalidateBuffers(),!i&&this.pendingProcess!=="full"&&(this.pendingProcess=m.length>0?"full":"nodes")}return o?this.scheduleRender():this.render(),this}},{key:"scheduleRender",value:function(){var t=this;return this.renderFrame||(this.renderFrame=requestAnimationFrame(function(){t.render()})),this}},{key:"scheduleRefresh",value:function(t){return this.refresh(M(M({},t),{},{schedule:!0}))}},{key:"getViewportZoomedState",value:function(t,r){var i=this.camera.getState(),o=i.ratio,s=i.angle,l=i.x,u=i.y,d=this.internals.settings,h=d.minCameraRatio,c=d.maxCameraRatio;typeof c=="number"&&(r=Math.min(r,c)),typeof h=="number"&&(r=Math.max(r,h));var f=r/o,g={x:this.width/2,y:this.height/2},v=this.viewportToFramedGraph(t),y=this.viewportToFramedGraph(g);return{angle:s,x:(v.x-y.x)*(1-f)+l,y:(v.y-y.y)*(1-f)+u,ratio:r}}},{key:"viewRectangle",value:function(){var t=this.viewportToFramedGraph({x:0,y:0}),r=this.viewportToFramedGraph({x:this.width,y:0}),i=this.viewportToFramedGraph({x:0,y:this.height});return{x1:t.x,y1:t.y,x2:r.x,y2:r.y,height:r.y-i.y}}},{key:"framedGraphToViewport",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=!!r.cameraState||!!r.viewportDimensions||!!r.graphDimensions||!!r.padding,o=r.matrix||(i?ft(r.cameraState||this.camera.getState(),r.viewportDimensions||this.getDimensions(),r.graphDimensions||this.getGraphDimensions(),r.padding||this.getStagePadding()):this.matrix),s=Vt(o,t);return{x:(1+s.x)*this.width/2,y:(1-s.y)*this.height/2}}},{key:"viewportToFramedGraph",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=!!r.cameraState||!!r.viewportDimensions||!!r.graphDimensions||!!r.padding,o=r.matrix||(i?ft(r.cameraState||this.camera.getState(),r.viewportDimensions||this.getDimensions(),r.graphDimensions||this.getGraphDimensions(),r.padding||this.getStagePadding(),!0):this.invMatrix),s=Vt(o,{x:t.x/this.width*2-1,y:1-t.y/this.height*2});return isNaN(s.x)&&(s.x=0),isNaN(s.y)&&(s.y=0),s}},{key:"viewportToGraph",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.normalizationFunction.inverse(this.viewportToFramedGraph(t,r))}},{key:"graphToViewport",value:function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.framedGraphToViewport(this.normalizationFunction(t),r)}},{key:"getGraphToViewportRatio",value:function(){var t={x:0,y:0},r={x:1,y:1},i=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2)),o=this.graphToViewport(t),s=this.graphToViewport(r),l=Math.sqrt(Math.pow(o.x-s.x,2)+Math.pow(o.y-s.y,2));return l/i}},{key:"computeNodeExtent",value:function(){var t=this.nodeGraphCoords,r=Object.keys(t);if(!r.length)return{x:[0,1],y:[0,1]};for(var i=1/0,o=-1/0,s=1/0,l=-1/0,u=0,d=r.length;uo&&(o=c),fl&&(l=f)}return{x:[i,o],y:[s,l]}}},{key:"getBBox",value:function(){return this.nodeExtent}},{key:"getCustomBBox",value:function(){return this.customBBox}},{key:"setCustomBBox",value:function(t){return this.customBBox=t,this.scheduleRender(),this}},{key:"kill",value:function(){var t,r,i,o,s,l,u;this.emit("kill"),this.removeAllListeners(),this.unbindCameraHandlers(),window.removeEventListener("resize",this.activeListeners.handleResize),this.mouseCaptor.kill(),this.touchCaptor.kill(),this.unbindGraphHandlers(),this.clearIndices(),this.clearState(),this.internals.nodeDataCache={},this.internals.edgeDataCache={},this.renderFrame&&(cancelAnimationFrame(this.renderFrame),this.renderFrame=null);for(var d=this.container;d.firstChild;)d.removeChild(d.firstChild);this.nodeProgram.kill(),this.edgeProgram.kill(),(t=this.internals.labelProgram)===null||t===void 0||t.kill(),(r=this.internals.edgeLabelProgram)===null||r===void 0||r.kill(),(i=this.internals.edgeLabelBackgroundProgram)===null||i===void 0||i.kill(),(o=this.internals.backdropProgram)===null||o===void 0||o.kill(),(s=this.internals.labelBackgroundProgram)===null||s===void 0||s.kill(),(l=this.internals.attachmentProgram)===null||l===void 0||l.kill(),(u=this.internals.attachmentManager)===null||u===void 0||u.kill(),this.internals.labelProgram=null,this.internals.edgeLabelProgram=null,this.internals.edgeLabelBackgroundProgram=null,this.internals.backdropProgram=null,this.internals.labelBackgroundProgram=null,this.internals.attachmentProgram=null,this.internals.attachmentManager=null;var h=F(this.customLayerPrograms.values()),c;try{for(h.s();!(c=h.n()).done;){var f=c.value.program;f.kill()}}catch(y){h.e(y)}finally{h.f()}if(this.customLayerPrograms.clear(),this.sdfAtlas&&(this.sdfAtlas=null),this.internals.nodeDataTexture&&(this.internals.nodeDataTexture.kill(),this.internals.nodeDataTexture=null),this.internals.edgeDataTexture&&(this.internals.edgeDataTexture.kill(),this.internals.edgeDataTexture=null),this.webGLContext){var g;(g=this.webGLContext.getExtension("WEBGL_lose_context"))===null||g===void 0||g.loseContext(),this.webGLContext=null}this.mouseLayer.remove();for(var v in this.extraElements)this.extraElements[v].remove();this.extraElements={},this.labelRenderer.kill()}},{key:"scaleSize",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.camera.ratio;return t/this.internals.settings.zoomToSizeRatioFunction(r)*(this.getSetting("itemSizesReference")==="positions"?r*this.graphToViewportRatio:1)}},{key:"getStageCanvas",value:function(){return this.stageCanvas}},{key:"getMouseLayer",value:function(){return this.mouseLayer}}])})(Cn),ho=Qh;var Rs=Ye(Mo(),1),Cs=Ye(Yo(),1),aa=Ye(Ds(),1);return Gs(Zc);})(); diff --git a/r/inst/htmlwidgets/rtemis-graph.js b/r/inst/htmlwidgets/rtemis-graph.js new file mode 100644 index 0000000..ec15bcd --- /dev/null +++ b/r/inst/htmlwidgets/rtemis-graph.js @@ -0,0 +1,340 @@ +// rtemis-graph htmlwidget binding. +// +// Sigma.js renderer for the network / graph plot type. This is the first +// non-ECharts rendering surface in rtemis.draw; it consumes a renderer-agnostic +// graph model ({ nodes, edges, directed }) — not an EChartsOption — and manages +// the sigma instance lifecycle. It is a vanilla-JS port of rtemislive's +// GraphCanvas.tsx (~/Code/live/src/components/chart/GraphCanvas.tsx): same +// graphology build, Louvain community detection, ForceAtlas2 / circular / +// circlepack / random layouts, and node/edge reducers. +// +// graphology + sigma come from the vendored bundle (window.RtemisGraph), built +// from r/tools/graph-bundle. Styling options arrive once on the payload (no live +// sliders, unlike the React app) under payload.style. + +HTMLWidgets.widget({ + name: "rtemis-graph", + type: "output", + + factory: (el, width, height) => { + let sigma = null; + let resizeObserver = null; + + const { Graph, Sigma, louvain, forceAtlas2, circlepack, random } = + window.RtemisGraph || {}; + + // Detect dark mode from VS Code, RStudio, or browser preference. + // (Mirrors rtemis-draw.js so both renderers theme consistently.) + const isDarkMode = () => { + const body = document.body; + if ( + body.classList.contains("vscode-dark") || + body.classList.contains("vscode-high-contrast") + ) { + return true; + } + if (body.classList.contains("vscode-light")) return false; + if (body.classList.contains("rstudio-themes-dark-menus")) return true; + if (window.matchMedia) { + return window.matchMedia("(prefers-color-scheme: dark)").matches; + } + return false; + }; + + // Resolve the active theme list (echarts-shaped) -> the few colors sigma + // needs: page background, label color, font family. + const resolveTheme = (x) => { + let theme = null; + if (x.autoTheme) { + theme = isDarkMode() ? x.themeDark : x.theme; + } else if (x.theme) { + theme = x.theme; + } + const dark = x.autoTheme ? isDarkMode() : false; + const bg = (theme && theme.backgroundColor) || (dark ? "#1a1a1a" : "#ffffff"); + const fg = + (theme && theme.textStyle && theme.textStyle.color) || + (dark ? "#e6e6e6" : "#1a1a1a"); + const fontFamily = + theme && theme.textStyle && theme.textStyle.fontFamily; + return { bg, fg, fontFamily, dark }; + }; + + // ── small color helpers (ported from GraphCanvas) ────────────────────── + const paletteColor = (palette, i) => { + const n = palette.length; + return palette[((i % n) + n) % n]; + }; + const NEUTRAL_EDGE = "#9aa0a6"; + const withAlpha = (hex, alpha255) => { + const a = Math.max(0, Math.min(255, Math.round(alpha255))); + return `${hex}${a.toString(16).padStart(2, "0")}`; + }; + const blendHex = (a, b) => { + const pa = parseInt(a.slice(1), 16); + const pb = parseInt(b.slice(1), 16); + const r = ((pa >> 16) + (pb >> 16)) >> 1; + const g = (((pa >> 8) & 0xff) + ((pb >> 8) & 0xff)) >> 1; + const bl = ((pa & 0xff) + (pb & 0xff)) >> 1; + return `#${((1 << 24) | (r << 16) | (g << 8) | bl).toString(16).slice(1)}`; + }; + + // Containers: a graph surface plus a hover tooltip + optional title overlay, + // pinned absolutely so they never displace the canvas. + el.style.position = "relative"; + const surface = document.createElement("div"); + surface.style.position = "absolute"; + surface.style.inset = "0"; + el.appendChild(surface); + + const tooltip = document.createElement("div"); + tooltip.style.cssText = + "position:absolute;right:12px;top:12px;z-index:20;pointer-events:none;" + + "border-radius:6px;padding:6px 10px;font-size:12px;display:none;" + + "backdrop-filter:blur(4px);"; + el.appendChild(tooltip); + + const titleEl = document.createElement("div"); + titleEl.style.cssText = + "position:absolute;left:12px;top:10px;z-index:20;pointer-events:none;" + + "font-weight:600;font-size:14px;display:none;"; + el.appendChild(titleEl); + + const renderGraph = (x) => { + if (!Graph || !Sigma) { + surface.innerHTML = + '
rtemis-graph bundle failed to load (window.RtemisGraph missing).
'; + return; + } + if (sigma) { + sigma.kill(); + sigma = null; + } + + const model = x.model || {}; + const s = x.style || {}; + const nodes = model.nodes || []; + const edges = model.edges || []; + const palette = s.palette || ["#6CA3A0"]; + const theme = resolveTheme(x); + + el.style.backgroundColor = theme.bg; + + // Title + if (x.title) { + titleEl.textContent = x.title; + titleEl.style.color = theme.fg; + titleEl.style.display = "block"; + } else { + titleEl.style.display = "none"; + } + + if (nodes.length === 0) { + surface.innerHTML = + '
No nodes to display.
'; + return; + } + surface.innerHTML = ""; + + const graph = new Graph({ type: model.directed ? "directed" : "undirected" }); + + const maxValue = nodes.reduce((m, n) => Math.max(m, n.value || 0), 1); + const nn = nodes.length; + nodes.forEach((node, i) => { + const angle = (2 * Math.PI * i) / nn; + graph.addNode(node.id, { + label: node.label != null ? node.label : node.id, + x: Math.cos(angle), + y: Math.sin(angle), + value: node.value || 0, + valueNorm: (node.value || 0) / maxValue, + group: node.group != null ? node.group : null, + community: 0, + }); + }); + + const maxWeight = edges.reduce( + (m, e) => Math.max(m, Math.abs(e.weight != null ? e.weight : 1)), + 1e-9, + ); + for (const e of edges) { + if (!graph.hasNode(e.source) || !graph.hasNode(e.target)) continue; + if (graph.hasEdge(e.source, e.target)) continue; + const sign = e.sign != null ? e.sign : 0; + const weightNorm = Math.abs(e.weight != null ? e.weight : 1) / maxWeight; + graph.addEdge(e.source, e.target, { + weightNorm, + sign, + // Louvain only supports non-negative weights; clamp negatives to 0 so + // anti-correlated nodes are not pulled together (same compromise as + // rtemislive's GraphCanvas). + louvainWeight: sign < 0 ? 0 : weightNorm, + }); + } + + // Community detection (always computed; coloring decides whether to use). + if (graph.size > 0 && louvain) { + louvain.assign(graph, { + nodeCommunityAttribute: "community", + getEdgeWeight: "louvainWeight", + resolution: s.resolution != null ? s.resolution : 1, + }); + } + + // ── Layout ────────────────────────────────────────────────────────── + const layout = s.layout || "force"; + if (layout === "circular") { + const ids = graph.nodes(); + ids.sort( + (a, b) => + graph.getNodeAttribute(a, "community") - + graph.getNodeAttribute(b, "community"), + ); + ids.forEach((id, i) => { + const angle = (2 * Math.PI * i) / ids.length; + graph.setNodeAttribute(id, "x", Math.cos(angle)); + graph.setNodeAttribute(id, "y", Math.sin(angle)); + }); + } else if (layout === "circlepack" && circlepack) { + circlepack.assign(graph, { hierarchyAttributes: ["community"] }); + } else if (layout === "random" && random) { + random.assign(graph); + } else if (graph.order > 0 && forceAtlas2) { + forceAtlas2.assign(graph, { + iterations: 200, + settings: { ...forceAtlas2.inferSettings(graph), scalingRatio: 10 }, + }); + } + + const colorByGroup = !!s.colorByGroup; + const nodeColorFor = (community) => + colorByGroup ? paletteColor(palette, community) : s.nodeColor || palette[0]; + + let hovered = null; + + sigma = new Sigma(graph, surface, { + // Sigma v4 nests renderer settings under `settings`; passing them flat + // silently drops them (e.g. itemSizesReference defaulted to "positions", + // sizing nodes in unit-circle layout coords -> giant nodes). + settings: { + allowInvalidContainer: true, + renderLabels: s.showLabels !== false, + renderEdgeLabels: false, + enableEdgeEvents: false, + // Node size N means N screen pixels regardless of layout coordinate + // scale (without this, unit-circle layouts render giant nodes). + itemSizesReference: "screen", + }, + nodeReducer: (key, data) => { + const attrs = graph.getNodeAttributes(key); + const base = s.nodeSize != null ? s.nodeSize : 10; + const size = + s.scaleByDegree !== false + ? Math.max(1, base * (0.5 + (attrs.valueNorm || 0))) + : base; + const res = { + ...data, + size, + color: nodeColorFor(attrs.community || 0), + opacity: s.nodeOpacity != null ? s.nodeOpacity : 0.95, + labelColor: theme.fg, + labelFont: theme.fontFamily, + }; + if (hovered && hovered !== key && !graph.areNeighbors(hovered, key)) { + res.color = withAlpha(palette[0], 40); + res.opacity = 0.15; + res.label = ""; + } + return res; + }, + edgeReducer: (key, data) => { + const attrs = graph.getEdgeAttributes(key); + const size = Math.max( + 0.5, + (attrs.weightNorm != null ? attrs.weightNorm : 0.5) * + (s.edgeScale != null ? s.edgeScale : 3), + ); + let color; + if (s.blendEdges) { + const ext = graph.extremities(key); + color = blendHex( + nodeColorFor(graph.getNodeAttribute(ext[0], "community")), + nodeColorFor(graph.getNodeAttribute(ext[1], "community")), + ); + } else { + const sign = attrs.sign; + color = + sign > 0 + ? s.positiveColor || palette[0] + : sign < 0 + ? s.negativeColor || NEUTRAL_EDGE + : NEUTRAL_EDGE; + } + const res = { + ...data, + size, + color, + opacity: s.edgeOpacity != null ? s.edgeOpacity : 0.4, + }; + if (hovered && !graph.extremities(key).includes(hovered)) { + res.opacity = Math.min( + s.edgeOpacity != null ? s.edgeOpacity : 0.4, + 0.06, + ); + } + return res; + }, + }); + + // Hover: dim the rest, show a themed tooltip with node name + details. + sigma.on("enterNode", ({ node }) => { + hovered = node; + const label = graph.getNodeAttribute(node, "label") || node; + const degree = graph.degree(node); + const community = graph.getNodeAttribute(node, "community"); + tooltip.style.color = theme.fg; + tooltip.style.backgroundColor = theme.dark + ? "rgba(40,40,40,0.85)" + : "rgba(255,255,255,0.85)"; + tooltip.innerHTML = + '
' + + label + + '
degree ' + + degree + + (colorByGroup ? " · community " + community : "") + + "
"; + tooltip.style.display = "block"; + sigma.refresh(); + }); + sigma.on("leaveNode", () => { + hovered = null; + tooltip.style.display = "none"; + sigma.refresh(); + }); + + // resize() resizes (and clears) the WebGL canvas but does not redraw it, + // so schedule a render explicitly after each resize. + if (resizeObserver) resizeObserver.disconnect(); + resizeObserver = new ResizeObserver(() => { + if (sigma) { + sigma.resize(); + sigma.scheduleRender(); + } + }); + resizeObserver.observe(surface); + }; + + return { + renderValue: (x) => renderGraph(x), + resize: (newWidth, newHeight) => { + if (sigma) { + sigma.resize(); + sigma.scheduleRender(); + } + }, + }; + }, +}); diff --git a/r/inst/htmlwidgets/rtemis-graph.yaml b/r/inst/htmlwidgets/rtemis-graph.yaml new file mode 100644 index 0000000..4b4b72a --- /dev/null +++ b/r/inst/htmlwidgets/rtemis-graph.yaml @@ -0,0 +1,5 @@ +dependencies: + - name: rtemis-graph-deps + version: 1.0.0 + src: htmlwidgets/lib/sigma + script: rtemis-graph-deps.js diff --git a/r/inst/htmlwidgets/rtemis-map.js b/r/inst/htmlwidgets/rtemis-map.js new file mode 100644 index 0000000..180c532 --- /dev/null +++ b/r/inst/htmlwidgets/rtemis-map.js @@ -0,0 +1,717 @@ +// rtemis-map htmlwidget binding. +// +// MapLibre GL renderer for the choropleth map plot type. This is the third +// rendering surface in rtemis.draw (after ECharts and Sigma.js); it consumes a +// renderer-agnostic map model ({ rows, resolution, valueLabel, tooltipFields }) +// plus an embedded TopoJSON geometry -- not an EChartsOption -- and manages the +// MapLibre instance lifecycle. +// +// It is a vanilla-JS port of rtemislive's MapCanvas.tsx +// (~/Code/live/src/components/chart/MapCanvas.tsx) together with the scale +// (choroplethScale.ts) and location-resolver (locationResolver.ts) logic that +// in rtemislive live in separate modules. No basemap tiles: admin boundaries +// render on the themed app background, exactly like rtemislive. +// +// maplibregl + topojson-client + d3-scale-chromatic come from the vendored +// bundle (window.RtemisMap), built from r/tools/map-bundle. Styling options +// arrive once on the payload (no live sliders, unlike the React app) under +// payload.style. + +HTMLWidgets.widget({ + name: "rtemis-map", + type: "output", + + factory: (el, width, height) => { + let map = null; + let resizeObserver = null; + + const { maplibregl, topojsonFeature, chromatic } = window.RtemisMap || {}; + + const SOURCE_ID = "regions"; + const FILL_LAYER = "regions-fill"; + const LINE_LAYER = "regions-outline"; + const BG_LAYER = "bg"; + + // Theme colors (mirror MapCanvas.tsx). Used when the rtemis theme does not + // supply an explicit background. + const BG_LIGHT = "#f8fafc"; // slate-50 + const BG_DARK = "#09090b"; // zinc-950 + const OUTLINE_LIGHT = "#cbd5e1"; // slate-300 + const OUTLINE_DARK = "#3f3f46"; // zinc-700 + const MISSING_LIGHT = "#e4e4e7"; // zinc-200 + const MISSING_DARK = "#3f3f46"; // zinc-700 + + // ── Dark-mode detection (identical to rtemis-graph.js / rtemis-draw.js) ── + const isDarkMode = () => { + const body = document.body; + if ( + body.classList.contains("vscode-dark") || + body.classList.contains("vscode-high-contrast") + ) { + return true; + } + if (body.classList.contains("vscode-light")) return false; + if (body.classList.contains("rstudio-themes-dark-menus")) return true; + if (window.matchMedia) { + return window.matchMedia("(prefers-color-scheme: dark)").matches; + } + return false; + }; + + // Resolve the active theme (echarts-shaped list) -> the few colors the map + // needs. For an explicit theme we infer dark/light from the background + // luminance; for auto mode we detect it from the host. + const resolveTheme = (x) => { + let theme = null; + if (x.autoTheme) { + theme = isDarkMode() ? x.themeDark : x.theme; + } else if (x.theme) { + theme = x.theme; + } + let dark; + if (x.autoTheme) { + dark = isDarkMode(); + } else if (theme && theme.backgroundColor) { + dark = isColorDark(theme.backgroundColor); + } else { + dark = false; + } + const bg = + (theme && theme.backgroundColor) || (dark ? BG_DARK : BG_LIGHT); + const fg = + (theme && theme.textStyle && theme.textStyle.color) || + (dark ? "#e6e6e6" : "#1a1a1a"); + return { bg, fg, dark }; + }; + + // Rough relative-luminance test for a #rrggbb / #rgb color. + const isColorDark = (hex) => { + const m = String(hex).trim().replace("#", ""); + if (m.length !== 6 && m.length !== 3) return false; + const full = + m.length === 3 + ? m + .split("") + .map((c) => c + c) + .join("") + : m; + const r = parseInt(full.slice(0, 2), 16); + const g = parseInt(full.slice(2, 4), 16); + const b = parseInt(full.slice(4, 6), 16); + // Perceived luminance (ITU-R BT.601). + return (0.299 * r + 0.587 * g + 0.114 * b) / 255 < 0.5; + }; + + // ── Color scale (port of choroplethScale.ts) ──────────────────────────── + const sequentialScheme = (name) => { + const map = { + blues: "interpolateBlues", + viridis: "interpolateViridis", + ylorrd: "interpolateYlOrRd", + greens: "interpolateGreens", + magma: "interpolateMagma", + }; + return map[name] ? chromatic[map[name]] : null; + }; + const divergingScheme = (name) => { + const map = { + rdbu: "interpolateRdBu", + rdylgn: "interpolateRdYlGn", + spectral: "interpolateSpectral", + brbg: "interpolateBrBG", + }; + return map[name] ? chromatic[map[name]] : null; + }; + + // Sample n colors from an interpolator, biasing brighter in dark mode. + const rampColors = (interp, n, dark, diverging) => { + if (n <= 1) return [interp(0.5)]; + const t0 = diverging ? 0 : dark ? 0.3 : 0.12; + const t1 = diverging ? 1 : dark ? 1 : 0.95; + return Array.from({ length: n }, (_, i) => + interp(t0 + ((t1 - t0) * i) / (n - 1)), + ); + }; + + const quantileBreaks = (sorted, classes) => { + const breaks = []; + for (let i = 1; i < classes; i++) { + const q = (sorted.length - 1) * (i / classes); + const lo = Math.floor(q); + const hi = Math.ceil(q); + breaks.push(sorted[lo] + (sorted[hi] - sorted[lo]) * (q - lo)); + } + return breaks; + }; + + const equalBreaks = (min, max, classes) => { + const breaks = []; + const step = (max - min) / classes; + for (let i = 1; i < classes; i++) breaks.push(min + step * i); + return breaks; + }; + + // Jenks natural breaks (Fisher-Jenks DP), capped by sampling for large n. + const jenksBreaks = (values, classes) => { + let data = values; + const CAP = 1500; + if (data.length > CAP) { + const step = data.length / CAP; + data = Array.from( + { length: CAP }, + (_, i) => values[Math.floor(i * step)], + ); + } + const n = data.length; + if (n <= classes) return quantileBreaks(values, classes); + + const mat1 = Array.from({ length: n + 1 }, () => + new Array(classes + 1).fill(0), + ); + const mat2 = Array.from({ length: n + 1 }, () => + new Array(classes + 1).fill(0), + ); + for (let j = 1; j <= classes; j++) { + mat1[1][j] = 1; + mat2[1][j] = 0; + for (let i = 2; i <= n; i++) mat2[i][j] = Number.POSITIVE_INFINITY; + } + for (let l = 2; l <= n; l++) { + let s1 = 0; + let s2 = 0; + let w = 0; + for (let m = 1; m <= l; m++) { + const i3 = l - m + 1; + const val = data[i3 - 1]; + w++; + s1 += val; + s2 += val * val; + const variance = s2 - (s1 * s1) / w; + const i4 = i3 - 1; + if (i4 !== 0) { + for (let j = 2; j <= classes; j++) { + if (mat2[l][j] >= variance + mat2[i4][j - 1]) { + mat1[l][j] = i3; + mat2[l][j] = variance + mat2[i4][j - 1]; + } + } + } + } + mat1[l][1] = 1; + mat2[l][1] = s2 - (s1 * s1) / w; + } + + const breaks = []; + let k = n; + for (let j = classes; j >= 2; j--) { + const id = mat1[k][j] - 1; + breaks.push(data[id]); + k = mat1[k][j] - 1; + } + return breaks.reverse(); + }; + + const fmt = (v) => + Math.abs(v) >= 100 || Number.isInteger(v) + ? Math.round(v).toLocaleString() + : v.toFixed(1); + + const buildScale = (rawValues, opts) => { + const missingColor = opts.dark ? MISSING_DARK : MISSING_LIGHT; + const diverging = divergingScheme(opts.scheme) !== null; + const interp = + sequentialScheme(opts.scheme) || + divergingScheme(opts.scheme) || + chromatic.interpolateBlues; + + const finite = rawValues.filter( + (v) => typeof v === "number" && Number.isFinite(v), + ); + const classes = Math.max(2, Math.min(12, Math.round(opts.classes))); + const colors = rampColors(interp, classes, opts.dark, diverging); + + if (finite.length === 0) { + return { + classes, + thresholds: [], + colors, + missingColor, + min: 0, + max: 0, + legend: [], + }; + } + + const sorted = [...finite].sort((a, b) => a - b); + const min = sorted[0]; + const max = sorted[sorted.length - 1]; + + let thresholds; + if (min === max) { + thresholds = []; + } else if (opts.classification === "equal") { + thresholds = equalBreaks(min, max, classes); + } else if (opts.classification === "jenks") { + thresholds = jenksBreaks(sorted, classes); + } else { + thresholds = quantileBreaks(sorted, classes); + } + thresholds = thresholds + .filter((t, i, a) => i === 0 || t > a[i - 1]) + .filter((t) => t > min && t < max); + + const bounds = [min, ...thresholds, max]; + const legend = colors.slice(0, bounds.length - 1).map((color, i) => ({ + color, + label: `${fmt(bounds[i])} – ${fmt(bounds[i + 1])}`, + })); + + return { + classes, + thresholds, + colors: colors.slice(0, thresholds.length + 1), + missingColor, + min, + max, + legend, + }; + }; + + // MapLibre fill-color expression: missing color when no joined value, else a + // step over the classification thresholds. + const fillColorExpression = (scale) => { + const value = ["to-number", ["feature-state", "v"]]; + let matched; + if (scale.thresholds.length === 0) { + matched = scale.colors[0] || scale.missingColor; + } else { + const step = ["step", value, scale.colors[0]]; + scale.thresholds.forEach((t, i) => { + step.push(t, scale.colors[i + 1]); + }); + matched = step; + } + return [ + "case", + ["!=", ["feature-state", "v"], null], + matched, + scale.missingColor, + ]; + }; + + // ── Location resolver (port of locationResolver.ts) ────────────────────── + const STATE_ABBR_TO_FIPS = { + AL: "01", AK: "02", AZ: "04", AR: "05", CA: "06", CO: "08", CT: "09", + DE: "10", DC: "11", FL: "12", GA: "13", HI: "15", ID: "16", IL: "17", + IN: "18", IA: "19", KS: "20", KY: "21", LA: "22", ME: "23", MD: "24", + MA: "25", MI: "26", MN: "27", MS: "28", MO: "29", MT: "30", NE: "31", + NV: "32", NH: "33", NJ: "34", NM: "35", NY: "36", NC: "37", ND: "38", + OH: "39", OK: "40", OR: "41", PA: "42", RI: "44", SC: "45", SD: "46", + TN: "47", TX: "48", UT: "49", VT: "50", VA: "51", WA: "53", WV: "54", + WI: "55", WY: "56", PR: "72", VI: "78", GU: "66", AS: "60", MP: "69", + }; + const STATE_NAME_TO_FIPS = { + alabama: "01", alaska: "02", "american samoa": "60", arizona: "04", + arkansas: "05", california: "06", colorado: "08", + "commonwealth of the northern mariana islands": "69", connecticut: "09", + delaware: "10", "district of columbia": "11", florida: "12", + georgia: "13", guam: "66", hawaii: "15", idaho: "16", illinois: "17", + indiana: "18", iowa: "19", kansas: "20", kentucky: "21", louisiana: "22", + maine: "23", maryland: "24", massachusetts: "25", michigan: "26", + minnesota: "27", mississippi: "28", missouri: "29", montana: "30", + nebraska: "31", nevada: "32", "new hampshire": "33", "new jersey": "34", + "new mexico": "35", "new york": "36", "north carolina": "37", + "north dakota": "38", ohio: "39", oklahoma: "40", oregon: "41", + pennsylvania: "42", "puerto rico": "72", "rhode island": "44", + "south carolina": "45", "south dakota": "46", tennessee: "47", + texas: "48", "united states virgin islands": "78", utah: "49", + vermont: "50", virginia: "51", washington: "53", "west virginia": "54", + wisconsin: "55", wyoming: "56", + }; + const ISO2_TO_ISO3 = { + AE: "ARE", AF: "AFG", AL: "ALB", AM: "ARM", AO: "AGO", AQ: "ATA", + AR: "ARG", AT: "AUT", AU: "AUS", AZ: "AZE", BA: "BIH", BD: "BGD", + BE: "BEL", BF: "BFA", BG: "BGR", BI: "BDI", BJ: "BEN", BN: "BRN", + BO: "BOL", BR: "BRA", BS: "BHS", BT: "BTN", BW: "BWA", BY: "BLR", + BZ: "BLZ", CA: "CAN", CD: "COD", CF: "CAF", CG: "COG", CH: "CHE", + CI: "CIV", CL: "CHL", CM: "CMR", CN: "CHN", CO: "COL", CR: "CRI", + CU: "CUB", CY: "CYP", CZ: "CZE", DE: "DEU", DJ: "DJI", DK: "DNK", + DO: "DOM", DZ: "DZA", EC: "ECU", EE: "EST", EG: "EGY", EH: "ESH", + ER: "ERI", ES: "ESP", ET: "ETH", FI: "FIN", FJ: "FJI", FK: "FLK", + FR: "FRA", GA: "GAB", GB: "GBR", GE: "GEO", GH: "GHA", GL: "GRL", + GM: "GMB", GN: "GIN", GQ: "GNQ", GR: "GRC", GT: "GTM", GW: "GNB", + GY: "GUY", HN: "HND", HR: "HRV", HT: "HTI", HU: "HUN", ID: "IDN", + IE: "IRL", IL: "ISR", IN: "IND", IQ: "IRQ", IR: "IRN", IS: "ISL", + IT: "ITA", JM: "JAM", JO: "JOR", JP: "JPN", KE: "KEN", KG: "KGZ", + KH: "KHM", KP: "PRK", KR: "KOR", KW: "KWT", KZ: "KAZ", LA: "LAO", + LB: "LBN", LK: "LKA", LR: "LBR", LS: "LSO", LT: "LTU", LU: "LUX", + LV: "LVA", LY: "LBY", MA: "MAR", MD: "MDA", ME: "MNE", MG: "MDG", + MK: "MKD", ML: "MLI", MM: "MMR", MN: "MNG", MR: "MRT", MW: "MWI", + MX: "MEX", MY: "MYS", MZ: "MOZ", NA: "NAM", NC: "NCL", NE: "NER", + NG: "NGA", NI: "NIC", NL: "NLD", NO: "NOR", NP: "NPL", NZ: "NZL", + OM: "OMN", PA: "PAN", PE: "PER", PG: "PNG", PH: "PHL", PK: "PAK", + PL: "POL", PR: "PRI", PS: "PSE", PT: "PRT", PY: "PRY", QA: "QAT", + RO: "ROU", RS: "SRB", RU: "RUS", RW: "RWA", SA: "SAU", SB: "SLB", + SD: "SDN", SE: "SWE", SI: "SVN", SK: "SVK", SL: "SLE", SN: "SEN", + SO: "SOM", SR: "SUR", SS: "SSD", SV: "SLV", SY: "SYR", SZ: "SWZ", + TD: "TCD", TF: "ATF", TG: "TGO", TH: "THA", TJ: "TJK", TL: "TLS", + TM: "TKM", TN: "TUN", TR: "TUR", TT: "TTO", TW: "TWN", TZ: "TZA", + UA: "UKR", UG: "UGA", US: "USA", UY: "URY", UZ: "UZB", VE: "VEN", + VN: "VNM", VU: "VUT", YE: "YEM", ZA: "ZAF", ZM: "ZMB", ZW: "ZWE", + }; + + const digits = (raw) => raw.replace(/[^0-9]/g, ""); + + // Normalize one location value to the canonical TopoJSON join id. + const normalizeKey = (raw, resolution) => { + if (raw == null) return null; + const s = String(raw).trim(); + if (!s) return null; + + if (resolution === "county") { + const d = digits(s); + if (!d || d.length > 5) return null; + return d.padStart(5, "0"); + } + if (resolution === "state") { + const d = digits(s); + if (d) return d.length <= 2 ? d.padStart(2, "0") : null; + const up = s.toUpperCase(); + if (STATE_ABBR_TO_FIPS[up]) return STATE_ABBR_TO_FIPS[up]; + return STATE_NAME_TO_FIPS[s.toLowerCase()] || null; + } + // country + const up = s.toUpperCase(); + if (up.length === 3) return up; + if (up.length === 2) return ISO2_TO_ISO3[up] || null; + return null; + }; + + // ── Overlays ───────────────────────────────────────────────────────────── + el.style.position = "relative"; + + const container = document.createElement("div"); + container.style.cssText = "position:absolute;inset:0;"; + el.appendChild(container); + + // Corner anchor -> inline CSS for an overlay box. + const cornerStyle = (corner) => { + const c = corner || "bottom-right"; + const v = c.indexOf("top") === 0 ? "top:12px;" : "bottom:12px;"; + const h = c.indexOf("left") >= 0 ? "left:12px;" : "right:12px;"; + return v + h; + }; + + const makeOverlay = () => { + const d = document.createElement("div"); + d.style.cssText = + "position:absolute;z-index:20;border-radius:6px;padding:6px 10px;" + + "font-size:12px;line-height:1.4;backdrop-filter:blur(4px);display:none;"; + el.appendChild(d); + return d; + }; + const legendEl = makeOverlay(); + const tooltipEl = makeOverlay(); + tooltipEl.style.pointerEvents = "none"; + const reportEl = makeOverlay(); + + const overlayColors = (theme) => ({ + bg: theme.dark ? "rgba(40,40,40,0.85)" : "rgba(255,255,255,0.85)", + fg: theme.fg, + muted: theme.dark ? "rgba(230,230,230,0.7)" : "rgba(26,26,26,0.65)", + }); + + const escapeHtml = (s) => + String(s).replace(/[&<>"]/g, (c) => ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + })[c]); + + // ── Render ──────────────────────────────────────────────────────────────── + let valueById = new Map(); + let extrasById = new Map(); + + const renderMap = (x) => { + if (!maplibregl || !topojsonFeature || !chromatic) { + container.innerHTML = + '
rtemis-map bundle failed to load (window.RtemisMap missing).
'; + return; + } + if (map) { + map.remove(); + map = null; + } + legendEl.style.display = "none"; + tooltipEl.style.display = "none"; + reportEl.style.display = "none"; + + const model = x.model || {}; + const s = x.style || {}; + const geo = x.geo || {}; + const rows = model.rows || []; + const resolution = model.resolution || "country"; + const theme = resolveTheme(x); + const oc = overlayColors(theme); + + el.style.backgroundColor = theme.bg; + + // Parse the embedded TopoJSON once and convert to GeoJSON. + let fc; + const idSet = new Set(); + try { + const topo = JSON.parse(geo.topojson); + const obj = topo.objects[geo.object]; + fc = topojsonFeature(topo, obj); + for (const f of fc.features) { + const id = f.id == null ? "" : String(f.id); + f.properties = Object.assign({}, f.properties || {}, { joinId: id }); + if (id) idSet.add(id); + } + } catch (err) { + container.innerHTML = + '
rtemis-map: failed to parse geometry.
'; + return; + } + + map = new maplibregl.Map({ + container: container, + center: geo.center || [0, 20], + zoom: geo.zoom != null ? geo.zoom : 0.4, + attributionControl: false, + dragRotate: false, + canvasContextAttributes: { preserveDrawingBuffer: true }, + style: { + version: 8, + sources: {}, + layers: [ + { + id: BG_LAYER, + type: "background", + paint: { "background-color": theme.bg }, + }, + ], + }, + }); + + map.on("load", () => { + map.addSource(SOURCE_ID, { + type: "geojson", + data: fc, + promoteId: "joinId", + }); + map.addLayer({ + id: FILL_LAYER, + type: "fill", + source: SOURCE_ID, + paint: { "fill-color": "#ccc", "fill-opacity": s.opacity != null ? s.opacity : 1 }, + }); + map.addLayer({ + id: LINE_LAYER, + type: "line", + source: SOURCE_ID, + paint: { + "line-color": theme.dark ? OUTLINE_DARK : OUTLINE_LIGHT, + "line-width": s.outlineWidth != null ? s.outlineWidth : 0.2, + }, + }); + + // Build the scale from the model values. + const scale = buildScale( + rows.map((r) => r.value), + { + classification: s.classification || "quantile", + scheme: s.colorScheme || "blues", + classes: s.numClasses != null ? s.numClasses : 5, + dark: theme.dark, + }, + ); + + // Join: normalize each row key, set feature-state, build join report. + map.removeFeatureState({ source: SOURCE_ID }); + valueById = new Map(); + extrasById = new Map(); + const tooltipFields = model.tooltipFields || []; + let matched = 0; + let unmatched = 0; + const unmatchedKeys = []; + for (const row of rows) { + const id = normalizeKey(row.location, resolution); + if (id && idSet.has(id)) { + valueById.set(id, row.value); + if (tooltipFields.length > 0 && row.extras) { + extrasById.set( + id, + tooltipFields + .filter((f) => row.extras[f] != null) + .map((f) => { + const v = row.extras[f]; + return { + label: f, + value: + typeof v === "number" ? v.toLocaleString() : String(v), + }; + }), + ); + } + matched++; + } else { + unmatched++; + if (unmatchedKeys.length < 12) unmatchedKeys.push(row.location); + } + } + for (const [id, v] of valueById) { + map.setFeatureState({ source: SOURCE_ID, id: id }, { v: v }); + } + + // Paint. + map.setPaintProperty(FILL_LAYER, "fill-color", fillColorExpression(scale)); + map.setPaintProperty(FILL_LAYER, "fill-opacity", s.opacity != null ? s.opacity : 1); + map.setLayoutProperty( + LINE_LAYER, + "visibility", + s.showBoundaries === false ? "none" : "visible", + ); + + renderLegend(x, scale, oc); + renderReport(x, { matched, unmatched, unmatchedKeys }, oc); + }); + + // Hover tooltip. + map.on("mousemove", FILL_LAYER, (e) => { + const f = e.features && e.features[0]; + if (!f) return; + map.getCanvas().style.cursor = "pointer"; + const id = String((f.properties && f.properties.joinId) || ""); + const name = String((f.properties && f.properties.name) || id); + const value = valueById.has(id) ? valueById.get(id) : null; + const extras = extrasById.get(id) || []; + let html = '
' + escapeHtml(name) + "
"; + const vlabel = model.valueLabel + ? '' + escapeHtml(model.valueLabel) + ": " + : ""; + html += + '
' + + vlabel + + '' + + (value == null ? "no data" : value.toLocaleString()) + + "
"; + for (const ex of extras) { + html += + '
' + + escapeHtml(ex.label) + + ': ' + + escapeHtml(ex.value) + + "
"; + } + tooltipEl.style.cssText = + tooltipEl.style.cssText.replace(/top:[^;]*;|bottom:[^;]*;|left:[^;]*;|right:[^;]*;/g, "") + + cornerStyle(s.tooltipPosition || "top-right"); + tooltipEl.style.backgroundColor = oc.bg; + tooltipEl.style.color = oc.fg; + tooltipEl.innerHTML = html; + tooltipEl.style.display = "block"; + }); + map.on("mouseleave", FILL_LAYER, () => { + map.getCanvas().style.cursor = ""; + tooltipEl.style.display = "none"; + }); + + if (resizeObserver) resizeObserver.disconnect(); + resizeObserver = new ResizeObserver(() => { + if (map) map.resize(); + }); + resizeObserver.observe(container); + }; + + const renderLegend = (x, scale, oc) => { + const s = x.style || {}; + const model = x.model || {}; + if (s.showLegend === false || !scale.legend || scale.legend.length === 0) { + legendEl.style.display = "none"; + return; + } + let html = ""; + if (model.valueLabel) { + html += + '
' + + escapeHtml(model.valueLabel) + + "
"; + } + const swatch = (color) => + ''; + for (const entry of scale.legend) { + html += + '
' + + swatch(entry.color) + + '' + + escapeHtml(entry.label) + + "
"; + } + html += + '
' + + swatch(scale.missingColor) + + "No data
"; + legendEl.style.cssText = + legendEl.style.cssText.replace(/top:[^;]*;|bottom:[^;]*;|left:[^;]*;|right:[^;]*;/g, "") + + cornerStyle(s.legendPosition || "bottom-right"); + legendEl.style.backgroundColor = oc.bg; + legendEl.style.color = oc.fg; + legendEl.innerHTML = html; + legendEl.style.display = "block"; + }; + + const renderReport = (x, report, oc) => { + const s = x.style || {}; + if (!report || (report.matched === 0 && report.unmatched === 0)) { + reportEl.style.display = "none"; + return; + } + let html = + '' + + report.matched.toLocaleString() + + " matched"; + if (report.unmatched > 0) { + const more = + report.unmatched > report.unmatchedKeys.length ? " …" : ""; + html += + ' · ' + + report.unmatched.toLocaleString() + + " unmatched"; + } + // Default the report to the corner opposite the legend's left/right to + // reduce overlap; bottom-left mirrors rtemislive's default. + reportEl.style.cssText = + reportEl.style.cssText.replace(/top:[^;]*;|bottom:[^;]*;|left:[^;]*;|right:[^;]*;/g, "") + + cornerStyle(s.reportPosition || "bottom-left"); + reportEl.style.backgroundColor = oc.bg; + reportEl.style.color = oc.fg; + reportEl.innerHTML = html; + reportEl.style.display = "block"; + }; + + return { + renderValue: (x) => renderMap(x), + resize: () => { + if (map) map.resize(); + }, + }; + }, +}); diff --git a/r/inst/htmlwidgets/rtemis-map.yaml b/r/inst/htmlwidgets/rtemis-map.yaml new file mode 100644 index 0000000..e01aee7 --- /dev/null +++ b/r/inst/htmlwidgets/rtemis-map.yaml @@ -0,0 +1,5 @@ +dependencies: + - name: rtemis-map-deps + version: 1.0.0 + src: htmlwidgets/lib/maplibre + script: rtemis-map-deps.js diff --git a/r/man/GraphEdge.Rd b/r/man/GraphEdge.Rd new file mode 100644 index 0000000..2d638e6 --- /dev/null +++ b/r/man/GraphEdge.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{GraphEdge} +\alias{GraphEdge} +\title{Graph Edge} +\usage{ +GraphEdge( + source = character(0), + target = character(0), + weight = NULL, + sign = NULL +) +} +\arguments{ +\item{source}{Character: Source node id.} + +\item{target}{Character: Target node id.} + +\item{weight}{Optional Numeric: Edge magnitude; drives thickness. For a +correlation graph, the absolute value of \code{r}.} + +\item{sign}{Optional Numeric \{-1, 1\}: Sign of the underlying value (e.g. +correlation): \code{1} positive, \code{-1} negative. Drives edge color when present.} +} +\description{ +One edge (link) in a network. The R analog of the \code{GraphEdge} TypeScript +interface in rtemislive (\verb{~/Code/live/src/lib/types.ts}). +} diff --git a/r/man/GraphModel.Rd b/r/man/GraphModel.Rd new file mode 100644 index 0000000..5c5b16e --- /dev/null +++ b/r/man/GraphModel.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{GraphModel} +\alias{GraphModel} +\title{Graph Model} +\usage{ +GraphModel(nodes = list(), edges = list(), directed = logical(0)) +} +\arguments{ +\item{nodes}{List: List of \link{GraphNode} objects.} + +\item{edges}{List: List of \link{GraphEdge} objects.} + +\item{directed}{Logical: Whether edges are directed.} +} +\description{ +A complete, renderer-agnostic network: a list of \link{GraphNode} objects, a list +of \link{GraphEdge} objects, and a directedness flag. The R analog of the +\code{GraphModel} TypeScript interface in rtemislive +(\verb{~/Code/live/src/lib/types.ts}), consumed by the \code{rtemis-graph} htmlwidget. +} +\details{ +Most users build this implicitly through \code{\link[=draw_network]{draw_network()}}; the constructor is +exported for power users who assemble nodes and edges directly. +} diff --git a/r/man/GraphNode.Rd b/r/man/GraphNode.Rd new file mode 100644 index 0000000..93a2923 --- /dev/null +++ b/r/man/GraphNode.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{GraphNode} +\alias{GraphNode} +\title{Graph Node} +\usage{ +GraphNode(id = character(0), label = NULL, value = NULL, group = NULL) +} +\arguments{ +\item{id}{Character: Unique node identifier. Edges reference nodes by this id.} + +\item{label}{Optional Character: Display label. Defaults to \code{id} in the +renderer when absent.} + +\item{value}{Optional Numeric: Drives node size when \code{scale_by_degree} is +enabled (e.g. weighted degree).} + +\item{group}{Optional Character: Categorical key for node color.} +} +\description{ +One node (vertex) in a network. The R analog of the \code{GraphNode} TypeScript +interface in rtemislive (\verb{~/Code/live/src/lib/types.ts}). +} diff --git a/r/man/MapLibreOption.Rd b/r/man/MapLibreOption.Rd new file mode 100644 index 0000000..183f04d --- /dev/null +++ b/r/man/MapLibreOption.Rd @@ -0,0 +1,72 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/map.R +\name{MapLibreOption} +\alias{MapLibreOption} +\title{MapLibre Render Option} +\usage{ +MapLibreOption( + model = NULL, + classification = "quantile", + color_scheme = "blues", + num_classes = 5, + opacity = 1, + show_boundaries = TRUE, + outline_width = 0.2, + show_legend = TRUE, + legend_position = "bottom-right", + tooltip_position = "top-right", + report_position = "bottom-left", + title = NULL +) +} +\arguments{ +\item{model}{\link{MapModel} or named list: The choropleth data (a list must +contain a \code{rows} element).} + +\item{classification}{Character \{"quantile", "equal", "jenks"\}: Class-break +method. \code{"quantile"} (equal counts), \code{"equal"} (equal intervals), or +\code{"jenks"} (natural breaks).} + +\item{color_scheme}{Character: Color ramp. One of the sequential schemes +\code{"blues"}, \code{"viridis"}, \code{"ylorrd"}, \code{"greens"}, \code{"magma"}, or the diverging +schemes \code{"rdbu"}, \code{"rdylgn"}, \code{"spectral"}, \code{"brbg"}.} + +\item{num_classes}{Numeric [2, 12]: Number of color classes.} + +\item{opacity}{Numeric [0, 1]: Region fill opacity.} + +\item{show_boundaries}{Logical: Whether to draw region outlines.} + +\item{outline_width}{Numeric [0, Inf): Region outline width in pixels.} + +\item{show_legend}{Logical: Whether to show the legend.} + +\item{legend_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Legend corner.} + +\item{tooltip_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Hover tooltip corner.} + +\item{report_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Join-report corner (shows matched / unmatched counts).} + +\item{title}{Optional Character: Title (currently surfaced via the value +label; reserved for future use).} +} +\description{ +The complete, validated render spec for a MapLibre choropleth: a \link{MapModel} +(the data) plus all visual styling and an optional title. This is the +MapLibre analog of \link{EChartsOption} / \link{SigmaOption} -- the single object +\code{\link[=draw]{draw()}} dispatches on to emit a \code{rtemis-map} widget. Theme is \emph{not} a +property here; like every backend, theming is supplied to \code{\link[=draw]{draw()}} and +resolved uniformly. +} +\details{ +Most users never touch this directly -- \code{\link[=draw_choropleth]{draw_choropleth()}} and \code{\link[=draw_map]{draw_map()}} +build it -- but power users can construct it for full control: +\code{draw(MapLibreOption(model = MapModel(...), color_scheme = "viridis"))}. + +Its \code{\link[=to_list]{to_list()}} produces the \verb{\{ model, style, title \}} payload consumed by +the \code{rtemis-map} htmlwidget binding (the geometry is added by the \code{\link[=draw]{draw()}} +method, since it depends only on the model's resolution). +} diff --git a/r/man/MapModel.Rd b/r/man/MapModel.Rd new file mode 100644 index 0000000..eb3c477 --- /dev/null +++ b/r/man/MapModel.Rd @@ -0,0 +1,37 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/map.R +\name{MapModel} +\alias{MapModel} +\title{Map Model} +\usage{ +MapModel( + rows = list(), + resolution = "country", + value_label = "value", + tooltip_fields = character(0) +) +} +\arguments{ +\item{rows}{List: List of \link{MapRow} objects.} + +\item{resolution}{Character \{"country", "state", "county"\}: Administrative +resolution. \code{"country"} joins on ISO-A3, \code{"state"} on 2-digit FIPS, +\code{"county"} on 5-digit FIPS.} + +\item{value_label}{Character: Display label for the value column (labels the +legend and tooltip value).} + +\item{tooltip_fields}{Character: Ordered names of the extra fields to show in +the tooltip (keys into each \link{MapRow}'s \code{extras}).} +} +\description{ +A complete, renderer-agnostic choropleth dataset: a list of \link{MapRow} objects, +the administrative \code{resolution} that selects the geometry, the label for the +value column, and the ordered tooltip field names. The R analog of the +\code{MapModel} TypeScript interface in rtemislive (\verb{~/Code/live/src/lib/types.ts}), +consumed by the \code{rtemis-map} htmlwidget. +} +\details{ +Most users build this implicitly through \code{\link[=draw_choropleth]{draw_choropleth()}}; the constructor +is exported for power users who assemble rows directly. +} diff --git a/r/man/MapRow.Rd b/r/man/MapRow.Rd new file mode 100644 index 0000000..675e708 --- /dev/null +++ b/r/man/MapRow.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/map.R +\name{MapRow} +\alias{MapRow} +\title{Map Row} +\usage{ +MapRow(location = character(0), value = integer(0), extras = NULL) +} +\arguments{ +\item{location}{Character: Raw location key (FIPS / ISO / name) before +normalization. Normalization to the canonical geometry id happens in the +renderer.} + +\item{value}{Numeric: The value that colors the region.} + +\item{extras}{Optional named list: Extra column values to show in the +tooltip, keyed by column name.} +} +\description{ +One region's datum in a choropleth: a raw location key, the numeric value +that colors the region, and optional extra fields to surface in the tooltip. +The R analog of the \code{MapRow} TypeScript interface in rtemislive +(\verb{~/Code/live/src/lib/types.ts}). +} diff --git a/r/man/SigmaOption.Rd b/r/man/SigmaOption.Rd new file mode 100644 index 0000000..071672f --- /dev/null +++ b/r/man/SigmaOption.Rd @@ -0,0 +1,81 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{SigmaOption} +\alias{SigmaOption} +\title{Sigma.js Render Option} +\usage{ +SigmaOption( + model = NULL, + layout = "force", + node_size = 10, + edge_scale = 3, + node_opacity = 0.95, + edge_opacity = 0.4, + show_labels = TRUE, + scale_by_degree = TRUE, + color_by_group = FALSE, + resolution = 1, + blend_edges = FALSE, + palette = as.character(rtemis_colors), + node_color = rtemis_colors[[1L]], + positive_color = rtemis_colors[[1L]], + negative_color = "#ff9e1f", + title = NULL +) +} +\arguments{ +\item{model}{\link{GraphModel} or named list: The graph to render (a list must +contain a \code{nodes} element).} + +\item{layout}{Character \{"force", "circular", "circlepack", "random"\}: +Layout algorithm. \code{"force"} is ForceAtlas2.} + +\item{node_size}{Numeric [0, Inf): Base node radius in screen pixels.} + +\item{edge_scale}{Numeric [0, Inf): Multiplier mapping normalized edge weight +to stroke width.} + +\item{node_opacity}{Numeric [0, 1]: Node fill opacity.} + +\item{edge_opacity}{Numeric [0, 1]: Edge stroke opacity.} + +\item{show_labels}{Logical: Whether to render node labels.} + +\item{scale_by_degree}{Logical: Scale each node's radius by its \code{value} +(weighted degree); when \code{FALSE} all nodes use the base size.} + +\item{color_by_group}{Logical: Color nodes by detected community (Louvain) +instead of a single hue.} + +\item{resolution}{Numeric [0, Inf): Louvain resolution; higher yields more, +smaller communities.} + +\item{blend_edges}{Logical: Color each edge as the blend of its two endpoint +node colors instead of by sign.} + +\item{palette}{Character: Categorical colors for communities.} + +\item{node_color}{Character: Single node color used when \code{color_by_group} is +\code{FALSE}.} + +\item{positive_color}{Character: Edge color for positive-sign edges.} + +\item{negative_color}{Character: Edge color for negative-sign edges.} + +\item{title}{Optional Character: Title shown above the network.} +} +\description{ +The complete, validated render spec for a Sigma.js network: a \link{GraphModel} +(the data) plus all visual styling and an optional title. This is the Sigma +analog of \link{EChartsOption} -- the single object \code{\link[=draw]{draw()}} dispatches on to emit +a \code{rtemis-graph} widget. Theme is \emph{not} a property here; like every backend, +theming is supplied to \code{\link[=draw]{draw()}} and resolved uniformly. +} +\details{ +Most users never touch this directly -- \code{\link[=draw_network]{draw_network()}} and \code{\link[=draw_graph]{draw_graph()}} +build it -- but power users can construct it for full control: +\code{draw(SigmaOption(model = GraphModel(...), layout = "circular"))}. + +Its \code{\link[=to_list]{to_list()}} produces the \verb{\{ model, style, title \}} payload consumed by +the \code{rtemis-graph} htmlwidget binding. +} diff --git a/r/man/draw.Rd b/r/man/draw.Rd index 38ed088..4db4806 100644 --- a/r/man/draw.Rd +++ b/r/man/draw.Rd @@ -2,29 +2,24 @@ % Please edit documentation in R/draw.R \name{draw} \alias{draw} -\title{Render an ECharts option as an htmlwidget} +\title{Render a render-spec option object as an htmlwidget} \usage{ draw( option, theme = NULL, - renderer = "canvas", width = NULL, height = NULL, elementId = NULL, filename = NULL, - meta = list() + ... ) } \arguments{ -\item{option}{\link{EChartsOption} or named list: Option object to render.} +\item{option}{\link{EChartsOption}, \link{SigmaOption}, or named list: Render spec to +draw.} \item{theme}{Optional \link{Theme}, list, or \code{NA}: Theme override. \code{NULL} enables -auto-detection of light/dark mode, or \code{NA} for no theme (raw ECharts -defaults). When \code{NULL}, the widget detects dark mode from VS Code, -RStudio, or the browser's \code{prefers-color-scheme} and applies -\code{\link[=theme_light]{theme_light()}} or \code{\link[=theme_dark]{theme_dark()}} accordingly.} - -\item{renderer}{Character \{"canvas", "svg"\}: Rendering engine.} +light/dark auto-detection; \code{NA} disables theming. Applied to every backend.} \item{width}{Optional Character or Numeric: Widget width.} @@ -33,17 +28,33 @@ RStudio, or the browser's \code{prefers-color-scheme} and applies \item{elementId}{Optional Character: Explicit element ID.} \item{filename}{Optional Character: If provided, the widget is also written to -this file via \code{\link[=save_drawing]{save_drawing()}}. Extension determines the format (currently -only \code{.svg} is supported).} +this file via \code{\link[=save_drawing]{save_drawing()}} (ECharts only; other backends warn and +ignore it). Extension determines the format (currently only \code{.svg}).} -\item{meta}{Optional named list: Extra fields merged into the widget payload. -Used internally (e.g. by \code{\link[=draw_heatmap]{draw_heatmap()}} to pass square-cell layout -parameters to the JS binding).} +\item{...}{Backend-specific arguments. ECharts accepts \code{renderer} +(Character \{"canvas", "svg"\}) and \code{meta} (named list of extra payload +fields, used internally e.g. by \code{\link[=draw_heatmap]{draw_heatmap()}}).} } \value{ htmlwidget: Widget object. } \description{ -Low-level function that takes an \link{EChartsOption} (or a plain list) and -renders it as an interactive htmlwidget. +\code{draw()} is the single low-level entry point for every rendering backend in +rtemis.draw. It is an S7 generic that dispatches on the \emph{option object} -- the +complete, validated render spec for one backend -- so the right JS binding is +selected purely by type, with no ambiguity: +} +\details{ +\itemize{ +\item \link{EChartsOption} -> ECharts (\code{rtemis-draw} widget) +\item \link{SigmaOption} -> Sigma.js (\code{rtemis-graph} widget) +} + +A plain named list is treated as a raw ECharts option (back-compatible with +the original \code{draw()}). + +Theme handling is uniform across backends and lives on \code{draw()}, not on the +option object: pass \code{NULL} (default) for light/dark auto-detection (from VS +Code, RStudio, or the browser's \code{prefers-color-scheme}), \code{NA} for no theme +(raw backend defaults), or a \link{Theme} / list to force one. } diff --git a/r/man/draw_choropleth.Rd b/r/man/draw_choropleth.Rd new file mode 100644 index 0000000..d7e8e3c --- /dev/null +++ b/r/man/draw_choropleth.Rd @@ -0,0 +1,130 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/map.R +\name{draw_choropleth} +\alias{draw_choropleth} +\title{Draw a Choropleth Map} +\usage{ +draw_choropleth( + data, + location, + value, + resolution = c("country", "state", "county"), + tooltip = NULL, + value_label = NULL, + classification = "quantile", + color_scheme = "blues", + num_classes = 5, + opacity = 1, + show_boundaries = TRUE, + outline_width = 0.2, + show_legend = TRUE, + legend_position = "bottom-right", + tooltip_position = "top-right", + report_position = "bottom-left", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) +} +\arguments{ +\item{data}{Data frame: One row per region.} + +\item{location}{Character: Name of the column holding the location key +(FIPS / ISO / name).} + +\item{value}{Character: Name of the numeric column to color by.} + +\item{resolution}{Character \{"country", "state", "county"\}: Administrative +resolution selecting the geometry and the join key.} + +\item{tooltip}{Optional Character: Names of extra columns to show in the +hover tooltip, in order.} + +\item{value_label}{Optional Character: Label for the value column in the +legend / tooltip; defaults to \code{value}.} + +\item{classification}{Character \{"quantile", "equal", "jenks"\}: Class-break +method. \code{"quantile"} (equal counts), \code{"equal"} (equal intervals), or +\code{"jenks"} (natural breaks).} + +\item{color_scheme}{Character: Color ramp. One of the sequential schemes +\code{"blues"}, \code{"viridis"}, \code{"ylorrd"}, \code{"greens"}, \code{"magma"}, or the diverging +schemes \code{"rdbu"}, \code{"rdylgn"}, \code{"spectral"}, \code{"brbg"}.} + +\item{num_classes}{Numeric [2, 12]: Number of color classes.} + +\item{opacity}{Numeric [0, 1]: Region fill opacity.} + +\item{show_boundaries}{Logical: Whether to draw region outlines.} + +\item{outline_width}{Numeric [0, Inf): Region outline width in pixels.} + +\item{show_legend}{Logical: Whether to show the legend.} + +\item{legend_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Legend corner.} + +\item{tooltip_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Hover tooltip corner.} + +\item{report_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Join-report corner (shows matched / unmatched counts).} + +\item{title}{Optional Character: Title (currently surfaced via the value +label; reserved for future use).} + +\item{theme}{Optional \link{Theme}, list, or \code{NA}: Theme override. \code{NULL} enables +light/dark auto-detection (matching \code{\link[=draw]{draw()}}).} + +\item{width}{Optional Character or Numeric: Widget width.} + +\item{height}{Optional Character or Numeric: Widget height.} + +\item{elementId}{Optional Character: Explicit element ID.} + +\item{filename}{Optional Character: Currently ignored with a warning (static +export of map widgets is not yet supported); accepted for signature parity +with the other \verb{draw_*} functions.} +} +\value{ +htmlwidget. +} +\description{ +Render a choropleth map with MapLibre GL: regions shaded by a value, joined +to vendored administrative boundaries (countries by ISO-A3, US states / +counties by FIPS). No basemap tiles -- boundaries render on the themed +background, with light/dark auto-detection like the rest of \verb{draw_*}. +} +\details{ +The \code{location} column is matched to the geometry in the renderer, which +accepts ISO-A3 / ISO-A2 / country code for countries, and FIPS / postal +abbreviation / full name for US states (5-digit FIPS for counties). A +join report in the corner surfaces any unmatched keys. +} +\examples{ +\dontrun{ +# Country choropleth from ISO-A3 codes +df <- data.frame( + iso = c("USA", "CAN", "MEX", "BRA", "FRA"), + gdp = c(25.5, 2.1, 1.4, 1.9, 2.9) +) +draw_choropleth(df, location = "iso", value = "gdp") + +# US states by postal abbreviation, natural-breaks classification +states <- data.frame( + st = state.abb, + pop = as.numeric(state.x77[, "Population"]) +) +draw_choropleth( + states, + location = "st", + value = "pop", + resolution = "state", + classification = "jenks", + color_scheme = "viridis" +) +} +} diff --git a/r/man/draw_graph.Rd b/r/man/draw_graph.Rd new file mode 100644 index 0000000..068e7d1 --- /dev/null +++ b/r/man/draw_graph.Rd @@ -0,0 +1,91 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{draw_graph} +\alias{draw_graph} +\title{Render a GraphModel as a Sigma.js htmlwidget} +\usage{ +draw_graph( + model, + layout = "force", + node_size = 10, + edge_scale = 3, + node_opacity = 0.95, + edge_opacity = 0.4, + show_labels = TRUE, + scale_by_degree = TRUE, + color_by_group = FALSE, + resolution = 1, + blend_edges = FALSE, + palette = rtemis_colors, + node_color = rtemis_colors[[1L]], + positive_color = rtemis_colors[[1L]], + negative_color = "#ff9e1f", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) +} +\arguments{ +\item{model}{\link{GraphModel} or named list: The graph to render.} + +\item{layout}{Character \{"force", "circular", "circlepack", "random"\}: +Layout algorithm. \code{"force"} is ForceAtlas2.} + +\item{node_size}{Numeric [0, Inf): Base node radius in screen pixels.} + +\item{edge_scale}{Numeric [0, Inf): Multiplier mapping normalized edge weight +to stroke width.} + +\item{node_opacity}{Numeric [0, 1]: Node fill opacity.} + +\item{edge_opacity}{Numeric [0, 1]: Edge stroke opacity.} + +\item{show_labels}{Logical: Whether to render node labels.} + +\item{scale_by_degree}{Logical: Scale each node's radius by its \code{value} +(weighted degree); when \code{FALSE} all nodes use the base size.} + +\item{color_by_group}{Logical: Color nodes by detected community (Louvain) +instead of a single hue.} + +\item{resolution}{Numeric [0, Inf): Louvain resolution; higher yields more, +smaller communities.} + +\item{blend_edges}{Logical: Color each edge as the blend of its two endpoint +node colors instead of by sign.} + +\item{palette}{Character: Categorical colors for communities.} + +\item{node_color}{Character: Single node color used when \code{color_by_group} is +\code{FALSE}.} + +\item{positive_color}{Character: Edge color for positive-sign edges.} + +\item{negative_color}{Character: Edge color for negative-sign edges.} + +\item{title}{Optional Character: Title shown above the network.} + +\item{theme}{Optional \link{Theme}, list, or \code{NA}: Theme override. \code{NULL} enables +light/dark auto-detection (matching \code{\link[=draw]{draw()}}).} + +\item{width}{Optional Character or Numeric: Widget width.} + +\item{height}{Optional Character or Numeric: Widget height.} + +\item{elementId}{Optional Character: Explicit element ID.} + +\item{filename}{Optional Character: Currently ignored with a warning (static +export of network widgets is not yet supported); accepted for signature +parity with the other \verb{draw_*} functions.} +} +\value{ +htmlwidget. +} +\description{ +Low-level renderer: takes a \link{GraphModel} (or a plain list with \code{nodes}, +\code{edges}, \code{directed}) and produces an interactive network htmlwidget backed by +Sigma.js + graphology. Most users call \code{\link[=draw_network]{draw_network()}} instead. +} diff --git a/r/man/draw_map.Rd b/r/man/draw_map.Rd new file mode 100644 index 0000000..70e2399 --- /dev/null +++ b/r/man/draw_map.Rd @@ -0,0 +1,80 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/map.R +\name{draw_map} +\alias{draw_map} +\title{Render a MapModel as a MapLibre choropleth htmlwidget} +\usage{ +draw_map( + model, + classification = "quantile", + color_scheme = "blues", + num_classes = 5, + opacity = 1, + show_boundaries = TRUE, + outline_width = 0.2, + show_legend = TRUE, + legend_position = "bottom-right", + tooltip_position = "top-right", + report_position = "bottom-left", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) +} +\arguments{ +\item{model}{\link{MapModel} or named list: The choropleth data to render.} + +\item{classification}{Character \{"quantile", "equal", "jenks"\}: Class-break +method. \code{"quantile"} (equal counts), \code{"equal"} (equal intervals), or +\code{"jenks"} (natural breaks).} + +\item{color_scheme}{Character: Color ramp. One of the sequential schemes +\code{"blues"}, \code{"viridis"}, \code{"ylorrd"}, \code{"greens"}, \code{"magma"}, or the diverging +schemes \code{"rdbu"}, \code{"rdylgn"}, \code{"spectral"}, \code{"brbg"}.} + +\item{num_classes}{Numeric [2, 12]: Number of color classes.} + +\item{opacity}{Numeric [0, 1]: Region fill opacity.} + +\item{show_boundaries}{Logical: Whether to draw region outlines.} + +\item{outline_width}{Numeric [0, Inf): Region outline width in pixels.} + +\item{show_legend}{Logical: Whether to show the legend.} + +\item{legend_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Legend corner.} + +\item{tooltip_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Hover tooltip corner.} + +\item{report_position}{Character \{"top-left", "top-right", "bottom-left", +"bottom-right"\}: Join-report corner (shows matched / unmatched counts).} + +\item{title}{Optional Character: Title (currently surfaced via the value +label; reserved for future use).} + +\item{theme}{Optional \link{Theme}, list, or \code{NA}: Theme override. \code{NULL} enables +light/dark auto-detection (matching \code{\link[=draw]{draw()}}).} + +\item{width}{Optional Character or Numeric: Widget width.} + +\item{height}{Optional Character or Numeric: Widget height.} + +\item{elementId}{Optional Character: Explicit element ID.} + +\item{filename}{Optional Character: Currently ignored with a warning (static +export of map widgets is not yet supported); accepted for signature parity +with the other \verb{draw_*} functions.} +} +\value{ +htmlwidget. +} +\description{ +Mid-level builder: takes a \link{MapModel} (or a plain list with \code{rows}, +\code{resolution}, ...) plus styling, assembles a \link{MapLibreOption}, and dispatches +through \code{\link[=draw]{draw()}}. Most users call \code{\link[=draw_choropleth]{draw_choropleth()}} instead. +} diff --git a/r/man/draw_network.Rd b/r/man/draw_network.Rd new file mode 100644 index 0000000..14cda27 --- /dev/null +++ b/r/man/draw_network.Rd @@ -0,0 +1,128 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/network.R +\name{draw_network} +\alias{draw_network} +\title{Draw a Network / Graph} +\usage{ +draw_network( + x, + nodes = NULL, + directed = FALSE, + threshold = NULL, + self_loops = FALSE, + layout = "force", + node_size = 10, + edge_scale = 3, + node_opacity = 0.95, + edge_opacity = 0.4, + show_labels = TRUE, + scale_by_degree = TRUE, + color_by_group = FALSE, + resolution = 1, + blend_edges = FALSE, + palette = rtemis_colors, + node_color = rtemis_colors[1L], + positive_color = rtemis_colors[1L], + negative_color = "#ff9e1f", + title = NULL, + theme = NULL, + width = NULL, + height = NULL, + elementId = NULL, + filename = NULL +) +} +\arguments{ +\item{x}{Numeric matrix or Data frame: A square weight / adjacency matrix, or +an edge-list data frame with \code{source} / \code{target} columns (and optional +\code{weight}, \code{sign}). For a matrix, dimnames supply node ids and \verb{[i, j]} is +the edge weight (zero / \code{NA} entries produce no edge); the absolute value +drives thickness and the sign drives color. For an edge list, \code{source} and +\code{target} name the endpoints (the first two columns if those names are +absent), with optional \code{weight} and \code{sign} columns.} + +\item{nodes}{Optional Data frame: Node attributes (\code{id}/\code{name}, \code{label}, +\code{value}, \code{group}). Used only with edge-list input; ignored for matrix +input.} + +\item{directed}{Logical: Whether the graph is directed.} + +\item{threshold}{Optional Numeric [0, Inf): For matrix input, drop edges +whose absolute weight is below this value.} + +\item{self_loops}{Logical: For matrix input, whether to keep diagonal +self-edges.} + +\item{layout}{Character \{"force", "circular", "circlepack", "random"\}: +Layout algorithm. \code{"force"} is ForceAtlas2.} + +\item{node_size}{Numeric [0, Inf): Base node radius in screen pixels.} + +\item{edge_scale}{Numeric [0, Inf): Multiplier mapping normalized edge weight +to stroke width.} + +\item{node_opacity}{Numeric [0, 1]: Node fill opacity.} + +\item{edge_opacity}{Numeric [0, 1]: Edge stroke opacity.} + +\item{show_labels}{Logical: Whether to render node labels.} + +\item{scale_by_degree}{Logical: Scale each node's radius by its \code{value} +(weighted degree); when \code{FALSE} all nodes use the base size.} + +\item{color_by_group}{Logical: Color nodes by detected community (Louvain) +instead of a single hue.} + +\item{resolution}{Numeric [0, Inf): Louvain resolution; higher yields more, +smaller communities.} + +\item{blend_edges}{Logical: Color each edge as the blend of its two endpoint +node colors instead of by sign.} + +\item{palette}{Character: Categorical colors for communities.} + +\item{node_color}{Character: Single node color used when \code{color_by_group} is +\code{FALSE}.} + +\item{positive_color}{Character: Edge color for positive-sign edges.} + +\item{negative_color}{Character: Edge color for negative-sign edges.} + +\item{title}{Optional Character: Title shown above the network.} + +\item{theme}{Optional \link{Theme}, list, or \code{NA}: Theme override. \code{NULL} enables +light/dark auto-detection (matching \code{\link[=draw]{draw()}}).} + +\item{width}{Optional Character or Numeric: Widget width.} + +\item{height}{Optional Character or Numeric: Widget height.} + +\item{elementId}{Optional Character: Explicit element ID.} + +\item{filename}{Optional Character: Currently ignored with a warning (static +export of network widgets is not yet supported); accepted for signature +parity with the other \verb{draw_*} functions.} +} +\value{ +htmlwidget. +} +\description{ +Render a network with Sigma.js. Accepts either a square weight / adjacency +matrix (e.g. a correlation matrix) or an edge-list data frame, dispatching on +the type of \code{x}. Communities are detected with Louvain and laid out with +ForceAtlas2 by default. +} +\examples{ +\dontrun{ +# Correlation matrix +draw_network(cor(mtcars), threshold = 0.5) + +# Edge list +edges <- data.frame( + source = c("a", "a", "b"), + target = c("b", "c", "c"), + weight = c(1, 2, 0.5) +) +draw_network(edges) +} +} diff --git a/r/tests/testthat/test-map.R b/r/tests/testthat/test-map.R new file mode 100644 index 0000000..121fba9 --- /dev/null +++ b/r/tests/testthat/test-map.R @@ -0,0 +1,240 @@ +# test-map.R +# Tests for MapRow, MapModel, MapLibreOption, the model builder +# (map_from_data_frame), the geometry loader, draw_map(), draw_choropleth(), +# and draw() dispatch to the MapLibre backend. + +# -- MapRow --------------------------------------------------------------------- + +test_that("MapRow serializes location/value and optional extras", { + r <- MapRow(location = "USA", value = 25.5, extras = list(region = "NA")) + expect_true(S7::S7_inherits(r, MapRow)) + out <- to_list(r) + expect_equal(out[["location"]], "USA") + expect_equal(out[["value"]], 25.5) + expect_equal(out[["extras"]][["region"]], "NA") +}) + +test_that("MapRow drops extras when NULL", { + out <- to_list(MapRow(location = "CAN", value = 2.1)) + expect_equal(names(out), c("location", "value")) +}) + +test_that("MapRow rejects a non-scalar value and unnamed extras", { + expect_error(MapRow(location = "USA", value = c(1, 2))) + expect_error(MapRow(location = "USA", value = 1, extras = list(1, 2))) +}) + +# -- MapModel ------------------------------------------------------------------- + +test_that("MapModel assembles rows + resolution + labels", { + m <- MapModel( + rows = list( + MapRow(location = "USA", value = 1), + MapRow(location = "CAN", value = 2) + ), + resolution = "country", + value_label = "GDP", + tooltip_fields = "region" + ) + out <- to_list(m) + expect_named(out, c("rows", "resolution", "valueLabel", "tooltipFields")) + expect_length(out[["rows"]], 2L) + expect_null(names(out[["rows"]])) + expect_equal(out[["valueLabel"]], "GDP") + # tooltipFields must serialize as a JSON array (unnamed list) + expect_type(out[["tooltipFields"]], "list") + expect_null(names(out[["tooltipFields"]])) +}) + +test_that("MapModel tooltipFields is an empty array by default", { + out <- to_list(MapModel(rows = list(MapRow(location = "USA", value = 1)))) + expect_length(out[["tooltipFields"]], 0L) +}) + +test_that("MapModel rejects an invalid resolution and non-MapRow rows", { + expect_error(MapModel(resolution = "planet")) + expect_error(MapModel(rows = list(list(location = "USA", value = 1)))) +}) + +# -- MapLibreOption ------------------------------------------------------------- + +test_that("MapLibreOption applies sensible style defaults", { + m <- MapModel(rows = list(MapRow(location = "USA", value = 1))) + opt <- MapLibreOption(model = m) + expect_true(S7::S7_inherits(opt, MapLibreOption)) + expect_equal(opt@classification, "quantile") + expect_equal(opt@color_scheme, "blues") + expect_equal(opt@num_classes, 5) + expect_equal(opt@opacity, 1) + expect_true(opt@show_boundaries) + expect_equal(opt@legend_position, "bottom-right") +}) + +test_that("MapLibreOption to_list produces the {model, style} payload shape", { + m <- MapModel(rows = list(MapRow(location = "USA", value = 1))) + out <- to_list(MapLibreOption( + model = m, + classification = "jenks", + color_scheme = "viridis", + num_classes = 7 + )) + expect_named(out, c("model", "style")) + expect_equal(out[["style"]][["classification"]], "jenks") + expect_equal(out[["style"]][["colorScheme"]], "viridis") + expect_equal(out[["style"]][["numClasses"]], 7) + expect_true(all( + c("showBoundaries", "outlineWidth", "legendPosition", "reportPosition") %in% + names(out[["style"]]) + )) + expect_false("title" %in% names(out)) +}) + +test_that("MapLibreOption validates enums and ranges", { + m <- MapModel(rows = list(MapRow(location = "USA", value = 1))) + expect_error(MapLibreOption(model = m, classification = "kmeans")) + expect_error(MapLibreOption(model = m, color_scheme = "rainbow")) + expect_error(MapLibreOption(model = m, num_classes = 1)) + expect_error(MapLibreOption(model = m, num_classes = 99)) + expect_error(MapLibreOption(model = m, legend_position = "middle")) +}) + +test_that("MapLibreOption accepts a plain list model but rejects one without rows", { + expect_no_error(MapLibreOption( + model = list(rows = list(), resolution = "country") + )) + expect_error(MapLibreOption(model = list(resolution = "country")), "rows") + expect_error(MapLibreOption(model = 42), "MapModel") +}) + +# -- map_from_data_frame -------------------------------------------------------- + +test_that("map_from_data_frame builds rows with extras from tooltip columns", { + df <- data.frame( + iso = c("USA", "CAN"), + gdp = c(25.5, 2.1), + region = c("NA", "NA"), + stringsAsFactors = FALSE + ) + m <- map_from_data_frame( + df, + location = "iso", + value = "gdp", + resolution = "country", + tooltip = "region" + ) + out <- to_list(m) + expect_length(out[["rows"]], 2L) + expect_equal(out[["rows"]][[1L]][["location"]], "USA") + expect_equal(out[["rows"]][[1L]][["extras"]][["region"]], "NA") + expect_equal(out[["tooltipFields"]][[1L]], "region") + # value_label defaults to the value column name + expect_equal(out[["valueLabel"]], "gdp") +}) + +test_that("map_from_data_frame errors on missing columns", { + df <- data.frame(iso = "USA", gdp = 1) + expect_error( + map_from_data_frame(df, "iso", "nope", "country"), + "not found" + ) +}) + +# -- geometry loader ------------------------------------------------------------ + +test_that("load_map_geometry returns embedded topojson + metadata per resolution", { + g <- load_map_geometry("country") + expect_equal(g[["object"]], "countries") + expect_equal(g[["center"]], c(0, 20)) + expect_gt(nchar(g[["topojson"]]), 1000) + # the string is valid JSON describing a TopoJSON + topo <- jsonlite::fromJSON(g[["topojson"]], simplifyVector = FALSE) + expect_equal(topo[["type"]], "Topology") + expect_true("countries" %in% names(topo[["objects"]])) + + expect_equal(load_map_geometry("state")[["object"]], "states") + expect_equal(load_map_geometry("county")[["object"]], "counties") +}) + +# -- draw() dispatch + widget --------------------------------------------------- + +test_that("draw() dispatches a MapLibreOption to the rtemis-map backend", { + m <- MapModel(rows = list(MapRow(location = "USA", value = 1))) + w <- draw(MapLibreOption(model = m)) + expect_s3_class(w, "htmlwidget") + expect_equal(attr(w, "package"), "rtemis.draw") + # Map payload shape: model/style/geo, not the ECharts shape (option) + expect_false(is.null(w$x$model)) + expect_false(is.null(w$x$style)) + expect_false(is.null(w$x$geo)) + expect_null(w$x$option) + # geometry embedded for the model's resolution + expect_equal(w$x$geo$object, "countries") + expect_gt(nchar(w$x$geo$topojson), 1000) + # theme resolved uniformly by draw() + expect_true(w$x$autoTheme) +}) + +test_that("draw_choropleth returns a configured htmlwidget", { + df <- data.frame( + iso = c("USA", "CAN", "MEX", "BRA", "FRA"), + gdp = c(25.5, 2.1, 1.4, 1.9, 2.9), + region = c("N", "N", "N", "S", "E"), + stringsAsFactors = FALSE + ) + w <- draw_choropleth( + df, + location = "iso", + value = "gdp", + tooltip = "region", + color_scheme = "viridis", + classification = "jenks" + ) + expect_s3_class(w, "htmlwidget") + expect_length(w$x$model$rows, 5L) + expect_equal(w$x$style$colorScheme, "viridis") + expect_equal(w$x$style$classification, "jenks") + expect_equal(w$x$model$tooltipFields[[1L]], "region") +}) + +test_that("draw_choropleth embeds the US geometry for state / county resolutions", { + ws <- draw_choropleth( + data.frame(st = c("CA", "TX"), v = c(1, 2)), + location = "st", + value = "v", + resolution = "state" + ) + expect_equal(ws$x$geo$object, "states") + + wc <- draw_choropleth( + data.frame(fips = "06075", v = 1), + location = "fips", + value = "v", + resolution = "county" + ) + expect_equal(wc$x$geo$object, "counties") +}) + +test_that("draw_choropleth honours an explicit theme and NA (no theme)", { + df <- data.frame(iso = "USA", gdp = 1) + wt <- draw_choropleth(df, "iso", "gdp", theme = theme_dark()) + expect_false(is.null(wt$x$theme)) + expect_null(wt$x$autoTheme) + + wna <- draw_choropleth(df, "iso", "gdp", theme = NA) + expect_null(wna$x$theme) + expect_null(wna$x$autoTheme) +}) + +test_that("draw_choropleth warns and ignores filename (no static export yet)", { + df <- data.frame(iso = "USA", gdp = 1) + expect_warning( + draw_choropleth(df, "iso", "gdp", filename = "map.png"), + "not yet supported" + ) +}) + +test_that("draw_choropleth rejects an invalid resolution / scheme", { + df <- data.frame(iso = "USA", gdp = 1) + expect_error(draw_choropleth(df, "iso", "gdp", resolution = "planet")) + expect_error(draw_choropleth(df, "iso", "gdp", color_scheme = "rainbow")) +}) diff --git a/r/tests/testthat/test-network.R b/r/tests/testthat/test-network.R new file mode 100644 index 0000000..345de24 --- /dev/null +++ b/r/tests/testthat/test-network.R @@ -0,0 +1,319 @@ +# test-network.R +# Tests for GraphNode, GraphEdge, GraphModel, the model builders +# (graph_from_matrix / graph_from_edge_list), draw_graph(), and draw_network(). + +# -- GraphNode ------------------------------------------------------------------ + +test_that("GraphNode requires an id and serializes camelCase-free fields", { + n <- GraphNode(id = "a", label = "Node A", value = 3, group = "g1") + expect_true(S7::S7_inherits(n, GraphNode)) + out <- to_list(n) + expect_equal(out[["id"]], "a") + expect_equal(out[["label"]], "Node A") + expect_equal(out[["value"]], 3) + expect_equal(out[["group"]], "g1") +}) + +test_that("GraphNode drops NULL fields", { + out <- to_list(GraphNode(id = "x")) + expect_equal(names(out), "id") +}) + +test_that("GraphNode rejects a missing / non-scalar id", { + expect_error(GraphNode()) + expect_error(GraphNode(id = c("a", "b"))) +}) + +# -- GraphEdge ------------------------------------------------------------------ + +test_that("GraphEdge serializes source/target/weight/sign", { + e <- GraphEdge(source = "a", target = "b", weight = 0.8, sign = -1) + out <- to_list(e) + expect_equal(out[["source"]], "a") + expect_equal(out[["target"]], "b") + expect_equal(out[["weight"]], 0.8) + expect_equal(out[["sign"]], -1) +}) + +test_that("GraphEdge rejects an invalid sign", { + expect_error(GraphEdge(source = "a", target = "b", sign = 2)) + expect_error(GraphEdge(source = "a", target = "b", sign = 0)) +}) + +# -- GraphModel ----------------------------------------------------------------- + +test_that("GraphModel assembles nodes, edges, directed", { + m <- GraphModel( + nodes = list(GraphNode(id = "a"), GraphNode(id = "b")), + edges = list(GraphEdge(source = "a", target = "b")), + directed = TRUE + ) + out <- to_list(m) + expect_length(out[["nodes"]], 2L) + expect_length(out[["edges"]], 1L) + expect_true(out[["directed"]]) + # nodes/edges must serialize as unnamed arrays + expect_null(names(out[["nodes"]])) + expect_equal(out[["nodes"]][[1L]][["id"]], "a") +}) + +test_that("GraphModel rejects non-GraphNode nodes", { + expect_error(GraphModel(nodes = list(list(id = "a")))) +}) + +# -- graph_from_matrix ---------------------------------------------------------- + +test_that("graph_from_matrix builds an undirected graph from the upper triangle", { + m <- matrix(c(0, 1, 2, 1, 0, 0, 2, 0, 0), nrow = 3) + rownames(m) <- colnames(m) <- c("a", "b", "c") + g <- graph_from_matrix(m) + out <- to_list(g) + expect_false(out[["directed"]]) + expect_length(out[["nodes"]], 3L) + # upper triangle non-zero entries: (a,b)=1, (a,c)=2 -> 2 edges + expect_length(out[["edges"]], 2L) + # node value defaults to weighted degree: a connects to b(1)+c(2)=3 + vals <- vapply(out[["nodes"]], function(n) n[["value"]], numeric(1)) + names(vals) <- vapply(out[["nodes"]], function(n) n[["id"]], character(1)) + expect_equal(vals[["a"]], 3) +}) + +test_that("graph_from_matrix encodes sign and respects threshold", { + m <- matrix(c(0, -0.9, 0.2, -0.9, 0, 0, 0.2, 0, 0), nrow = 3) + rownames(m) <- colnames(m) <- c("a", "b", "c") + g <- graph_from_matrix(m, threshold = 0.5) + out <- to_list(g) + # only |w| >= 0.5 kept -> the (a,b) = -0.9 edge + expect_length(out[["edges"]], 1L) + expect_equal(out[["edges"]][[1L]][["sign"]], -1) + expect_equal(out[["edges"]][[1L]][["weight"]], 0.9) +}) + +test_that("graph_from_matrix directed reads all off-diagonal entries", { + m <- matrix(c(0, 1, 0, 2, 0, 3, 0, 0, 0), nrow = 3) + g <- graph_from_matrix(m, directed = TRUE) + out <- to_list(g) + expect_true(out[["directed"]]) + # off-diagonal non-zero: [2,1]=1, [1,2]=2, [3,2]=3 -> 3 directed edges + expect_length(out[["edges"]], 3L) +}) + +test_that("graph_from_matrix rejects a non-square matrix", { + expect_error(graph_from_matrix(matrix(1:6, nrow = 2)), "square") +}) + +# -- graph_from_edge_list ------------------------------------------------------- + +test_that("graph_from_edge_list reads named columns", { + edges <- data.frame( + source = c("a", "a", "b"), + target = c("b", "c", "c"), + weight = c(1, 2, 0.5), + stringsAsFactors = FALSE + ) + g <- graph_from_edge_list(edges) + out <- to_list(g) + expect_length(out[["edges"]], 3L) + # three distinct node ids discovered from the edges + expect_length(out[["nodes"]], 3L) +}) + +test_that("graph_from_edge_list falls back to positional columns", { + edges <- data.frame(from = c("a"), to = c("b"), stringsAsFactors = FALSE) + g <- graph_from_edge_list(edges) + out <- to_list(g) + expect_equal(out[["edges"]][[1L]][["source"]], "a") + expect_equal(out[["edges"]][[1L]][["target"]], "b") +}) + +test_that("graph_from_edge_list adds edge-referenced nodes missing from node table", { + edges <- data.frame( + source = "a", + target = "z", + stringsAsFactors = FALSE + ) + nodes <- data.frame(id = "a", group = "g1", stringsAsFactors = FALSE) + g <- graph_from_edge_list(edges, nodes = nodes) + out <- to_list(g) + ids <- vapply(out[["nodes"]], function(n) n[["id"]], character(1)) + expect_setequal(ids, c("a", "z")) +}) + +# -- draw_graph / draw_network -------------------------------------------------- + +test_that("draw_network returns an htmlwidget for matrix input", { + m <- matrix(c(0, 0.8, 0.8, 0), nrow = 2) + rownames(m) <- colnames(m) <- c("a", "b") + w <- draw_network(m) + expect_s3_class(w, "htmlwidget") + expect_equal(attr(w, "package"), "rtemis.draw") + # payload carries the model + style for the JS binding + expect_length(w$x$model$nodes, 2L) + expect_equal(w$x$style$layout, "force") +}) + +test_that("draw_network returns an htmlwidget for edge-list input", { + edges <- data.frame( + source = c("a", "b"), + target = c("b", "c"), + stringsAsFactors = FALSE + ) + w <- draw_network(edges, layout = "circular", color_by_group = TRUE) + expect_s3_class(w, "htmlwidget") + expect_equal(w$x$style$layout, "circular") + expect_true(w$x$style$colorByGroup) +}) + +test_that("draw_network rejects unsupported input types", { + expect_error(draw_network(1:10), "matrix") + expect_error(draw_network("nope"), "matrix") +}) + +test_that("draw_graph auto-theme payload carries light and dark themes", { + m <- matrix(c(0, 1, 1, 0), nrow = 2) + w <- draw_graph(graph_from_matrix(m)) + expect_true(w$x$autoTheme) + expect_false(is.null(w$x$theme)) + expect_false(is.null(w$x$themeDark)) +}) + +# -- SigmaOption ---------------------------------------------------------------- + +test_that("SigmaOption applies sensible style defaults", { + m <- GraphModel( + nodes = list(GraphNode(id = "a"), GraphNode(id = "b")), + edges = list(GraphEdge(source = "a", target = "b")), + directed = FALSE + ) + opt <- SigmaOption(model = m) + expect_true(S7::S7_inherits(opt, SigmaOption)) + expect_equal(opt@layout, "force") + expect_equal(opt@node_size, 10) + expect_equal(opt@node_opacity, 0.95) + expect_true(opt@scale_by_degree) + expect_false(opt@color_by_group) + expect_equal(opt@node_color, rtemis_colors[[1L]]) + expect_equal(opt@negative_color, "#ff9e1f") +}) + +test_that("SigmaOption to_list produces the {model, style} payload shape", { + m <- GraphModel( + nodes = list(GraphNode(id = "a"), GraphNode(id = "b")), + edges = list(GraphEdge(source = "a", target = "b", weight = 0.5)), + directed = FALSE + ) + out <- to_list(SigmaOption(model = m, layout = "circular", node_size = 20)) + expect_named(out, c("model", "style")) + expect_length(out$model$nodes, 2L) + # style keys are camelCase for the JS binding + expect_equal(out$style$layout, "circular") + expect_equal(out$style$nodeSize, 20) + expect_true("scaleByDegree" %in% names(out$style)) + # title omitted when NULL + expect_false("title" %in% names(out)) +}) + +test_that("SigmaOption serializes a title when present", { + m <- GraphModel( + nodes = list(GraphNode(id = "a")), + edges = list(), + directed = FALSE + ) + out <- to_list(SigmaOption(model = m, title = "My Network")) + expect_equal(out$title, "My Network") +}) + +test_that("SigmaOption accepts a plain list model but rejects a model without nodes", { + expect_no_error(SigmaOption(model = list(nodes = list(), edges = list()))) + expect_error(SigmaOption(model = list(edges = list())), "nodes") + expect_error(SigmaOption(model = 42), "GraphModel") +}) + +test_that("SigmaOption rejects an invalid layout", { + m <- GraphModel( + nodes = list(GraphNode(id = "a")), + edges = list(), + directed = FALSE + ) + expect_error(SigmaOption(model = m, layout = "spiral")) +}) + +# -- draw() generic dispatch ---------------------------------------------------- + +test_that("draw() dispatches a SigmaOption to the rtemis-graph backend", { + m <- GraphModel( + nodes = list(GraphNode(id = "a"), GraphNode(id = "b")), + edges = list(GraphEdge(source = "a", target = "b")), + directed = FALSE + ) + w <- draw(SigmaOption(model = m)) + expect_s3_class(w, "htmlwidget") + # Sigma payload shape (model/style), not the ECharts shape (option) + expect_false(is.null(w$x$model)) + expect_false(is.null(w$x$style)) + expect_null(w$x$option) + # theme resolved uniformly by draw(), not carried on the option + expect_true(w$x$autoTheme) +}) + +test_that("draw(SigmaOption) honours an explicit theme and NA (no theme)", { + m <- GraphModel( + nodes = list(GraphNode(id = "a")), + edges = list(), + directed = FALSE + ) + wt <- draw(SigmaOption(model = m), theme = theme_dark()) + expect_false(is.null(wt$x$theme)) + expect_null(wt$x$autoTheme) + + wna <- draw(SigmaOption(model = m), theme = NA) + expect_null(wna$x$theme) + expect_null(wna$x$autoTheme) +}) + +test_that("draw(SigmaOption) warns and ignores filename (no static export yet)", { + m <- GraphModel( + nodes = list(GraphNode(id = "a")), + edges = list(), + directed = FALSE + ) + expect_warning( + draw(SigmaOption(model = m), filename = "net.svg"), + "not yet supported" + ) +}) + +test_that("draw() still renders an EChartsOption and a bare list", { + we <- draw(EChartsOption(series = LineSeries(data = list(1, 2, 3)))) + expect_s3_class(we, "htmlwidget") + expect_false(is.null(we$x$option)) + expect_equal(we$x$renderer, "canvas") + + wl <- draw(list(series = list(list(type = "line", data = list(1, 2, 3))))) + expect_s3_class(wl, "htmlwidget") + expect_false(is.null(wl$x$option)) +}) + +test_that("graph_from_edge_list assigns 0 (not NA) to isolated nodes", { + # "iso" appears in the node table but in no edge: its weighted degree is + # absent from the degree vector, which must coalesce to 0 rather than NA. + edges <- data.frame(source = "a", target = "b", weight = 2) + nodes <- data.frame(id = c("a", "b", "iso")) + m <- graph_from_edge_list(edges, nodes = nodes) + vals <- vapply(m@nodes, function(n) n@value, numeric(1L)) + expect_false(anyNA(vals)) + iso <- Filter(function(n) n@id == "iso", m@nodes)[[1L]] + expect_equal(iso@value, 0) +}) + +test_that("SigmaOption strips names from color scalars when serializing", { + m <- GraphModel( + nodes = list(GraphNode(id = "a")), + edges = list(), + directed = FALSE + ) + opt <- SigmaOption(model = m, node_color = c(primary = "#6CA3A0")) + lst <- to_list(opt) + expect_null(names(lst$style$nodeColor)) + expect_identical(lst$style$nodeColor, "#6CA3A0") +}) diff --git a/r/tools/graph-bundle/.gitignore b/r/tools/graph-bundle/.gitignore new file mode 100644 index 0000000..504afef --- /dev/null +++ b/r/tools/graph-bundle/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +package-lock.json diff --git a/r/tools/graph-bundle/README.md b/r/tools/graph-bundle/README.md new file mode 100644 index 0000000..72f0b83 --- /dev/null +++ b/r/tools/graph-bundle/README.md @@ -0,0 +1,31 @@ +# graph-bundle + +Build input for the vendored browser bundle that powers the `rtemis-graph` +htmlwidget (network / graph plots via Sigma.js). + +Unlike echarts (which ships a prebuilt UMD), sigma 4 and graphology have no +single browser global, so we bundle them here with esbuild into one IIFE that +attaches a `window.RtemisGraph` global. The dependency versions are pinned to +match rtemislive (`~/Code/live`) so both renderers behave identically. + +## Regenerate the bundle + +```sh +cd r/tools/graph-bundle +npm install +npm run build +``` + +This (re)writes the committed artifact: + +``` +r/inst/htmlwidgets/lib/sigma/rtemis-graph-deps.js +``` + +`node_modules/` and `package-lock.json` are gitignored; only `package.json`, +`entry.mjs`, and the built artifact are tracked. + +## What it exposes + +`window.RtemisGraph` = `{ Graph, Sigma, louvain, forceAtlas2, circlepack, random }`, +consumed by `r/inst/htmlwidgets/rtemis-graph.js`. diff --git a/r/tools/graph-bundle/entry.mjs b/r/tools/graph-bundle/entry.mjs new file mode 100644 index 0000000..83e1fa8 --- /dev/null +++ b/r/tools/graph-bundle/entry.mjs @@ -0,0 +1,17 @@ +// Bundle entry for the rtemis-graph htmlwidget dependency. +// +// htmlwidgets loads plain