From c155d34a34f3d1711611087925c90bd60d245b44 Mon Sep 17 00:00:00 2001 From: Max <102478+mkalus@users.noreply.github.com> Date: Fri, 27 Aug 2021 21:26:03 +0200 Subject: [PATCH] Remove Open Layers, migrate to Leaflet JS (#71) * Basic migration to LeafletJS started. * Remove bloodhound, add leaflet nominatim search. Change all typeahead calls to async AJAX calls. * Almost done with convertig to Leaflet. * Enable double click marker additions. * Remove Open layers for good. Add documentation for new features. --- .../segrada/controller/MainController.java | 35 +- .../segrada/session/ApplicationSettings.java | 31 + .../ApplicationSettingsProperties.java | 88 +- src/main/resources/application.properties | 15 +- .../documentation/de/command_line_options.md | 14 +- .../documentation/en/command_line_options.md | 12 +- src/main/resources/js/segrada.js | 37 +- src/main/resources/js/segrada_leaflet.js | 241 ++++ src/main/resources/js/segrada_ol.js | 427 ------- src/main/webapp/WEB-INF/templates/home.html | 3 + .../WEB-INF/templates/partials/common.html | 15 +- src/main/webapp/css/leaflet.css | 640 ++++++++++ src/main/webapp/css/ol.css | 1 - src/main/webapp/img/layers-2x.png | Bin 0 -> 1259 bytes src/main/webapp/img/layers.png | Bin 0 -> 696 bytes src/main/webapp/img/marker-icon-2x.png | Bin 0 -> 2464 bytes src/main/webapp/img/marker-icon.png | Bin 264 -> 1466 bytes src/main/webapp/img/marker-shadow.png | Bin 0 -> 618 bytes src/main/webapp/js/segrada.min.js | 2 +- src/main/webapp/js/segrada_leaflet.min.js | 1 + src/main/webapp/js/segrada_ol.min.js | 2 +- .../js/vendor/bootstrap-tagsinput.min.js | 3 +- .../webapp/js/vendor/leaflet-providers.js | 1100 +++++++++++++++++ .../webapp/js/vendor/leaflet-providers.min.js | 1 + src/main/webapp/js/vendor/leaflet.js | 5 + src/main/webapp/js/vendor/ol.js | 984 --------------- .../webapp/js/vendor/typeahead.bundle.min.js | 8 - .../webapp/js/vendor/typeahead.jquery.min.js | 7 + .../binarydata/BinaryDataServiceFileTest.java | 22 + .../test/OrientDbTestApplicationSettings.java | 23 + 30 files changed, 2253 insertions(+), 1464 deletions(-) create mode 100644 src/main/resources/js/segrada_leaflet.js delete mode 100644 src/main/resources/js/segrada_ol.js create mode 100644 src/main/webapp/css/leaflet.css delete mode 100644 src/main/webapp/css/ol.css create mode 100644 src/main/webapp/img/layers-2x.png create mode 100644 src/main/webapp/img/layers.png create mode 100644 src/main/webapp/img/marker-icon-2x.png create mode 100644 src/main/webapp/img/marker-shadow.png create mode 100644 src/main/webapp/js/segrada_leaflet.min.js create mode 100644 src/main/webapp/js/vendor/leaflet-providers.js create mode 100644 src/main/webapp/js/vendor/leaflet-providers.min.js create mode 100644 src/main/webapp/js/vendor/leaflet.js delete mode 100644 src/main/webapp/js/vendor/ol.js delete mode 100644 src/main/webapp/js/vendor/typeahead.bundle.min.js create mode 100644 src/main/webapp/js/vendor/typeahead.jquery.min.js diff --git a/src/main/java/org/segrada/controller/MainController.java b/src/main/java/org/segrada/controller/MainController.java index b9efd7f1..1c56ce20 100644 --- a/src/main/java/org/segrada/controller/MainController.java +++ b/src/main/java/org/segrada/controller/MainController.java @@ -3,6 +3,8 @@ import com.google.inject.Inject; import com.google.inject.servlet.RequestScoped; import com.sun.jersey.api.view.Viewable; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; import org.segrada.service.ConfigService; import org.segrada.servlet.SegradaUpdateChecker; import org.segrada.session.ApplicationSettings; @@ -53,17 +55,40 @@ public Viewable index() { String requireLogin = applicationSettings.getSetting("requireLogin"); boolean showLogout = requireLogin != null && !requireLogin.isEmpty() && requireLogin.equalsIgnoreCase("true"); - // map engine defined in settings - String mapEngine = applicationSettings.getSetting("map.engine"); - if (mapEngine == null) mapEngine = "ol"; // open layers as default - // create model map Map model = new HashMap<>(); model.put("version", SegradaUpdateChecker.currentVersion); model.put("versionUpdate", versionUpdate); model.put("showLogout", showLogout); - model.put("mapEngine", mapEngine); + + try { + model.put("mapSettings", defineMapSettings()); + } catch (JSONException e) { + // ignore silently + } return new Viewable("home", model); } + + // define map settings as JSON string + protected String defineMapSettings() throws JSONException { + // define map settings + JSONObject mapSettings = new JSONObject(); + + // from settings + mapSettings.put("provider", applicationSettings.getSettingOrDefault("map.provider", "Stamen.TerrainBackground")); + mapSettings.put("zoom", applicationSettings.getSettingAsInteger("map.defaultZoom", 13)); + mapSettings.put("lat", applicationSettings.getSettingAsInteger("map.defaultLat", 0)); + mapSettings.put("lng", applicationSettings.getSettingAsInteger("map.defaultLng", 0)); + + // options + JSONObject mapOptions = new JSONObject(); + mapSettings.put("options", mapOptions); + + for (Map.Entry entry : applicationSettings.getAllSettingsStartingWith("map.options.").entrySet()) { + mapOptions.put(entry.getKey(), entry.getValue()); + } + + return mapSettings.toString(); + } } diff --git a/src/main/java/org/segrada/session/ApplicationSettings.java b/src/main/java/org/segrada/session/ApplicationSettings.java index a423cc12..b84f1528 100644 --- a/src/main/java/org/segrada/session/ApplicationSettings.java +++ b/src/main/java/org/segrada/session/ApplicationSettings.java @@ -2,6 +2,7 @@ import javax.annotation.Nullable; import java.util.Collection; +import java.util.Map; /** * Copyright 2015-2021 Maximilian Kalus [segrada@auxnet.de] @@ -28,6 +29,36 @@ public interface ApplicationSettings { */ @Nullable String getSetting(String key); + /** + * retrieve a setting from settings - if empty, get default + * @param key to look for + * @return value retrieved or default value + */ + @Nullable String getSettingOrDefault(String key, String defaultValue); + + /** + * retrieve a setting from settings - parse to int + * @param key to look for + * @param defaultValue value retrieved or default value + * @return value retrieved or default value + */ + int getSettingAsInteger(String key, int defaultValue); + + /** + * retrieve a setting from settings - parse to double + * @param key to look for + * @param defaultValue value retrieved or default value + * @return value retrieved or default value + */ + double getSettingAsDouble(String key, double defaultValue); + + /** + * retrieve all settings starting with a certain key - this key is also cut from the settings + * @param key part to look for + * @return list of matches + */ + Map getAllSettingsStartingWith(String key); + /** * retrieve a setting from the settings - with default value * @param key to look for diff --git a/src/main/java/org/segrada/session/ApplicationSettingsProperties.java b/src/main/java/org/segrada/session/ApplicationSettingsProperties.java index 8afdf7f2..213368eb 100644 --- a/src/main/java/org/segrada/session/ApplicationSettingsProperties.java +++ b/src/main/java/org/segrada/session/ApplicationSettingsProperties.java @@ -1,6 +1,7 @@ package org.segrada.session; import com.google.inject.Singleton; +import org.codehaus.jettison.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,7 +61,11 @@ public class ApplicationSettingsProperties implements ApplicationSettings { buildMap.put("SEGRADA_SOLR_FIELD_TAG", "solr.field_tag"); buildMap.put("SEGRADA_SOLR_FIELD_COLOR", "solr.field_color"); buildMap.put("SEGRADA_SOLR_FIELD_ICON", "solr.icon"); - buildMap.put("SEGRADA_MAP_ENGINE", "map.engine"); + buildMap.put("SEGRADA_MAP_DEFAULT_ZOOM", "map.defaultZoom"); + buildMap.put("SEGRADA_MAP_DEFAULT_LAT", "map.defaultLat"); + buildMap.put("SEGRADA_MAP_DEFAULT_LNG", "map.defaultLng"); + buildMap.put("SEGRADA_MAP_PROVIDER", "map.provider"); + // map options are handled below - as JSON string buildMap.put("SEGRADA_BINARY_DATA_SERVICE", "binaryDataService"); buildMap.put("SEGRADA_HADOOP_CONFIGURATION_FILES", "binaryDataService.hadoop.configurationFiles"); buildMap.put("SEGRADA_HADOOP_FS_DEFAULT_FS", "binaryDataService.hadoop.fs.defaultFS"); @@ -96,7 +101,7 @@ public ApplicationSettingsProperties() { System.exit(-1); } - // now overwrite propeties with those defined as system variables + // now overwrite properties with those defined as system variables Map var = System.getenv(); for (Map.Entry envToPropEntry : environmentToProperty.entrySet()) { if (var.containsKey(envToPropEntry.getKey())) { @@ -112,6 +117,23 @@ public ApplicationSettingsProperties() { } } + // map options as JSON string + if (var.containsKey("SEGRADA_MAP_OPTIONS")) { + String value = var.get("SEGRADA_MAP_OPTIONS"); + + try { + JSONObject jsonSettings = new JSONObject(value); + + Iterator it = jsonSettings.keys(); + while (it.hasNext()) { + String key = (String) it.next(); + settings.setProperty("map.options." + key, jsonSettings.getString(key)); + } + } catch (Exception e) { + logger.error("Could not read SEGRADA_MAP_OPTIONS: ", e); + } + } + // now overwrite properties with those defined via command line Properties env = System.getProperties(); @@ -145,6 +167,68 @@ public String getSetting(String key) { return settings.getProperty(key); } + /** + * retrieve a setting from settings - if empty, get default + * @param key to look for + * @return value retrieved or default value + */ + @Nullable + @Override + public String getSettingOrDefault(String key, String defaultValue) { + String back = getSetting(key); + if (back == null || back.isEmpty()) return defaultValue; + return back; + } + + /** + * retrieve a setting from settings - parse to int + * @param key to look for + * @param defaultValue value retrieved or default value + * @return value retrieved or default value + */ + @Override + public int getSettingAsInteger(String key, int defaultValue) { + String back = getSetting(key); + if (back == null || back.isEmpty()) return defaultValue; + + try { + return Integer.parseInt(back); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * retrieve a setting from settings - parse to double + * @param key to look for + * @param defaultValue value retrieved or default value + * @return value retrieved or default value + */ + @Override + public double getSettingAsDouble(String key, double defaultValue) { + String back = getSetting(key); + if (back == null || back.isEmpty()) return defaultValue; + + try { + return Double.parseDouble(back); + } catch (Exception e) { + return defaultValue; + } + } + + @Override + public Map getAllSettingsStartingWith(String key) { + Map filteredSettings = new HashMap<>(); + + for (String propertyKey : settings.stringPropertyNames()) { + if (propertyKey.startsWith(key)) { + filteredSettings.put(propertyKey.substring(key.length()), settings.get(propertyKey).toString()); + } + } + + return filteredSettings; + } + @Nullable @Override public String getSetting(String key, @Nullable String defaultValue) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8501a6fc..25eb611c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -38,8 +38,19 @@ lucene.analyzer=org.segrada.search.lucene.LuceneSegradaAnalyzer # Embedded Jetty settings server.port=8080 server.context=/ -# Settings for map rendering (ol is the only possible setting right now) -map.engine = ol +# Leaflet settings +# Default zoom level for Leaflet maps (maps with markers will zoom to bounds) +map.defaultZoom = 1 +# Default coordinates for Leaflet maps (maps with markers will pan to markers) +map.defaultLat = 0 +map.defaultLng = 0 +# Map provider of the base map (see https://github.com/leaflet-extras/leaflet-providers) - for Stamen, try +# Stamen.TerrainBackground or Stamen.Terrain +# view a list of possible providers: http://leaflet-extras.github.io/leaflet-providers/preview/index.html +map.provider = Stamen.TerrainBackground +# Options that are passed to Provider Settings - see https://github.com/leaflet-extras/leaflet-providers +# These options use the pattern: map.option. = +# map.options.apikey = [insert your API key here] # Class to load for BinaryDataService, possible values: org.segrada.service.binarydata.BinaryDataServiceFile # and org.segrada.service.binarydata.BinaryDataServiceHadoop binaryDataService=org.segrada.service.binarydata.BinaryDataServiceFile diff --git a/src/main/resources/documentation/de/command_line_options.md b/src/main/resources/documentation/de/command_line_options.md index 4299318f..4581759f 100644 --- a/src/main/resources/documentation/de/command_line_options.md +++ b/src/main/resources/documentation/de/command_line_options.md @@ -31,7 +31,11 @@ Beispiel: * `allowAnonymous` Anonymen Login erlauben, falls requireLogin wahr ist (Voreinstellung: false) * `uploads.storage` Art des Zwischenspeichers für hochgeladene Dateien, MEMORY oder FILE (Voreinstellung: MEMORY) * `uploads.maximum_upload_size` Maximum upload size (Voreinstellung: 52428800 aka 50 MB) -* `map.engine` Verwendeter Kartenserver (Voreinstellung: ol für OpenLayers, keine weiteren Optionen im Moment) +* `map.defaultZoom` Zoom-Ebene für Karten ohne Marker (Voreinstellung: 1, Werte zwischen 0 und 20) +* `map.defaultLat` Voreinstellung Breitengrad (Voreinstellung: 0) +* `map.defaultLng` Voreinstellung Längengrad (Voreinstellung: 0) +* `map.provider` Karten-Provider wie in [Leaflet-Providers](https://github.com/leaflet-extras/leaflet-providers) definiert (Voreinstellung: Stamen.TerrainBackground), [Beispiele](http://leaflet-extras.github.io/leaflet-providers/preview/index.html) +* `map.options.[schlüssel]` Zusätzliche Optionen für Karten-Provider (z.B. API-Schlüssel `map.options.apiKey = 123456`). * `binaryDataService` Verwendeter Dateidienst, für Hadoop org.segrada.service.binarydata.BinaryDataServiceHadoop setzen (Voreinstellung: org.segrada.service.binarydata.BinaryDataServiceFile) * `binaryDataService.hadoop.configurationFiles` Hadoop Optionale Konfigurationsdateien (Komma-getrennt, Vorsteinstellung: leer) * `binaryDataService.hadoop.fs.defaultFS` Hadoop Server-URI (Voreinstellung: hdfs://localhost:9000/) @@ -48,12 +52,14 @@ Beispiel Windows: set SEGRADA_SAVE_PATH=C:\path\to\segrada set SEGRADA_ORIENTDB_URL=plocal:C:\path\to\segrada\db + set SEGRADA_MAP_PROVIDER=OpenStreetMap.Mapnik java -jar segrada-1.0-SNAPSHOT.jar Beispiel Linux/OS X: SEGRADA_SAVE_PATH=/home/myhome/devel/Segrada/segrada_data \ SEGRADA_ORIENTDB_URL=plocal:/home/myhome/Segrada/Java/segrada_data/db \ + SEGRADA_MAP_PROVIDER=OpenStreetMap.Mapnik \ java -jar segrada-1.0-SNAPSHOT.jar Umgebungsvariablen und ihre Äquivalente von oben: @@ -79,7 +85,11 @@ Umgebungsvariablen und ihre Äquivalente von oben: * `SEGRADA_SOLR_FIELD_TAG` -> `solr.field_tag` * `SEGRADA_SOLR_FIELD_COLOR` -> `solr.field_color` * `SEGRADA_SOLR_FIELD_ICON` -> `solr.field_icon` -* `SEGRADA_MAP_ENGINE` -> `map.engine` +* `SEGRADA_MAP_DEFAULT_ZOOM` -> `map.defaultZoom"` +* `SEGRADA_MAP_DEFAULT_LAT` -> `map.defaultLat"` +* `SEGRADA_MAP_DEFAULT_LNG` -> `map.defaultLng"` +* `SEGRADA_MAP_PROVIDER` -> `map.provider"` +* `SEGRADA_MAP_OPTIONS` -> Falls dies ein JSON-Objekt ist (als Zeichenkette), wird der Wert in korrekte Karten-Optionen umgewandelt * `SEGRADA_BINARY_DATA_SERVICE` -> `binaryDataService` * `SEGRADA_HADOOP_CONFIGURATION_FILES` -> `binaryDataService.hadoop.configurationFiles` * `SEGRADA_HADOOP_FS_DEFAULT_FS` -> `binaryDataService.hadoop.fs.defaultFS` diff --git a/src/main/resources/documentation/en/command_line_options.md b/src/main/resources/documentation/en/command_line_options.md index c51caa07..d8411699 100644 --- a/src/main/resources/documentation/en/command_line_options.md +++ b/src/main/resources/documentation/en/command_line_options.md @@ -31,7 +31,11 @@ Example: * `allowAnonymous` Allow anonymous login, if requireLogin is true (default: false) * `uploads.storage` Type of storage used when uploading files, MEMORY or FILE (default: MEMORY) * `uploads.maximum_upload_size` Maximum upload size (default: 52428800 aka 50 MB) -* `map.engine` Map engine to use (default: ol for OpenLayers, no other options yet) +* `map.defaultZoom` Zoom level of map without markers (default: 1, can be 0-20) +* `map.defaultLat` Default latitude of map (default: 0) +* `map.defaultLng` Default longitude of map (default: 0) +* `map.provider` Map provider as per definitions of [Leaflet-Providers](https://github.com/leaflet-extras/leaflet-providers) (default: Stamen.TerrainBackground), see [preview](http://leaflet-extras.github.io/leaflet-providers/preview/index.html) for examples. +* `map.options.[key]` Additional options for map providers (e.g. API key `map.options.apiKey = 123456`). * `binaryDataService` File service use, for Hadoop, set org.segrada.service.binarydata.BinaryDataServiceHadoop (default: org.segrada.service.binarydata.BinaryDataServiceFile) * `binaryDataService.hadoop.configurationFiles` Hadoop optional configuration file (comma separated, default: empty) * `binaryDataService.hadoop.fs.defaultFS` Hadoop server URI (default: hdfs://localhost:9000/) @@ -80,7 +84,11 @@ Mappings to command line parameters above: * `SEGRADA_SOLR_FIELD_TAG` -> `solr.field_tag` * `SEGRADA_SOLR_FIELD_COLOR` -> `solr.field_color` * `SEGRADA_SOLR_FIELD_ICON` -> `solr.field_icon` -* `SEGRADA_MAP_ENGINE` -> `map.engine` +* `SEGRADA_MAP_DEFAULT_ZOOM` -> `map.defaultZoom"` +* `SEGRADA_MAP_DEFAULT_LAT` -> `map.defaultLat"` +* `SEGRADA_MAP_DEFAULT_LNG` -> `map.defaultLng"` +* `SEGRADA_MAP_PROVIDER` -> `map.provider"` +* `SEGRADA_MAP_OPTIONS` -> If this is a JSON object (as string), it will parse the key/values and set the map options * `SEGRADA_BINARY_DATA_SERVICE` -> `binaryDataService` * `SEGRADA_HADOOP_CONFIGURATION_FILES` -> `binaryDataService.hadoop.configurationFiles` * `SEGRADA_HADOOP_FS_DEFAULT_FS` -> `binaryDataService.hadoop.fs.defaultFS` diff --git a/src/main/resources/js/segrada.js b/src/main/resources/js/segrada.js index 1359db62..d0ffbc12 100644 --- a/src/main/resources/js/segrada.js +++ b/src/main/resources/js/segrada.js @@ -8,14 +8,13 @@ function escapeHTML(myString) { * Substring matcher for remote searches for nodes * @param searchUrl */ - var genericMatcher = function(searchUrl) { - return function findMatches(q, cb) { - var response = $.ajax({ - url: searchUrl + encodeURIComponent(q), - async: false + const genericMatcher = function(searchUrl) { + return function findMatches(q, _, cb) { + const response = $.ajax({ + url: searchUrl + encodeURIComponent(q) + }).done(function (data) { + cb(data); }); - - cb(JSON.parse(response.responseText)); } }; @@ -23,25 +22,24 @@ function escapeHTML(myString) { /** * Substring matcher for remote searches for nodes */ - var nodeMatcher = function() { - return function findMatches(q, cb) { - var searchUrl = urlSegradaNodeSearch + encodeURIComponent(q); + const nodeMatcher = function() { + return function findMatches(q, _, cb) { + let searchUrl = urlSegradaNodeSearch + encodeURIComponent(q); // get current textField - var textField = $(".sg-node-search").filter(":focus"); - var relationTypeSelect = $("#" + textField.attr('data-select-id') + ' option').filter(":selected"); - var contraintIds = relationTypeSelect.attr(textField.attr('data-attr')); + const textField = $(".sg-node-search").filter(":focus"); + const relationTypeSelect = $("#" + textField.attr('data-select-id') + ' option').filter(":selected"); + const contraintIds = relationTypeSelect.attr(textField.attr('data-attr')); if (contraintIds != null && contraintIds.length > 0) { // add list of ids searchUrl += '&tags=' + encodeURIComponent(contraintIds); } - var response = $.ajax({ - url: searchUrl, - async: false + const response = $.ajax({ + url: searchUrl + }).done(function (data) { + cb(data); }); - - cb(JSON.parse(response.responseText)); } }; @@ -470,7 +468,8 @@ function escapeHTML(myString) { limit: 25, displayKey: 'title', valueKey: 'title', - source: genericMatcher(urlSegradaTagSearch) + source: genericMatcher(urlSegradaTagSearch), + async: true } }); diff --git a/src/main/resources/js/segrada_leaflet.js b/src/main/resources/js/segrada_leaflet.js new file mode 100644 index 00000000..6fb4eae9 --- /dev/null +++ b/src/main/resources/js/segrada_leaflet.js @@ -0,0 +1,241 @@ +/* Segrada Leaflet stuff */ +(function ($) { + /** + * Search string matcher for nominatim place name searches + */ + const nominatimMatcher = function() { + return function findMatches(q, _, cb) { + $.ajax({ + url: 'http://nominatim.openstreetmap.org/search?format=json&q=' + encodeURIComponent(q) + }).done(function (data) { + const returnValues = []; + + for (let i = 0; i < data.length; i++) { + returnValues.push({ + title: data[i].display_name, + lng: data[i].lon, + lat: data[i].lat + }); + } + + cb(returnValues); + }); + } + }; + + // keeps map settings + let mapSettings = {}; + + /** + * called after ajax calls to update a specific part of the document + * @param part + */ + function afterMapAjax(part) { + // default + part = part || $('body'); + + // ******************************************************* + // dynamic map loader + $('.sg-geotab', part).on('shown.bs.tab', function (e) { + const target = $(e.target); + + // map created already? + if (target.attr('data-created') == '1') return; + + // set flag + target.attr('data-created', '1'); + + // get map container + const id = target.attr('data-locations-id'); + const container = $('#' + id); + + // get other map features + const form = $('.sg-map-form', container); + const input = $('.sg-geocomplete', form); + let markerContainer = $('#' + id + '-markers', container); + + //create map - disable double click zooming + const map = L.map(id + '-map', { doubleClickZoom: false }).setView([mapSettings.lat || 0, mapSettings.lng || 0], mapSettings.zoom || 1); + + // add map from settings + const mapLayer = L.tileLayer.provider(mapSettings.provider || "Stamen.TerrainBackground", mapSettings.options || {}); + mapLayer.addTo(map); + + // markers + const markers = L.featureGroup().addTo(map); + + // add existing markers + updateMap(markerContainer, markers, map); + + // add form opener + $('.sg-map-add-marker', container).click(function(e) { + $('#' + id + '-add-location-btn').hide(); + form.show(); + e.preventDefault(); + }); + + // handle completer + input.typeahead({ + hint: true, + highlight: true, + minLength: 2 + },{ + name: 'address-suggest-' + id, + displayKey: 'title', + limit: 100, + valueKey: 'id', + source: nominatimMatcher(), + async: true + }).bind('typeahead:selected', function(e, datum) { + input.val(datum.title); + $('input[name=lat]', form).val(datum.lat); + $('input[name=lng]', form).val(datum.lng); + $('input[type=submit]', form).show(); + }).bind('keyup', function() { // empty on textbox empty + if (!this.value) { + input.val(''); + $('input[name=lat]', form).val(''); + $('input[name=lng]', form).val(''); + $('input[type=submit]', form).hide(); + } + }); + + // form submitted + form.ajaxForm({ + beforeSubmit: function(arr, $form, options) { + // disable container + container.addClass('disabled'); + return true; + }, + success: function (responseText, statusText, xhr, $form) { + container.removeClass('disabled'); + markerContainer.replaceWith(responseText); + markerContainer = $('#' + id + '-markers', container); + // update map + updateMap(markerContainer, markers, map); + // clear form + input.val(''); + $('input[name=lat]', form).val(''); + $('input[name=lng]', form).val(''); + $('input[name=comment]', form).val(''); + $('input[type=submit]', form).hide(); + }, + error: function (responseText, statusText, xhr, $form) { + container.removeClass('disabled'); + alert("Error " + responseText.status + "\n" + responseText.statusText); + } + }); + + // map double clicking: add new marker + map.on('dblclick', function (e) { + $('#' + id + '-add-location-btn').hide(); + form.show(); + + $('input[name=lat]', form).val(e.latlng.lat); + $('input[name=lng]', form).val(e.latlng.lng); + $('input[type=submit]', form).show(); + + return false; + }) + }); + } // afterMapAjax end + + // TODO: click on marker to edit it => draggable or form -> via button? + + /** + * add a single marker to the map + * @param $this + * @param markerContainer + * @param markers L.featureGroup + * @param map + */ + function addMarkerToMap($this, markerContainer, markers, map) { + const lat = parseFloat($this.attr('data-lat')); + const lng = parseFloat($this.attr('data-lng')); + + const popupContent = document.createElement("DIV"); + + // add comment + const comment = $this.attr('data-comment'); + if (typeof comment !== 'undefined' && comment !== '') { + const commentContent = document.createElement("P"); + commentContent.innerText = comment; + popupContent.appendChild(commentContent); + } + + // add delete button + if ($this.attr('data-delete-ok')==='1') { + const deleteContent = document.createElement("P"); + popupContent.appendChild(deleteContent); + + const deleteButton = document.createElement("BUTTON"); + deleteButton.setAttribute("class", "btn btn-danger btn-xs"); + deleteButton.innerText = $('#sg-delete-text').html(); + deleteContent.appendChild(deleteButton); + + // add delete listener + deleteButton.addEventListener('click', function (e) { + e.preventDefault(); + + // call confirm deletion + const deleteConfirmText = $('#sg-really-delete-text').html().replace('{0}', lat + ',' + lng); + if (confirm(deleteConfirmText)) { + // call ajax + $.get($this.attr('data-delete'), function (responseText) { + const id = markerContainer.attr('id'); + markerContainer.replaceWith(responseText); + markerContainer = $('#' + id); + // update map + updateMap(markerContainer, markers, map, false); + }); + } + }); + } + + const marker = L.marker([lat, lng]).addTo(markers); + marker.bindPopup(popupContent); + } + + /** + * Update map markers on map + * @param markerContainer + * @param markers L.featureGroup + * @param map + * @param setBounds set to false to leave map like this after update + */ + function updateMap(markerContainer, markers, map, setBounds = true) { + markers.clearLayers(); + + // add existing markers + $('.sg-location-marker', markerContainer).each(function() { + addMarkerToMap($(this), markerContainer, markers, map) + }); + + // update bounds + if (setBounds) { + const bb = markers.getBounds(); + + if (bb.isValid()) { + map.fitBounds(bb.pad(0.05)); + + // do not zoom too much! + if (map.getZoom() > 13) { + map.setZoom(13); + } + } + } + } + + // called after document is ready + $(document).ready(function () { + // settings from HTML + const mapSettingsStr = $('#sg-map-settings').html(); + if (mapSettingsStr) { + mapSettings = JSON.parse(mapSettingsStr); + if (mapSettings) { + // add method to hook + afterAjaxHooks.push(afterMapAjax); + } + } + }); +})(jQuery); \ No newline at end of file diff --git a/src/main/resources/js/segrada_ol.js b/src/main/resources/js/segrada_ol.js deleted file mode 100644 index 04cb3cfd..00000000 --- a/src/main/resources/js/segrada_ol.js +++ /dev/null @@ -1,427 +0,0 @@ -/* Segrada Open Layers stuff */ -(function ($) { - /** - * tokenizer/finder for elements on nominatim.openstreetmap.org - * TODO: Remove bloodhound! - */ - var placenamesTokenizer = new Bloodhound({ - datumTokenizer: function (d) { - return Bloodhound.tokenizers.whitespace(d.title); - }, - queryTokenizer: Bloodhound.tokenizers.whitespace, - remote: { - wildcard: '%QUERY', - url: 'http://nominatim.openstreetmap.org/search?format=json&q=%QUERY', - transform: function(response) { - var returnValues = []; - for (var i = 0; i < response.length; i++) { - returnValues.push({ - title: response[i].display_name, - lng: response[i].lon, - lat: response[i].lat - }); - } - - return returnValues; - } - } - }); - - /** - * add a single marker to the map - * @param $this - * @param vectorSource - */ - function addMarkerToMap($this, vectorSource) { - var lat = parseFloat($this.attr('data-lat')); - var lng = parseFloat($this.attr('data-lng')); - var comment = $this.attr('data-comment'); - if (typeof comment != 'undefined' && comment != '') comment = '

' + escapeHTML(comment) + '

'; - else comment = ''; - var myLatlng = new ol.geom.Point(ol.proj.transform([lng, lat], 'EPSG:4326', 'EPSG:3857')); - //TODO bounds? - var iconFeature = new ol.Feature({ - geometry: myLatlng, - data_id: $this.html(), - lat: lat, - lng: lng, - delete_ok: $this.attr('data-delete-ok')==='1', - delete_url: $this.attr('data-delete'), - comment: comment - }); - vectorSource.addFeature(iconFeature); - } - - /** - * Update map markers on map - * @param markerContainer - * @param ol.source.Vector vectorSource - */ - function updateMap(markerContainer, vectorSource) { - vectorSource.clear(true); - console.log(vectorSource); - - // add existing markers - $('.sg-location-marker', markerContainer).each(function() { - addMarkerToMap($(this), vectorSource) - }); - } - - /** - * called after ajax calls to update a specific part of the document - * @param part - */ - function afterMapAjax(part) { - // default - part = part || $('body'); - - // ******************************************************* - // dynamic map loader - $('.sg-geotab', part).on('shown.bs.tab', function (e) { - var target = $(e.target); - - // map created already? - if (target.attr('data-created') == '1') return; - - // set flag - target.attr('data-created', '1'); - - var id = target.attr('data-locations-id'); - var container = $('#' + id); - - var form = $('.sg-map-form', container); - var input = $('.sg-geocomplete', form); - var markerContainer = $('#' + id + '-markers', container); - var deleteText = $('#' + id + '-delete').html(); - - // holds markers - var vectorSource = new ol.source.Vector({ - //create empty vector - }); - - // add existing markers - updateMap(markerContainer, vectorSource); - - //create the style - var iconStyle = new ol.style.Style({ - image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({ - anchor: [12, 12], - anchorXUnits: 'pixels', - anchorYUnits: 'pixels', - opacity: 0.75, - src: urlSegradaBasepath + 'img/marker-icon.png' - })) - }); - - //create map and show it - var map = new ol.Map({ - layers: [ - new ol.layer.Tile({source: new ol.source.Stamen({layer: 'terrain-background'})}), - new ol.layer.Vector({ // vector layer containing markers - source: vectorSource, - style: iconStyle - }) - ], - view: new ol.View({ - center: [0, 0], - zoom: 1 - }), - target: id + '-map' - }); - - map.on('singleclick', function(evt) { - map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) { - var popup = new ol.Overlay.Popup(); - map.addOverlay(popup); - - var content = '

' + feature.get('lat') + ',' + feature.get('lng') + '

'; - content += feature.get('comment'); - if (feature.get('delete_ok')) - content += '

' + deleteText + '

'; - popup.show(feature.getGeometry().getCoordinates(), content); - - popup.getElement().addEventListener('click', function(e) { - var action = e.target.getAttribute('data-action'); - if (action == 'delete') { - // call confirm - var deleteConfirmText = $('#' + id + '-delete-confirm').html().replace('{0}', feature.get('lat') + ',' + feature.get('lng')); - if (confirm(deleteConfirmText)) { - // call ajax - $.get(feature.get('delete_url'), function (responseText) { - markerContainer.replaceWith(responseText); - markerContainer = $('#' + id + '-markers', container); - // update map - updateMap(markerContainer, vectorSource); - }); - popup.hide(); - } - e.preventDefault(); - } - - }, false); - }); - }); - - map.on('dblclick', function(evt) { - var dbClickElement = $('.sg-location-dbl-click', container); - if (dbClickElement.length > 0) { - var coordinates = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326'); - var question = dbClickElement.attr('data-confirm').replace('{0}', coordinates[1] + ',' + coordinates[0]); - if (confirm(question)) { - // get url from form - var action = form.attr('action'); - // get security token - var csrf = $('input[name=_csrf]').val(); - // AJAX post - $.post(action, { - _csrf: csrf, - lng: coordinates[0], - lat: coordinates[1], - comment: '' - }, function (responseText, textStatus, jqXHR) { - markerContainer.replaceWith(responseText); - markerContainer = $('#' + id + '-markers', container); - // update map - updateMap(markerContainer, vectorSource); - }); - // - evt.preventDefault(); - } - } - }); - - // add form adder - $('.sg-map-add-marker', container).click(function(e) { - $(this).parent().hide(); - form.show(); - e.preventDefault(); - }); - - // handle completer - input.typeahead({hint: true, - highlight: true, - minLength: 3 - },{ - name: 'address-suggest-' + id, - displayKey: 'title', - limit: 25, - valueKey: 'id', - source: placenamesTokenizer.ttAdapter() - }).bind('typeahead:selected', function(e, datum) { - input.val(datum.title); - $('input[name=lat]', form).val(datum.lat); - $('input[name=lng]', form).val(datum.lng); - $('input[type=submit]', form).show(); - }).bind('keyup', function() { // empty on textbox empty - if (!this.value) { - input.val(''); - $('input[name=lat]', form).val(''); - $('input[name=lng]', form).val(''); - $('input[type=submit]', form).hide(); - } - }); - - // form submitted - form.ajaxForm({ - beforeSubmit: function(arr, $form, options) { - // disable container - container.addClass('disabled'); - return true; - }, - success: function (responseText, statusText, xhr, $form) { - container.removeClass('disabled'); - markerContainer.replaceWith(responseText); - markerContainer = $('#' + id + '-markers', container); - // update map - updateMap(markerContainer, vectorSource); - // clear form - input.val(''); - $('input[name=lat]', form).val(''); - $('input[name=lng]', form).val(''); - $('input[name=comment]', form).val(''); - $('input[type=submit]', form).hide(); - }, - error: function (responseText, statusText, xhr, $form) { - container.removeClass('disabled'); - alert("Error " + responseText.status + "\n" + responseText.statusText); - } - }); - }); - } // afterMapAjax end - - // called after document is ready - $(document).ready(function () { - // add method to hook - afterAjaxHooks.push(afterMapAjax); - }); -})(jQuery); - - -/** - * OpenLayers 3 Popup Overlay. - * See [the examples](./examples) for usage. Styling can be done via CSS. - * https://github.com/walkermatt/ol3-popup - * @constructor - * @extends {ol.Overlay} - * @param {Object} opt_options Overlay options, extends olx.OverlayOptions adding: - * **`panMapIfOutOfView`** `Boolean` - Should the - * map be panned so that the popup is entirely - * within view. - */ -ol.Overlay.Popup = function(opt_options) { - - var options = opt_options || {}; - - this.panMapIfOutOfView = options.panMapIfOutOfView; - if (this.panMapIfOutOfView === undefined) { - this.panMapIfOutOfView = true; - } - - this.ani = options.ani; - if (this.ani === undefined) { - this.ani = ol.animation.pan; - } - - this.ani_opts = options.ani_opts; - if (this.ani_opts === undefined) { - this.ani_opts = {'duration': 250}; - } - - this.container = document.createElement('div'); - this.container.className = 'ol-popup'; - - this.closer = document.createElement('a'); - this.closer.className = 'ol-popup-closer'; - this.closer.href = '#'; - this.container.appendChild(this.closer); - - var that = this; - this.closer.addEventListener('click', function(evt) { - that.container.style.display = 'none'; - that.closer.blur(); - evt.preventDefault(); - }, false); - - this.content = document.createElement('div'); - this.content.className = 'ol-popup-content'; - this.container.appendChild(this.content); - - // Apply workaround to enable scrolling of content div on touch devices - ol.Overlay.Popup.enableTouchScroll_(this.content); - - ol.Overlay.call(this, { - element: this.container, - stopEvent: true, - insertFirst: (options.hasOwnProperty('insertFirst')) ? options.insertFirst : true - }); - -}; - -ol.inherits(ol.Overlay.Popup, ol.Overlay); - -/** - * Show the popup. - * @param {ol.Coordinate} coord Where to anchor the popup. - * @param {String} html String of HTML to display within the popup. - */ -ol.Overlay.Popup.prototype.show = function(coord, html) { - this.setPosition(coord); - this.content.innerHTML = html; - this.container.style.display = 'block'; - if (this.panMapIfOutOfView) { - this.panIntoView_(coord); - } - this.content.scrollTop = 0; - return this; -}; - -/** - * @private - */ -ol.Overlay.Popup.prototype.panIntoView_ = function(coord) { - - var popSize = { - width: this.getElement().clientWidth + 20, - height: this.getElement().clientHeight + 20 - }, - mapSize = this.getMap().getSize(); - - var tailHeight = 20, - tailOffsetLeft = 60, - tailOffsetRight = popSize.width - tailOffsetLeft, - popOffset = this.getOffset(), - popPx = this.getMap().getPixelFromCoordinate(coord); - - var fromLeft = (popPx[0] - tailOffsetLeft), - fromRight = mapSize[0] - (popPx[0] + tailOffsetRight); - - var fromTop = popPx[1] - popSize.height + popOffset[1], - fromBottom = mapSize[1] - (popPx[1] + tailHeight) - popOffset[1]; - - var center = this.getMap().getView().getCenter(), - curPx = this.getMap().getPixelFromCoordinate(center), - newPx = curPx.slice(); - - if (fromRight < 0) { - newPx[0] -= fromRight; - } else if (fromLeft < 0) { - newPx[0] += fromLeft; - } - - if (fromTop < 0) { - newPx[1] += fromTop; - } else if (fromBottom < 0) { - newPx[1] -= fromBottom; - } - - if (this.ani && this.ani_opts) { - this.ani_opts.source = center; - this.getMap().beforeRender(this.ani(this.ani_opts)); - } - - if (newPx[0] !== curPx[0] || newPx[1] !== curPx[1]) { - this.getMap().getView().setCenter(this.getMap().getCoordinateFromPixel(newPx)); - } - - return this.getMap().getView().getCenter(); - -}; - -/** - * @private - * @desc Determine if the current browser supports touch events. Adapted from - * https://gist.github.com/chrismbarr/4107472 - */ -ol.Overlay.Popup.isTouchDevice_ = function() { - try { - document.createEvent("TouchEvent"); - return true; - } catch(e) { - return false; - } -}; - -/** - * @private - * @desc Apply workaround to enable scrolling of overflowing content within an - * element. Adapted from https://gist.github.com/chrismbarr/4107472 - */ -ol.Overlay.Popup.enableTouchScroll_ = function(elm) { - if(ol.Overlay.Popup.isTouchDevice_()){ - var scrollStartPos = 0; - elm.addEventListener("touchstart", function(event) { - scrollStartPos = this.scrollTop + event.touches[0].pageY; - }, false); - elm.addEventListener("touchmove", function(event) { - this.scrollTop = scrollStartPos - event.touches[0].pageY; - }, false); - } -}; - -/** - * Hide the popup. - */ -ol.Overlay.Popup.prototype.hide = function() { - this.container.style.display = 'none'; - return this; -}; diff --git a/src/main/webapp/WEB-INF/templates/home.html b/src/main/webapp/WEB-INF/templates/home.html index 1566e7d4..5d6db6e9 100644 --- a/src/main/webapp/WEB-INF/templates/home.html +++ b/src/main/webapp/WEB-INF/templates/home.html @@ -38,6 +38,9 @@
/
+
+
+
diff --git a/src/main/webapp/WEB-INF/templates/partials/common.html b/src/main/webapp/WEB-INF/templates/partials/common.html index 637bb5c5..21d9069f 100644 --- a/src/main/webapp/WEB-INF/templates/partials/common.html +++ b/src/main/webapp/WEB-INF/templates/partials/common.html @@ -7,7 +7,7 @@ - + @@ -188,9 +188,7 @@

List of Locations

- - -
+
Add location Double click hint
@@ -266,12 +264,13 @@

Font Awesome Icons

- + - - - + + + + diff --git a/src/main/webapp/css/leaflet.css b/src/main/webapp/css/leaflet.css new file mode 100644 index 00000000..79cf685a --- /dev/null +++ b/src/main/webapp/css/leaflet.css @@ -0,0 +1,640 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Prevents IE11 from highlighting tiles in blue */ +.leaflet-tile::selection { + background: transparent; +} +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { + max-width: none !important; + max-height: none !important; + } + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive, +svg.leaflet-image-layer.leaflet-interactive path { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(../img/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(../img/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(../img/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover { + text-decoration: underline; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: border-box; + box-sizing: border-box; + + background: #fff; + background: rgba(255, 255, 255, 0.5); + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + border: none; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + -ms-zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/src/main/webapp/css/ol.css b/src/main/webapp/css/ol.css deleted file mode 100644 index ea50e7eb..00000000 --- a/src/main/webapp/css/ol.css +++ /dev/null @@ -1 +0,0 @@ -.ol-control,.ol-scale-line{position:absolute;padding:2px}.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width}.ol-overlay-container{will-change:left,right,top,bottom}.ol-unsupported{display:none}.ol-viewport .ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-control{background-color:rgba(255,255,255,.4);border-radius:4px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}@media print{.ol-control{display:none}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution.ol-logo-only ul{display:block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)} \ No newline at end of file diff --git a/src/main/webapp/img/layers-2x.png b/src/main/webapp/img/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/src/main/webapp/img/layers.png b/src/main/webapp/img/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 zcmV;p0!RIcP)*@&l2<6p=!C&s@#ZL+%BQvF&b?w6S%wp=I>1QHj7AP5C)IWy#b znXXB;g;j=$a-tW89K%FbDceHVq&unY*Wx3L#=EGWH=rjqnp|4c_Ulec!ql3#G-5ZF zVlbBA@XP=)C8U&+Lrc)S4O5%1$&{(;7R^K(CSnvSr$v;+B$8q&7Bf|h$#PARo1^%M zf1H^nG-EiXVXr07OH(*8R)xa|FD;lXUlg_-%)~ZGsL2cX0NXaAzN2q%jqLRR6ruVk8`Jb7n#{`T;o@`F= z#3YcynIR^s83UNF3D!f5m#Mg)NJ24&Qfrqb&_z=yF;=B)#9Iq7u-@^O!(mW{D;qvr zPc)gVb%aowtS8m@ElL4A9G>w#ffQ~q{i&_i)*6f^)Sz|C?C>zb4Uo?H<-&Hz@a?J; z$ml@zGygWofb9$ZBj6aLjpLhsT2AzjOu=-*u_gSCUYnU^5s62$4H-fe}gSR(=wKRaTHh!@*b)YV6mo|a4Fn6Rgc&Rpk zvn_X|3VY?v=>nJ{slE^V1GaGWk}m@aIWGIpghbfPh8m@aIWEo_%AZI>==moIFVE^L=C zZJ91?mo03UEp3-BY?wBGur6$uD{Yr9Y?m%SHF8Fk1pc(Nva%QJ+{FLkalfypz3&M|||Fn`7|g3c~4(nXHKFmRnwn$J#_$xE8i z|Ns9!kC;(oC1qQk>LMp3_a2(odYyMT@>voX=UI)k>1cJdn;gjmJ-|6v4nb1Oryh)eQMwHP(i@!36%vGJyFK(JTj?Vb{{C=jx&)@1l zlFmnw%0`&bqruifkkHKC=vbiAM3&E`#Mv>2%tw;VK8?_|&E89cs{a1}$J*!f_xd-C z&F%B|oxRgPlh0F!txkxrQjNA`m9~?&&|jw4W0<`_iNHsX$VQXVK!B}Xkh4>av|f_8 zLY2?t?ejE=%(TnfV5iqOjm?d;&qI~ZGl|SzU77a)002XDQchC<95+*MjE@82?VLm= z3xf6%Vd@99z|q|-ua5l3kJxvZwan-8K1cPiwQAtlcNX~ZqLeoMB+a;7)WA|O#HOB% zg6SX;754xD1{Fy}K~#8Ntklac&zTpadXZ& zC*_=T&g7hfbI$R?v%9?sknIb97gJOJ=`-8YyS3ndqN+Jm+x33!p&Hc@@L$w))s2@N ztv~i}Emc?DykgwFWwma($8+~b>l?tqj$dh13R^nMZnva9 zn0Vflzv2Dvp`oVQw{Guby~i`JGbyBGTEC{y>yzCkg>K&CIeQ$u;lyQ+M{O~gEJ^)Z zrF3p)^>|uT;57}WY&IRwyOQ=dq%Az}_t=_hKowP!Z79q0;@Zu(SWEJJcHY+5T6I({ zw)wj*SNi4wrd+POUfZe4gF77vW?j zoFS}|r2n&$U9Y!S4VEOyN}OpZZi|?cr1VcE_tHsDQgp-ga(SwkBrkCm{|*-yb=}ZW zvcYvLvfA90TPn|!-TuYJV<6`}+RJeRgP3EA=qQcF9k0*#*{f&I_pjam%I6Dd#YE|G zqB!R}tW-K!wV1w+4JcFA_s6~=@9F&j8`u$-ifLN3vK;`lvaA-`jRn_}(8|)!3?-}I zvFi{H;@A$gEZYh?%|Qr_y#*UkOPjwiRCsJQ>mb6h5yGIk6C5_XA=8T?IBfm_?+P0; zhhUs)-(0R*H<&Kku(1>#cGtOpk&Z&kQcw&SJv-4VY<+;=8hYnoX zfNJMCa9)^5Z0;2dCUk;x-%#yS!I~Jr3pNuI!g_tHz!$hKwt1GL~sFvx)3u4TA zv>CLGdQtoZ7Du7ctJRfTqY;FPxs1G{ZJ?73D5J@OO{6BHcPbk{_mjg&p2QFeke%QI zlAJ-kvjuwy1<5D-6>su68A+i998aSZNnQX)+Q}6(GK-C%8G-!1bOJBONU{gT%IOOE z;Yk24YC@^lFW77>r6x7eS1Omc;8=GUp#&zLQ&L{ zv8$hGC`wp~$9pR>f%-_Ps3>YhzP(+vC(E*zr1CVO8ChN^MI-VGMX7+|(r!SGZ9gd5 zzO9sQd>sm|f1|X&oh=8lOzd6+ITvo zCXInR?>RZ#>Hb*PO=7dI!dZ(wY4O}ZGv zdfQFio7+0~PN*RFCZGM6@9-o~y*@?;k00NvOsw54t1^tt{*ATMs^2j}4Wp=4t3RH* z_+8b`F-{E=0sOgM<;VHTo!Ij3u zmmI`2?K7g(GOcGA)@h?$SW&pwHdtj1n57PLI8&6RHhx4R%Q7b z^JEqR)@06V!pbS*@D_ZyRMo_LlT}r{#sXOx4kM-V<_V{!5SSuM^SIVCA37|nY7LWQ zZA#B1h4l`6asz=Lvax_#GMRX|NF>=$=p{Qn0i@ExX1jGhy@B8a*_uR+ODEbVi8ObL zezG?azy>E~S~dl43&8<$(2H}P&*tuBdESUP83KQ?8B z?K(!uS>H1wlWQz;qOfB`T#TZ=EoSp~vZ5XtCvwm1h*Ex6mzTsn_y@_=xREIslV-%- zpdWkEzMjeNOGWrSM32gpBt27*O29NdhGzuDgYxcf`Jjjqw@B;Vmdb@fxdhCRi`Kg> zmUTr$=&@#i!%F4Q6mb&4QKfR^95KJ!<6~fqx-f^66AV!|ywG{6D^Vay-3b99>XOe# e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/img/marker-icon.png b/src/main/webapp/img/marker-icon.png index a1ad1abd792c26f8e0cd451aa3eb32bfda104b98..950edf24677ded147df13b26f91baa2b0fa70513 100644 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Am#DbL-agy5&l#Z?Im~P zYaldcuLxEHQZfxWL diff --git a/src/main/webapp/img/marker-shadow.png b/src/main/webapp/img/marker-shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd2979532a19a15b824ce763c76e04a8dafadfb GIT binary patch literal 618 zcmV-w0+s!VP)ke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/src/main/webapp/js/segrada.min.js b/src/main/webapp/js/segrada.min.js index 1cbb528c..6f78bb72 100644 --- a/src/main/webapp/js/segrada.min.js +++ b/src/main/webapp/js/segrada.min.js @@ -1 +1 @@ -function escapeHTML(e){return"string"==typeof e?e.replace(/&/g,"&").replace(//g,">"):""}!function(s){function n(a){return function(e,t){e=s.ajax({url:a+encodeURIComponent(e),async:!1});t(JSON.parse(e.responseText))}}function t(){return function(e,t){var a=urlSegradaNodeSearch+encodeURIComponent(e),e=s(".sg-node-search").filter(":focus"),e=s("#"+e.attr("data-select-id")+" option").filter(":selected").attr(e.attr("data-attr"));null!=e&&0/i);function a(r,t,i,o,e){e=urlSegradaPictogramSearch+encodeURIComponent(e);s.getJSON(e,function(e){var n=[];s.each(e,function(e,t){var a=s("
").text(t.title).html();n.push('
'+a+'
')}),t.html("
"+n.join("")+"
"),s("a",t).click(function(e){var t=s(this).attr("data-id"),a=s(this).attr("data-uid"),n=s("
").text(s(this).attr("title")).html();s("#value-"+i,o).val(t),s("#preview-"+i,o).html(''+n+' '+n),s("#clear-"+i,o).show(),e.preventDefault(),r.modal("hide")})}).fail(function(){alert("ERROR")})}function h(e){s.get(e,function(e){var t=e.match(u);null!=t&&2<=t.length&&s("#"+t[2]).remove();t=s("#sg-data");t.prepend(e);t=t.children(":first");g(t),s("html, body").animate({scrollTop:t.offset().top},500)}).fail(function(){alert("ERROR")})}function g(o){o=o||s("body"),s(".sg-data").addClass("sg-dynamic-data"),s(".sg-headbox-right").show(),s(".sg-dynamic-hide").hide(),s(".sg-data-add",o).click(function(e){h(s(this).attr("href")),e.preventDefault()}),s(".sg-control-form",o).ajaxForm({beforeSubmit:function(e,t,a){t=t.attr("data-target-id");void 0!==t&&null!=t&&0!=t.length||(t="#sg-control",p());t=s(t);return t.wrapInner("
"),t.prepend(s("#sg-wait").html()),!0},success:function(e,t,a,n){n=n.attr("data-target-id");void 0!==n&&null!=n&&0!=n.length||(n="#sg-control");n=s(n);n.html(e),g(n)},error:function(e,t,a,n){n=n.attr("data-target-id");void 0!==n&&null!=n&&0!=n.length||(n="#sg-control"),s(n).html(e.statusText),alert("Error "+e.status+"\n"+e.statusText)}}),s(".sg-submit-form",o).change(function(){s(this).closest("form").submit()}),s(".sg-control-set",o).click(function(e){var t=s(this),a=t.attr("data-target-id");void 0!==a&&null!=a&&0!=a.length||(a="#sg-control",p());var n=s(a);n.wrapInner("
"),n.prepend(s("#sg-wait").html()),s.get(t.attr("href"),function(e){n.html(e),g(n)}).fail(function(){alert("ERROR")}),e.preventDefault()}),s("[data-data-dblclick]",o).dblclick(function(){s.get(s(this).attr("data-data-dblclick"),function(e){var t=e.match(u);null!=t&&2<=t.length&&s("#"+t[2]).remove();t=s("#sg-data");t.prepend(e);t=t.children(":first");g(t),s("html, body").animate({scrollTop:t.offset().top},500)}).fail(function(){alert("ERROR")})}),s("tr [data-confirm]",o).click(function(e){var t,a=s(this);confirm(a.attr("data-confirm"))&&((t=a.closest("tr")).addClass("sg-disabled"),s.get(a.attr("href"),function(e){t.slideUp("fast",function(){t.remove()})}).fail(function(){alert("ERROR")})),e.preventDefault()}),s(".sg-control-confirm",o).click(function(e){var t,a=s(this);confirm(a.attr("data-confirm"))&&((t=s("#"+a.attr("data-target"))).addClass("sg-disabled"),s.get(a.attr("href"),function(e){t.fadeOut("slow",function(){t.remove()})}).fail(function(){alert("ERROR")})),e.preventDefault()}),s(".sg-replace-content",o).on("shown.bs.tab",function(e){var t=s(s(this).attr("href")),a=s(this).attr("data-url");s.get(a,function(e){t.html(e),g(t)}).fail(function(){alert("ERROR")}),s(this).removeClass("sg-replace-content"),s(this).unbind("shown.bs.tab")}),s(".sg-data-close",o).click(function(e){s(this).parent().parent().fadeOut("fast",function(){s(this).remove()})}),s("input.sg-fileupload",o).fileinput({showUpload:!1}),s("input.sg-fileupload-small",o).fileinput({showUpload:!1,previewSettings:{image:{width:"auto",height:"24px"}}}),s(".sg-pictogram-modal",o).on("shown.bs.modal",function(){var n=s(this),r=n.attr("id"),i=s("#container-"+r,n),e=s("#filter-"+r,n);e.on("input propertychange paste",function(){a(n,i,r,o,s(this).val())}).onEnter(function(){var e,t,a=s(".sg-pictogram-modal-link",i).first();0").text(a.attr("title")).html(),s("#value-"+r,o).val(e),s("#preview-"+r,o).html(''+a+' '+a),s("#clear-"+r,o).show(),n.modal("hide"))}),""===e.val()&&a(n,i,r,o,"")}),s(".sg-pictogram-chooser",o).click(function(e){s("#"+s(this).attr("data-id")).modal("show"),e.preventDefault()}),s(".sg-pictogram-clearer",o).click(function(e){var t=s(this).attr("data-id");s("#value-"+t,o).val(""),s("#preview-"+t,o).html(""),s(this).hide(),e.preventDefault()}),s(".sg-source-ref-modal",o).on("shown.bs.modal",function(){var i=s(this),t=s(".modal-body",i);s.get(i.attr("data-href"),function(e){t.html(e),s("select.sg-colorpicker",i).simplepicker({theme:"fontawesome"}),s("form",t).ajaxForm({beforeSubmit:function(e,t,a){return t.wrapInner("
"),t.prepend(s("#sg-wait").html()),!0},success:function(e,t,a,n){var r=s(i.attr("data-target"));r.html(e),g(r),i.modal("hide"),s(".modal-backdrop").remove(),s("body").removeClass("modal-open")},error:function(e,t,a,n){alert("Error "+e.status+"\n"+e.statusText)}})}).fail(function(){alert("ERROR")})}).on("hidden.bs.modal",function(){s(".modal-body",s(this)).html(s("#sg-wait").html())}),s(".sg-source-ref-editor",o).click(function(e){var t=s("#"+s(this).attr("data-id"));t.attr("data-href",s(this).attr("href")),t.modal("show"),e.preventDefault()}),s(".sg-taglist-contract",o).each(function(){var e=s("span",s(this));1'),s("span.sg-tag-show",s(this)).click(function(){s(this).remove(),e.show()}))}),s("select.sg-colorpicker",o).simplepicker({theme:"fontawesome"}),s("select.sg-tags",o).each(function(){var t=s(this);t.tagsinput({trimValue:!0,confirmKeys:[13],typeaheadjs:{name:"tags",limit:25,displayKey:"title",valueKey:"title",source:n(urlSegradaTagSearch)}}),t.on("itemRemoved",function(e){t.find('option[value="'+e.item+'"]').remove()})}),s("input.sg-node-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"node",limit:25,displayKey:"title",valueKey:"id",source:t()}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s("input.sg-file-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"file",limit:25,displayKey:"title",valueKey:"id",source:n(urlSegradaFileSearch)}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s("input.sg-source-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"source",limit:25,displayKey:"title",valueKey:"id",source:n(urlSegradaSourceSearch)}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s(".sg-link-external",o).click(function(e){var t=s(this).attr("href");window.open(t,"_blank").focus(),e.preventDefault()}),s("form.sg-data-form",o).ajaxForm({beforeSubmit:function(e,t,a){return s(":input",t).attr("disabled",!0),s("button.btn-primary",t).append(" "+s("#sg-wait-btn").html()),!0},success:function(e,t,a,n){var r=n.attr("data-id");(r=(r=void 0!==r?s("#"+r):r)||n).replaceWith(e);e=e.match(u);null!=e&&2<=e.length&&g(s("#"+e[2]))},error:function(e,t,a,n){s(":input",n).attr("disabled",!1),alert("Error "+e.status+"\n"+e.statusText)}}),s("form.sg-simple-form",o).ajaxForm({beforeSubmit:function(e,t,a){s(":input",t).attr("disabled",!0);var n=t.attr("data-id");return(n=(n=void 0!==n?s("#"+n):n)||t).html(s("#sg-wait")),!0},success:function(e,t,a,n){var r=n.attr("data-id");(r=(r=void 0!==r?s("#"+r):r)||n).html(e),s(":input",n).attr("disabled",!1)},error:function(e,t,a,n){s(":input",n).attr("disabled",!1),alert("Error "+e.status+"\n"+e.statusText)}}),s(".sg-periods").each(function(){var r=s(this),i=r.attr("id"),e=s(".sg-period-form",r);s(".sg-period-add",r).click(function(e){s(this).hide();var t=s(".sg-period-form-add",r);t.show(),s(".sg-period-form-period",t).change(function(e){s(this).is(":checked")?s(".sg-period-toggle",t).show():s(".sg-period-toggle",t).hide()}),e.preventDefault()}),e.ajaxForm({beforeSubmit:function(e,t,a){return r.addClass("disabled"),!0},success:function(e,t,a,n){r.replaceWith(e),g(s("#"+i))},error:function(e,t,a,n){r.removeClass("disabled"),alert("Error "+e.status+"\n"+e.statusText)}})}),s(".sg-ajax-modal",o).click(function(e){var t=s("#sg-modal"),a=s(".modal-body-inner",t),n=s(".modal-loading",t);s("h4",t).html(s(this).attr("data-title")),a.html(""),a.hide(),n.show(),t.modal("show"),s.get(s(this).attr("href"),function(e){n.hide(),a.html(e),a.show(),g(a)}).fail(function(){alert("ERROR")}),e.preventDefault()}),s(".sg-ajax-modal-form",o).ajaxForm({beforeSubmit:function(e,t,a){var n=s("#sg-modal"),r=s(".modal-body-inner",n),n=s(".modal-loading",n);return r.hide(),n.show(),!0},success:function(e,t,a,n){var r=s("#sg-modal"),i=s(".modal-body-inner",r),o=s(".modal-loading",r);i.html(e),i.show(),o.hide(),g(i),r=s("#sg-modal"),s(".sg-update-period",r).each(function(){var e=s(this).attr("data-id"),t=s(e);if(0"+e.title+""}),""!=a&&(a="
    "+a+"
"),r.html(a),s("a",r).click(function(e){b(),v(s(this).attr("href")),i=s(this).html(),c=s(this).attr("data-uid"),n.modal("hide"),e.preventDefault()})})}),s("#sg-graph-modal-save-frm").submit(function(e){e.preventDefault();var t=s("#title-sg-graph-save").val(),e=c;null!=c&&s("#save-as-new-sg-graph-save").is(":checked")&&(e=null),d.storePositions();var a=[],n=[];o.forEach(function(e){a.push({id:e.id,x:e.x,y:e.y,group:e.group})}),l.forEach(function(e){n.push({id:e.id,group:e.group})});s.post(s(this).attr("action"),{_csrf:s("#sg-graph-container").attr("data-csrf"),uid:e,title:t,type:"graph",data:JSON.stringify({nodes:a,edges:n})},function(e){i=t,c=e}).fail(function(){alert("ERROR")}),s("#sg-graph-modal-save").modal("hide")}),g(s("body"))})}(jQuery); +function escapeHTML(e){return"string"==typeof e?e.replace(/&/g,"&").replace(//g,">"):""}!function(s){function n(n){return function(e,t,a){s.ajax({url:n+encodeURIComponent(e)}).done(function(e){a(e)})}}function t(){return function(e,t,a){let n=urlSegradaNodeSearch+encodeURIComponent(e);const r=s(".sg-node-search").filter(":focus"),i=s("#"+r.attr("data-select-id")+" option").filter(":selected");e=i.attr(r.attr("data-attr"));null!=e&&0/i);function a(r,t,i,o,e){e=urlSegradaPictogramSearch+encodeURIComponent(e);s.getJSON(e,function(e){var n=[];s.each(e,function(e,t){var a=s("
").text(t.title).html();n.push('
'+a+'
')}),t.html("
"+n.join("")+"
"),s("a",t).click(function(e){var t=s(this).attr("data-id"),a=s(this).attr("data-uid"),n=s("
").text(s(this).attr("title")).html();s("#value-"+i,o).val(t),s("#preview-"+i,o).html(''+n+' '+n),s("#clear-"+i,o).show(),e.preventDefault(),r.modal("hide")})}).fail(function(){alert("ERROR")})}function h(e){s.get(e,function(e){var t=e.match(u);null!=t&&2<=t.length&&s("#"+t[2]).remove();t=s("#sg-data");t.prepend(e);t=t.children(":first");g(t),s("html, body").animate({scrollTop:t.offset().top},500)}).fail(function(){alert("ERROR")})}function g(o){o=o||s("body"),s(".sg-data").addClass("sg-dynamic-data"),s(".sg-headbox-right").show(),s(".sg-dynamic-hide").hide(),s(".sg-data-add",o).click(function(e){h(s(this).attr("href")),e.preventDefault()}),s(".sg-control-form",o).ajaxForm({beforeSubmit:function(e,t,a){t=t.attr("data-target-id");void 0!==t&&null!=t&&0!=t.length||(t="#sg-control",p());t=s(t);return t.wrapInner("
"),t.prepend(s("#sg-wait").html()),!0},success:function(e,t,a,n){n=n.attr("data-target-id");void 0!==n&&null!=n&&0!=n.length||(n="#sg-control");n=s(n);n.html(e),g(n)},error:function(e,t,a,n){n=n.attr("data-target-id");void 0!==n&&null!=n&&0!=n.length||(n="#sg-control"),s(n).html(e.statusText),alert("Error "+e.status+"\n"+e.statusText)}}),s(".sg-submit-form",o).change(function(){s(this).closest("form").submit()}),s(".sg-control-set",o).click(function(e){var t=s(this),a=t.attr("data-target-id");void 0!==a&&null!=a&&0!=a.length||(a="#sg-control",p());var n=s(a);n.wrapInner("
"),n.prepend(s("#sg-wait").html()),s.get(t.attr("href"),function(e){n.html(e),g(n)}).fail(function(){alert("ERROR")}),e.preventDefault()}),s("[data-data-dblclick]",o).dblclick(function(){s.get(s(this).attr("data-data-dblclick"),function(e){var t=e.match(u);null!=t&&2<=t.length&&s("#"+t[2]).remove();t=s("#sg-data");t.prepend(e);t=t.children(":first");g(t),s("html, body").animate({scrollTop:t.offset().top},500)}).fail(function(){alert("ERROR")})}),s("tr [data-confirm]",o).click(function(e){var t,a=s(this);confirm(a.attr("data-confirm"))&&((t=a.closest("tr")).addClass("sg-disabled"),s.get(a.attr("href"),function(e){t.slideUp("fast",function(){t.remove()})}).fail(function(){alert("ERROR")})),e.preventDefault()}),s(".sg-control-confirm",o).click(function(e){var t,a=s(this);confirm(a.attr("data-confirm"))&&((t=s("#"+a.attr("data-target"))).addClass("sg-disabled"),s.get(a.attr("href"),function(e){t.fadeOut("slow",function(){t.remove()})}).fail(function(){alert("ERROR")})),e.preventDefault()}),s(".sg-replace-content",o).on("shown.bs.tab",function(e){var t=s(s(this).attr("href")),a=s(this).attr("data-url");s.get(a,function(e){t.html(e),g(t)}).fail(function(){alert("ERROR")}),s(this).removeClass("sg-replace-content"),s(this).unbind("shown.bs.tab")}),s(".sg-data-close",o).click(function(e){s(this).parent().parent().fadeOut("fast",function(){s(this).remove()})}),s("input.sg-fileupload",o).fileinput({showUpload:!1}),s("input.sg-fileupload-small",o).fileinput({showUpload:!1,previewSettings:{image:{width:"auto",height:"24px"}}}),s(".sg-pictogram-modal",o).on("shown.bs.modal",function(){var n=s(this),r=n.attr("id"),i=s("#container-"+r,n),e=s("#filter-"+r,n);e.on("input propertychange paste",function(){a(n,i,r,o,s(this).val())}).onEnter(function(){var e,t,a=s(".sg-pictogram-modal-link",i).first();0").text(a.attr("title")).html(),s("#value-"+r,o).val(e),s("#preview-"+r,o).html(''+a+' '+a),s("#clear-"+r,o).show(),n.modal("hide"))}),""===e.val()&&a(n,i,r,o,"")}),s(".sg-pictogram-chooser",o).click(function(e){s("#"+s(this).attr("data-id")).modal("show"),e.preventDefault()}),s(".sg-pictogram-clearer",o).click(function(e){var t=s(this).attr("data-id");s("#value-"+t,o).val(""),s("#preview-"+t,o).html(""),s(this).hide(),e.preventDefault()}),s(".sg-source-ref-modal",o).on("shown.bs.modal",function(){var i=s(this),t=s(".modal-body",i);s.get(i.attr("data-href"),function(e){t.html(e),s("select.sg-colorpicker",i).simplepicker({theme:"fontawesome"}),s("form",t).ajaxForm({beforeSubmit:function(e,t,a){return t.wrapInner("
"),t.prepend(s("#sg-wait").html()),!0},success:function(e,t,a,n){var r=s(i.attr("data-target"));r.html(e),g(r),i.modal("hide"),s(".modal-backdrop").remove(),s("body").removeClass("modal-open")},error:function(e,t,a,n){alert("Error "+e.status+"\n"+e.statusText)}})}).fail(function(){alert("ERROR")})}).on("hidden.bs.modal",function(){s(".modal-body",s(this)).html(s("#sg-wait").html())}),s(".sg-source-ref-editor",o).click(function(e){var t=s("#"+s(this).attr("data-id"));t.attr("data-href",s(this).attr("href")),t.modal("show"),e.preventDefault()}),s(".sg-taglist-contract",o).each(function(){var e=s("span",s(this));1'),s("span.sg-tag-show",s(this)).click(function(){s(this).remove(),e.show()}))}),s("select.sg-colorpicker",o).simplepicker({theme:"fontawesome"}),s("select.sg-tags",o).each(function(){var t=s(this);t.tagsinput({trimValue:!0,confirmKeys:[13],typeaheadjs:{name:"tags",limit:25,displayKey:"title",valueKey:"title",source:n(urlSegradaTagSearch),async:!0}}),t.on("itemRemoved",function(e){t.find('option[value="'+e.item+'"]').remove()})}),s("input.sg-node-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"node",limit:25,displayKey:"title",valueKey:"id",source:t()}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s("input.sg-file-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"file",limit:25,displayKey:"title",valueKey:"id",source:n(urlSegradaFileSearch)}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s("input.sg-source-search",o).each(function(){var e=s(this),a=s("#"+e.attr("data-id"));e.typeahead({hint:!0,highlight:!0,minLength:1},{async:!0,name:"source",limit:25,displayKey:"title",valueKey:"id",source:n(urlSegradaSourceSearch)}).bind("typeahead:selected",function(e,t){a.val(t.id)}).bind("keyup",function(){this.value||a.val("")})}),s(".sg-link-external",o).click(function(e){var t=s(this).attr("href");window.open(t,"_blank").focus(),e.preventDefault()}),s("form.sg-data-form",o).ajaxForm({beforeSubmit:function(e,t,a){return s(":input",t).attr("disabled",!0),s("button.btn-primary",t).append(" "+s("#sg-wait-btn").html()),!0},success:function(e,t,a,n){var r=n.attr("data-id");(r=(r=void 0!==r?s("#"+r):r)||n).replaceWith(e);e=e.match(u);null!=e&&2<=e.length&&g(s("#"+e[2]))},error:function(e,t,a,n){s(":input",n).attr("disabled",!1),alert("Error "+e.status+"\n"+e.statusText)}}),s("form.sg-simple-form",o).ajaxForm({beforeSubmit:function(e,t,a){s(":input",t).attr("disabled",!0);var n=t.attr("data-id");return(n=(n=void 0!==n?s("#"+n):n)||t).html(s("#sg-wait")),!0},success:function(e,t,a,n){var r=n.attr("data-id");(r=(r=void 0!==r?s("#"+r):r)||n).html(e),s(":input",n).attr("disabled",!1)},error:function(e,t,a,n){s(":input",n).attr("disabled",!1),alert("Error "+e.status+"\n"+e.statusText)}}),s(".sg-periods").each(function(){var r=s(this),i=r.attr("id"),e=s(".sg-period-form",r);s(".sg-period-add",r).click(function(e){s(this).hide();var t=s(".sg-period-form-add",r);t.show(),s(".sg-period-form-period",t).change(function(e){s(this).is(":checked")?s(".sg-period-toggle",t).show():s(".sg-period-toggle",t).hide()}),e.preventDefault()}),e.ajaxForm({beforeSubmit:function(e,t,a){return r.addClass("disabled"),!0},success:function(e,t,a,n){r.replaceWith(e),g(s("#"+i))},error:function(e,t,a,n){r.removeClass("disabled"),alert("Error "+e.status+"\n"+e.statusText)}})}),s(".sg-ajax-modal",o).click(function(e){var t=s("#sg-modal"),a=s(".modal-body-inner",t),n=s(".modal-loading",t);s("h4",t).html(s(this).attr("data-title")),a.html(""),a.hide(),n.show(),t.modal("show"),s.get(s(this).attr("href"),function(e){n.hide(),a.html(e),a.show(),g(a)}).fail(function(){alert("ERROR")}),e.preventDefault()}),s(".sg-ajax-modal-form",o).ajaxForm({beforeSubmit:function(e,t,a){var n=s("#sg-modal"),r=s(".modal-body-inner",n),n=s(".modal-loading",n);return r.hide(),n.show(),!0},success:function(e,t,a,n){var r=s("#sg-modal"),i=s(".modal-body-inner",r),o=s(".modal-loading",r);i.html(e),i.show(),o.hide(),g(i),r=s("#sg-modal"),s(".sg-update-period",r).each(function(){var e=s(this).attr("data-id"),t=s(e);if(0"+e.title+""}),""!=a&&(a="
    "+a+"
"),r.html(a),s("a",r).click(function(e){b(),v(s(this).attr("href")),i=s(this).html(),c=s(this).attr("data-uid"),n.modal("hide"),e.preventDefault()})})}),s("#sg-graph-modal-save-frm").submit(function(e){e.preventDefault();var t=s("#title-sg-graph-save").val(),e=c;null!=c&&s("#save-as-new-sg-graph-save").is(":checked")&&(e=null),d.storePositions();var a=[],n=[];o.forEach(function(e){a.push({id:e.id,x:e.x,y:e.y,group:e.group})}),l.forEach(function(e){n.push({id:e.id,group:e.group})});s.post(s(this).attr("action"),{_csrf:s("#sg-graph-container").attr("data-csrf"),uid:e,title:t,type:"graph",data:JSON.stringify({nodes:a,edges:n})},function(e){i=t,c=e}).fail(function(){alert("ERROR")}),s("#sg-graph-modal-save").modal("hide")}),g(s("body"))})}(jQuery); diff --git a/src/main/webapp/js/segrada_leaflet.min.js b/src/main/webapp/js/segrada_leaflet.min.js new file mode 100644 index 00000000..18329552 --- /dev/null +++ b/src/main/webapp/js/segrada_leaflet.min.js @@ -0,0 +1 @@ +!function(m){let n;function e(t){t=t||m("body"),m(".sg-geotab",t).on("shown.bs.tab",function(t){const e=m(t.target);if("1"!=e.attr("data-created")){e.attr("data-created","1");const i=e.attr("data-locations-id"),l=m("#"+i),r=m(".sg-map-form",l),s=m(".sg-geocomplete",r);let o=m("#"+i+"-markers",l);const d=L.map(i+"-map",{doubleClickZoom:!1}).setView([n.lat||0,n.lng||0],n.zoom||1),a=L.tileLayer.provider(n.provider||"Stamen.TerrainBackground",n.options||{});a.addTo(d);const c=L.featureGroup().addTo(d);p(o,c,d),m(".sg-map-add-marker",l).click(function(t){m("#"+i+"-add-location-btn").hide(),r.show(),t.preventDefault()}),s.typeahead({hint:!0,highlight:!0,minLength:2},{name:"address-suggest-"+i,displayKey:"title",limit:100,valueKey:"id",source:function(t,e,n){m.ajax({url:"http://nominatim.openstreetmap.org/search?format=json&q="+encodeURIComponent(t)}).done(function(e){const a=[];for(let t=0;t"+escapeHTML(o)+"

":"",i=new ol.geom.Point(ol.proj.transform([a,n],"EPSG:4326","EPSG:3857")),o=new ol.Feature({geometry:i,data_id:t.html(),lat:n,lng:a,delete_ok:"1"===t.attr("data-delete-ok"),delete_url:t.attr("data-delete"),comment:o}),e.addFeature(o)})}function t(t){t=t||h("body"),h(".sg-geotab",t).on("shown.bs.tab",function(t){var o,i,r,l,s,c,p,u,t=h(t.target);"1"!=t.attr("data-created")&&(t.attr("data-created","1"),o=t.attr("data-locations-id"),i=h("#"+o),r=h(".sg-map-form",i),l=h(".sg-geocomplete",r),s=h("#"+o+"-markers",i),c=h("#"+o+"-delete").html(),p=new ol.source.Vector({}),d(s,p),t=new ol.style.Style({image:new ol.style.Icon({anchor:[12,12],anchorXUnits:"pixels",anchorYUnits:"pixels",opacity:.75,src:urlSegradaBasepath+"img/marker-icon.png"})}),(u=new ol.Map({layers:[new ol.layer.Tile({source:new ol.source.Stamen({layer:"terrain-background"})}),new ol.layer.Vector({source:p,style:t})],view:new ol.View({center:[0,0],zoom:1}),target:o+"-map"})).on("singleclick",function(t){u.forEachFeatureAtPixel(t.pixel,function(n,t){var a=new ol.Overlay.Popup;u.addOverlay(a);var e="

"+n.get("lat")+","+n.get("lng")+"

";e+=n.get("comment"),n.get("delete_ok")&&(e+='

'+c+"

"),a.show(n.getGeometry().getCoordinates(),e),a.getElement().addEventListener("click",function(t){var e;"delete"==t.target.getAttribute("data-action")&&(e=h("#"+o+"-delete-confirm").html().replace("{0}",n.get("lat")+","+n.get("lng")),confirm(e)&&(h.get(n.get("delete_url"),function(t){s.replaceWith(t),d(s=h("#"+o+"-markers",i),p)}),a.hide()),t.preventDefault())},!1)})}),u.on("dblclick",function(t){var e,n,a=h(".sg-location-dbl-click",i);0"+escapeHTML(o)+"

":"",i=new ol.geom.Point(ol.proj.transform([a,n],"EPSG:4326","EPSG:3857")),o=new ol.Feature({geometry:i,data_id:t.html(),lat:n,lng:a,delete_ok:"1"===t.attr("data-delete-ok"),delete_url:t.attr("data-delete"),comment:o}),e.addFeature(o)})}function t(t){t=t||h("body"),h(".sg-geotab",t).on("shown.bs.tab",function(t){var o,i,l,r,s,c,p,u,t=h(t.target);"1"!=t.attr("data-created")&&(t.attr("data-created","1"),o=t.attr("data-locations-id"),i=h("#"+o),l=h(".sg-map-form",i),r=h(".sg-geocomplete",l),s=h("#"+o+"-markers",i),c=h("#"+o+"-delete").html(),p=new ol.source.Vector({}),d(s,p),t=new ol.style.Style({image:new ol.style.Icon({anchor:[12,12],anchorXUnits:"pixels",anchorYUnits:"pixels",opacity:.75,src:urlSegradaBasepath+"img/marker-icon.png"})}),(u=new ol.Map({layers:[new ol.layer.Tile({source:new ol.source.Stamen({layer:"terrain-background"})}),new ol.layer.Vector({source:p,style:t})],view:new ol.View({center:[0,0],zoom:1}),target:o+"-map"})).on("singleclick",function(t){u.forEachFeatureAtPixel(t.pixel,function(n,t){var a=new ol.Overlay.Popup;u.addOverlay(a);var e="

"+n.get("lat")+","+n.get("lng")+"

";e+=n.get("comment"),n.get("delete_ok")&&(e+='

'+c+"

"),a.show(n.getGeometry().getCoordinates(),e),a.getElement().addEventListener("click",function(t){var e;"delete"==t.target.getAttribute("data-action")&&(e=h("#"+o+"-delete-confirm").html().replace("{0}",n.get("lat")+","+n.get("lng")),confirm(e)&&(h.get(n.get("delete_url"),function(t){s.replaceWith(t),d(s=h("#"+o+"-markers",i),p)}),a.hide()),t.preventDefault())},!1)})}),u.on("dblclick",function(t){var e,n,a=h(".sg-location-dbl-click",i);0
'),this.$input=a('').appendTo(this.$container),this.$element.before(this.$container),this.build(c),this.isInit=!1}function c(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(a){return a[c]}}}function d(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(){return c}}}function e(a){return a?i.text(a).html():""}function f(a){var b=0;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-a.value.length),b=c.text.length}else(a.selectionStart||"0"==a.selectionStart)&&(b=a.selectionStart);return b}function g(b,c){var d=!1;return a.each(c,function(a,c){if("number"==typeof c&&b.which===c)return d=!0,!1;if(b.which===c.which){var e=!c.hasOwnProperty("altKey")||b.altKey===c.altKey,f=!c.hasOwnProperty("shiftKey")||b.shiftKey===c.shiftKey,g=!c.hasOwnProperty("ctrlKey")||b.ctrlKey===c.ctrlKey;if(e&&f&&g)return d=!0,!1}}),d}var h={tagClass:function(a){return"label label-info"},focusClass:"focus",itemValue:function(a){return a?a.toString():a},itemText:function(a){return this.itemValue(a)},itemTitle:function(a){return null},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],delimiter:",",delimiterRegex:null,cancelConfirmKeysOnEmpty:!1,onTagExists:function(a,b){b.hide().fadeIn()},trimValue:!1,allowDuplicates:!1,triggerChange:!0};b.prototype={constructor:b,add:function(b,c,d){var f=this;if(!(f.options.maxTags&&f.itemsArray.length>=f.options.maxTags)&&(b===!1||b)){if("string"==typeof b&&f.options.trimValue&&(b=a.trim(b)),"object"==typeof b&&!f.objectItems)throw"Can't add objects when itemValue option is not set";if(!b.toString().match(/^\s*$/)){if(f.isSelect&&!f.multiple&&f.itemsArray.length>0&&f.remove(f.itemsArray[0]),"string"==typeof b&&"INPUT"===this.$element[0].tagName){var g=f.options.delimiterRegex?f.options.delimiterRegex:f.options.delimiter,h=b.split(g);if(h.length>1){for(var i=0;if.options.maxInputLength)){var o=a.Event("beforeItemAdd",{item:b,cancel:!1,options:d});if(f.$element.trigger(o),!o.cancel){f.itemsArray.push(b);var p=a(''+e(k)+'');p.data("item",b),f.findInputWrapper().before(p),p.after(" ");var q=a('option[value="'+encodeURIComponent(j)+'"]',f.$element).length||a('option[value="'+e(j)+'"]',f.$element).length;if(f.isSelect&&!q){var r=a("");r.data("item",b),r.attr("value",j),f.$element.append(r)}c||f.pushVal(f.options.triggerChange),(f.options.maxTags===f.itemsArray.length||f.items().toString().length===f.options.maxInputLength)&&f.$container.addClass("bootstrap-tagsinput-max"),a(".typeahead, .twitter-typeahead",f.$container).length&&f.$input.typeahead("val",""),this.isInit?f.$element.trigger(a.Event("itemAddedOnInit",{item:b,options:d})):f.$element.trigger(a.Event("itemAdded",{item:b,options:d}))}}}else if(f.options.onTagExists){var s=a(".tag",f.$container).filter(function(){return a(this).data("item")===n});f.options.onTagExists(b,s)}}}},remove:function(b,c,d){var e=this;if(e.objectItems&&(b="object"==typeof b?a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==e.options.itemValue(b)}):a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==b}),b=b[b.length-1]),b){var f=a.Event("beforeItemRemove",{item:b,cancel:!1,options:d});if(e.$element.trigger(f),f.cancel)return;a(".tag",e.$container).filter(function(){return a(this).data("item")===b}).remove(),a("option",e.$element).filter(function(){return a(this).data("item")===b}).remove(),-1!==a.inArray(b,e.itemsArray)&&e.itemsArray.splice(a.inArray(b,e.itemsArray),1)}c||e.pushVal(e.options.triggerChange),e.options.maxTags>e.itemsArray.length&&e.$container.removeClass("bootstrap-tagsinput-max"),e.$element.trigger(a.Event("itemRemoved",{item:b,options:d}))},removeAll:function(){var b=this;for(a(".tag",b.$container).remove(),a("option",b.$element).remove();b.itemsArray.length>0;)b.itemsArray.pop();b.pushVal(b.options.triggerChange)},refresh:function(){var b=this;a(".tag",b.$container).each(function(){var c=a(this),d=c.data("item"),f=b.options.itemValue(d),g=b.options.itemText(d),h=b.options.tagClass(d);if(c.attr("class",null),c.addClass("tag "+e(h)),c.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=e(g),b.isSelect){var i=a("option",b.$element).filter(function(){return a(this).data("item")===d});i.attr("value",f)}})},items:function(){return this.itemsArray},pushVal:function(){var b=this,c=a.map(b.items(),function(a){return b.options.itemValue(a).toString()});b.$element.val(c,!0),b.options.triggerChange&&b.$element.trigger("change")},build:function(b){var e=this;if(e.options=a.extend({},h,b),e.objectItems&&(e.options.freeInput=!1),c(e.options,"itemValue"),c(e.options,"itemText"),d(e.options,"tagClass"),e.options.typeahead){var i=e.options.typeahead||{};d(i,"source"),e.$input.typeahead(a.extend({},i,{source:function(b,c){function d(a){for(var b=[],d=0;d$1")}}))}if(e.options.typeaheadjs){var j=null,k={},l=e.options.typeaheadjs;a.isArray(l)?(j=l[0],k=l[1]):k=l,e.$input.typeahead(j,k).on("typeahead:selected",a.proxy(function(a,b){k.valueKey?e.add(b[k.valueKey]):e.add(b),e.$input.typeahead("val","")},e))}e.$container.on("click",a.proxy(function(a){e.$element.attr("disabled")||e.$input.removeAttr("disabled"),e.$input.focus()},e)),e.options.addOnBlur&&e.options.freeInput&&e.$input.on("focusout",a.proxy(function(b){0===a(".typeahead, .twitter-typeahead",e.$container).length&&(e.add(e.$input.val()),e.$input.val(""))},e)),e.$container.on({focusin:function(){e.$container.addClass(e.options.focusClass)},focusout:function(){e.$container.removeClass(e.options.focusClass)}}),e.$container.on("keydown","input",a.proxy(function(b){var c=a(b.target),d=e.findInputWrapper();if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");switch(b.which){case 8:if(0===f(c[0])){var g=d.prev();g.length&&e.remove(g.data("item"))}break;case 46:if(0===f(c[0])){var h=d.next();h.length&&e.remove(h.data("item"))}break;case 37:var i=d.prev();0===c.val().length&&i[0]&&(i.before(d),c.focus());break;case 39:var j=d.next();0===c.val().length&&j[0]&&(j.after(d),c.focus())}var k=c.val().length;Math.ceil(k/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("keypress","input",a.proxy(function(b){var c=a(b.target);if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");var d=c.val(),f=e.options.maxChars&&d.length>=e.options.maxChars;e.options.freeInput&&(g(b,e.options.confirmKeys)||f)&&(0!==d.length&&(e.add(f?d.substr(0,e.options.maxChars):d),c.val("")),e.options.cancelConfirmKeysOnEmpty===!1&&b.preventDefault());var h=c.val().length;Math.ceil(h/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("click","[data-role=remove]",a.proxy(function(b){e.$element.attr("disabled")||e.remove(a(b.target).closest(".tag").data("item"))},e)),e.options.itemValue===h.itemValue&&("INPUT"===e.$element[0].tagName?e.add(e.$element.val()):a("option",e.$element).each(function(){e.add(a(this).attr("value"),!0)}))},destroy:function(){var a=this;a.$container.off("keypress","input"),a.$container.off("click","[role=remove]"),a.$container.remove(),a.$element.removeData("tagsinput"),a.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var b=this.$input[0],c=this.$container[0];b&&b.parentNode!==c;)b=b.parentNode;return a(b)}},a.fn.tagsinput=function(c,d,e){var f=[];return this.each(function(){var g=a(this).data("tagsinput");if(g)if(c||d){if(void 0!==g[c]){if(3===g[c].length&&void 0!==e)var h=g[c](d,null,e);else var h=g[c](d);void 0!==h&&f.push(h)}}else f.push(g);else g=new b(this,c),a(this).data("tagsinput",g),f.push(g),"SELECT"===this.tagName&&a("option",a(this)).attr("selected","selected"),a(this).val(a(this).val())}),"string"==typeof c?f.length>1?f:f[0]:f},a.fn.tagsinput.Constructor=b;var i=a("
");a(function(){a("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput()})}(window.jQuery); -//# sourceMappingURL=bootstrap-tagsinput.min.js.map \ No newline at end of file +!function(a){"use strict";function b(b,c){this.isInit=!0,this.itemsArray=[],this.$element=a(b),this.$element.hide(),this.isSelect="SELECT"===b.tagName,this.multiple=this.isSelect&&b.hasAttribute("multiple"),this.objectItems=c&&c.itemValue,this.placeholderText=b.hasAttribute("placeholder")?this.$element.attr("placeholder"):"",this.inputSize=Math.max(1,this.placeholderText.length),this.$container=a('
'),this.$input=a('').appendTo(this.$container),this.$element.before(this.$container),this.build(c),this.isInit=!1}function c(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(a){return a[c]}}}function d(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(){return c}}}function e(a){return a?i.text(a).html():""}function f(a){var b=0;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-a.value.length),b=c.text.length}else(a.selectionStart||"0"==a.selectionStart)&&(b=a.selectionStart);return b}function g(b,c){var d=!1;return a.each(c,function(a,c){if("number"==typeof c&&b.which===c)return d=!0,!1;if(b.which===c.which){var e=!c.hasOwnProperty("altKey")||b.altKey===c.altKey,f=!c.hasOwnProperty("shiftKey")||b.shiftKey===c.shiftKey,g=!c.hasOwnProperty("ctrlKey")||b.ctrlKey===c.ctrlKey;if(e&&f&&g)return d=!0,!1}}),d}var h={tagClass:function(a){return"label label-info"},focusClass:"focus",itemValue:function(a){return a?a.toString():a},itemText:function(a){return this.itemValue(a)},itemTitle:function(a){return null},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],delimiter:",",delimiterRegex:null,cancelConfirmKeysOnEmpty:!1,onTagExists:function(a,b){b.hide().fadeIn()},trimValue:!1,allowDuplicates:!1,triggerChange:!0};b.prototype={constructor:b,add:function(b,c,d){var f=this;if(!(f.options.maxTags&&f.itemsArray.length>=f.options.maxTags)&&(b===!1||b)){if("string"==typeof b&&f.options.trimValue&&(b=a.trim(b)),"object"==typeof b&&!f.objectItems)throw"Can't add objects when itemValue option is not set";if(!b.toString().match(/^\s*$/)){if(f.isSelect&&!f.multiple&&f.itemsArray.length>0&&f.remove(f.itemsArray[0]),"string"==typeof b&&"INPUT"===this.$element[0].tagName){var g=f.options.delimiterRegex?f.options.delimiterRegex:f.options.delimiter,h=b.split(g);if(h.length>1){for(var i=0;if.options.maxInputLength)){var o=a.Event("beforeItemAdd",{item:b,cancel:!1,options:d});if(f.$element.trigger(o),!o.cancel){f.itemsArray.push(b);var p=a(''+e(k)+'');p.data("item",b),f.findInputWrapper().before(p),p.after(" ");var q=a('option[value="'+encodeURIComponent(j)+'"]',f.$element).length||a('option[value="'+e(j)+'"]',f.$element).length;if(f.isSelect&&!q){var r=a("");r.data("item",b),r.attr("value",j),f.$element.append(r)}c||f.pushVal(f.options.triggerChange),(f.options.maxTags===f.itemsArray.length||f.items().toString().length===f.options.maxInputLength)&&f.$container.addClass("bootstrap-tagsinput-max"),a(".typeahead, .twitter-typeahead",f.$container).length&&f.$input.typeahead("val",""),this.isInit?f.$element.trigger(a.Event("itemAddedOnInit",{item:b,options:d})):f.$element.trigger(a.Event("itemAdded",{item:b,options:d}))}}}else if(f.options.onTagExists){var s=a(".tag",f.$container).filter(function(){return a(this).data("item")===n});f.options.onTagExists(b,s)}}}},remove:function(b,c,d){var e=this;if(e.objectItems&&(b="object"==typeof b?a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==e.options.itemValue(b)}):a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==b}),b=b[b.length-1]),b){var f=a.Event("beforeItemRemove",{item:b,cancel:!1,options:d});if(e.$element.trigger(f),f.cancel)return;a(".tag",e.$container).filter(function(){return a(this).data("item")===b}).remove(),a("option",e.$element).filter(function(){return a(this).data("item")===b}).remove(),-1!==a.inArray(b,e.itemsArray)&&e.itemsArray.splice(a.inArray(b,e.itemsArray),1)}c||e.pushVal(e.options.triggerChange),e.options.maxTags>e.itemsArray.length&&e.$container.removeClass("bootstrap-tagsinput-max"),e.$element.trigger(a.Event("itemRemoved",{item:b,options:d}))},removeAll:function(){var b=this;for(a(".tag",b.$container).remove(),a("option",b.$element).remove();b.itemsArray.length>0;)b.itemsArray.pop();b.pushVal(b.options.triggerChange)},refresh:function(){var b=this;a(".tag",b.$container).each(function(){var c=a(this),d=c.data("item"),f=b.options.itemValue(d),g=b.options.itemText(d),h=b.options.tagClass(d);if(c.attr("class",null),c.addClass("tag "+e(h)),c.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=e(g),b.isSelect){var i=a("option",b.$element).filter(function(){return a(this).data("item")===d});i.attr("value",f)}})},items:function(){return this.itemsArray},pushVal:function(){var b=this,c=a.map(b.items(),function(a){return b.options.itemValue(a).toString()});b.$element.val(c,!0),b.options.triggerChange&&b.$element.trigger("change")},build:function(b){var e=this;if(e.options=a.extend({},h,b),e.objectItems&&(e.options.freeInput=!1),c(e.options,"itemValue"),c(e.options,"itemText"),d(e.options,"tagClass"),e.options.typeahead){var i=e.options.typeahead||{};d(i,"source"),e.$input.typeahead(a.extend({},i,{source:function(b,c){function d(a){for(var b=[],d=0;d$1")}}))}if(e.options.typeaheadjs){var j=null,k={},l=e.options.typeaheadjs;a.isArray(l)?(j=l[0],k=l[1]):k=l,e.$input.typeahead(j,k).on("typeahead:selected",a.proxy(function(a,b){k.valueKey?e.add(b[k.valueKey]):e.add(b),e.$input.typeahead("val","")},e))}e.$container.on("click",a.proxy(function(a){e.$element.attr("disabled")||e.$input.removeAttr("disabled"),e.$input.focus()},e)),e.options.addOnBlur&&e.options.freeInput&&e.$input.on("focusout",a.proxy(function(b){0===a(".typeahead, .twitter-typeahead",e.$container).length&&(e.add(e.$input.val()),e.$input.val(""))},e)),e.$container.on({focusin:function(){e.$container.addClass(e.options.focusClass)},focusout:function(){e.$container.removeClass(e.options.focusClass)}}),e.$container.on("keydown","input",a.proxy(function(b){var c=a(b.target),d=e.findInputWrapper();if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");switch(b.which){case 8:if(0===f(c[0])){var g=d.prev();g.length&&e.remove(g.data("item"))}break;case 46:if(0===f(c[0])){var h=d.next();h.length&&e.remove(h.data("item"))}break;case 37:var i=d.prev();0===c.val().length&&i[0]&&(i.before(d),c.focus());break;case 39:var j=d.next();0===c.val().length&&j[0]&&(j.after(d),c.focus())}var k=c.val().length;Math.ceil(k/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("keypress","input",a.proxy(function(b){var c=a(b.target);if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");var d=c.val(),f=e.options.maxChars&&d.length>=e.options.maxChars;e.options.freeInput&&(g(b,e.options.confirmKeys)||f)&&(0!==d.length&&(e.add(f?d.substr(0,e.options.maxChars):d),c.val("")),e.options.cancelConfirmKeysOnEmpty===!1&&b.preventDefault());var h=c.val().length;Math.ceil(h/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("click","[data-role=remove]",a.proxy(function(b){e.$element.attr("disabled")||e.remove(a(b.target).closest(".tag").data("item"))},e)),e.options.itemValue===h.itemValue&&("INPUT"===e.$element[0].tagName?e.add(e.$element.val()):a("option",e.$element).each(function(){e.add(a(this).attr("value"),!0)}))},destroy:function(){var a=this;a.$container.off("keypress","input"),a.$container.off("click","[role=remove]"),a.$container.remove(),a.$element.removeData("tagsinput"),a.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var b=this.$input[0],c=this.$container[0];b&&b.parentNode!==c;)b=b.parentNode;return a(b)}},a.fn.tagsinput=function(c,d,e){var f=[];return this.each(function(){var g=a(this).data("tagsinput");if(g)if(c||d){if(void 0!==g[c]){if(3===g[c].length&&void 0!==e)var h=g[c](d,null,e);else var h=g[c](d);void 0!==h&&f.push(h)}}else f.push(g);else g=new b(this,c),a(this).data("tagsinput",g),f.push(g),"SELECT"===this.tagName&&a("option",a(this)).attr("selected","selected"),a(this).val(a(this).val())}),"string"==typeof c?f.length>1?f:f[0]:f},a.fn.tagsinput.Constructor=b;var i=a("
");a(function(){a("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput()})}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/js/vendor/leaflet-providers.js b/src/main/webapp/js/vendor/leaflet-providers.js new file mode 100644 index 00000000..48d9bf3b --- /dev/null +++ b/src/main/webapp/js/vendor/leaflet-providers.js @@ -0,0 +1,1100 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['leaflet'], factory); + } else if (typeof modules === 'object' && module.exports) { + // define a Common JS module that relies on 'leaflet' + module.exports = factory(require('leaflet')); + } else { + // Assume Leaflet is loaded into global object L already + factory(L); + } +}(this, function (L) { + 'use strict'; + + L.TileLayer.Provider = L.TileLayer.extend({ + initialize: function (arg, options) { + var providers = L.TileLayer.Provider.providers; + + var parts = arg.split('.'); + + var providerName = parts[0]; + var variantName = parts[1]; + + if (!providers[providerName]) { + throw 'No such provider (' + providerName + ')'; + } + + var provider = { + url: providers[providerName].url, + options: providers[providerName].options + }; + + // overwrite values in provider from variant. + if (variantName && 'variants' in providers[providerName]) { + if (!(variantName in providers[providerName].variants)) { + throw 'No such variant of ' + providerName + ' (' + variantName + ')'; + } + var variant = providers[providerName].variants[variantName]; + var variantOptions; + if (typeof variant === 'string') { + variantOptions = { + variant: variant + }; + } else { + variantOptions = variant.options; + } + provider = { + url: variant.url || provider.url, + options: L.Util.extend({}, provider.options, variantOptions) + }; + } + + // replace attribution placeholders with their values from toplevel provider attribution, + // recursively + var attributionReplacer = function (attr) { + if (attr.indexOf('{attribution.') === -1) { + return attr; + } + return attr.replace(/\{attribution.(\w*)\}/g, + function (match, attributionName) { + return attributionReplacer(providers[attributionName].options.attribution); + } + ); + }; + provider.options.attribution = attributionReplacer(provider.options.attribution); + + // Compute final options combining provider options with any user overrides + var layerOpts = L.Util.extend({}, provider.options, options); + L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); + } + }); + + /** + * Definition of providers. + * see http://leafletjs.com/reference.html#tilelayer for options in the options map. + */ + + L.TileLayer.Provider.providers = { + OpenStreetMap: { + url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: + '© OpenStreetMap contributors' + }, + variants: { + Mapnik: {}, + DE: { + url: 'https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + options: { + maxZoom: 18 + } + }, + CH: { + url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', + options: { + maxZoom: 18, + bounds: [[45, 5], [48, 11]] + } + }, + France: { + url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: '© OpenStreetMap France | {attribution.OpenStreetMap}' + } + }, + HOT: { + url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap}, ' + + 'Tiles style by Humanitarian OpenStreetMap Team ' + + 'hosted by OpenStreetMap France' + } + }, + BZH: { + url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', + options: { + attribution: '{attribution.OpenStreetMap}, Tiles courtesy of Breton OpenStreetMap Team', + bounds: [[46.2, -5.5], [50, 0.7]] + } + } + } + }, + OpenSeaMap: { + url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', + options: { + attribution: 'Map data: © OpenSeaMap contributors' + } + }, + OpenPtMap: { + url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: © OpenPtMap contributors' + } + }, + OpenTopoMap: { + url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: {attribution.OpenStreetMap}, SRTM | Map style: © OpenTopoMap (CC-BY-SA)' + } + }, + OpenRailwayMap: { + url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenRailwayMap (CC-BY-SA)' + } + }, + OpenFireMap: { + url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenFireMap (CC-BY-SA)' + } + }, + SafeCast: { + url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', + options: { + maxZoom: 16, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © SafeCast (CC-BY-SA)' + } + }, + Stadia: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png', + options: { + maxZoom: 20, + attribution: '© Stadia Maps, © OpenMapTiles © OpenStreetMap contributors' + }, + variants: { + AlidadeSmooth: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png' + }, + AlidadeSmoothDark: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png' + }, + OSMBright: { + url: 'https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png' + }, + Outdoors: { + url: 'https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png' + } + } + }, + Thunderforest: { + url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', + options: { + attribution: + '© Thunderforest, {attribution.OpenStreetMap}', + variant: 'cycle', + apikey: '', + maxZoom: 22 + }, + variants: { + OpenCycleMap: 'cycle', + Transport: { + options: { + variant: 'transport' + } + }, + TransportDark: { + options: { + variant: 'transport-dark' + } + }, + SpinalMap: { + options: { + variant: 'spinal-map' + } + }, + Landscape: 'landscape', + Outdoors: 'outdoors', + Pioneer: 'pioneer', + MobileAtlas: 'mobile-atlas', + Neighbourhood: 'neighbourhood' + } + }, + CyclOSM: { + url: 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: 'CyclOSM | Map data: {attribution.OpenStreetMap}' + } + }, + Hydda: { + url: 'https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + variant: 'full', + attribution: 'Tiles courtesy of OpenStreetMap Sweden — Map data {attribution.OpenStreetMap}' + }, + variants: { + Full: 'full', + Base: 'base', + RoadsAndLabels: 'roads_and_labels' + } + }, + Jawg: { + url: 'https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}', + options: { + attribution: + '© JawgMaps ' + + '{attribution.OpenStreetMap}', + minZoom: 0, + maxZoom: 22, + subdomains: 'abcd', + variant: 'jawg-terrain', + // Get your own Jawg access token here : https://www.jawg.io/lab/ + // NB : this is a demonstration key that comes with no guarantee + accessToken: '', + }, + variants: { + Streets: 'jawg-streets', + Terrain: 'jawg-terrain', + Sunny: 'jawg-sunny', + Dark: 'jawg-dark', + Light: 'jawg-light', + Matrix: 'jawg-matrix' + } + }, + MapBox: { + url: 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}', + options: { + attribution: + '© Mapbox ' + + '{attribution.OpenStreetMap} ' + + 'Improve this map', + tileSize: 512, + maxZoom: 18, + zoomOffset: -1, + id: 'mapbox/streets-v11', + accessToken: '', + } + }, + MapTiler: { + url: 'https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}', + options: { + attribution: + '© MapTiler © OpenStreetMap contributors', + variant: 'streets', + ext: 'png', + key: '', + tileSize: 512, + zoomOffset: -1, + minZoom: 0, + maxZoom: 21 + }, + variants: { + Streets: 'streets', + Basic: 'basic', + Bright: 'bright', + Pastel: 'pastel', + Positron: 'positron', + Hybrid: { + options: { + variant: 'hybrid', + ext: 'jpg' + } + }, + Toner: 'toner', + Topo: 'topo', + Voyager: 'voyager' + } + }, + Stamen: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}', + options: { + attribution: + 'Map tiles by Stamen Design, ' + + 'CC BY 3.0 — ' + + 'Map data {attribution.OpenStreetMap}', + subdomains: 'abcd', + minZoom: 0, + maxZoom: 20, + variant: 'toner', + ext: 'png' + }, + variants: { + Toner: 'toner', + TonerBackground: 'toner-background', + TonerHybrid: 'toner-hybrid', + TonerLines: 'toner-lines', + TonerLabels: 'toner-labels', + TonerLite: 'toner-lite', + Watercolor: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'watercolor', + ext: 'jpg', + minZoom: 1, + maxZoom: 16 + } + }, + Terrain: { + options: { + variant: 'terrain', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainBackground: { + options: { + variant: 'terrain-background', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainLabels: { + options: { + variant: 'terrain-labels', + minZoom: 0, + maxZoom: 18 + } + }, + TopOSMRelief: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'toposm-color-relief', + ext: 'jpg', + bounds: [[22, -132], [51, -56]] + } + }, + TopOSMFeatures: { + options: { + variant: 'toposm-features', + bounds: [[22, -132], [51, -56]], + opacity: 0.9 + } + } + } + }, + TomTom: { + url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', + options: { + variant: 'basic', + maxZoom: 22, + attribution: + '© 1992 - ' + new Date().getFullYear() + ' TomTom. ', + subdomains: 'abcd', + style: 'main', + ext: 'png', + apikey: '', + }, + variants: { + Basic: 'basic', + Hybrid: 'hybrid', + Labels: 'labels' + } + }, + Esri: { + url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', + options: { + variant: 'World_Street_Map', + attribution: 'Tiles © Esri' + }, + variants: { + WorldStreetMap: { + options: { + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' + } + }, + DeLorme: { + options: { + variant: 'Specialty/DeLorme_World_Base_Map', + minZoom: 1, + maxZoom: 11, + attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' + } + }, + WorldTopoMap: { + options: { + variant: 'World_Topo_Map', + attribution: + '{attribution.Esri} — ' + + 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' + } + }, + WorldImagery: { + options: { + variant: 'World_Imagery', + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' + } + }, + WorldTerrain: { + options: { + variant: 'World_Terrain_Base', + maxZoom: 13, + attribution: + '{attribution.Esri} — ' + + 'Source: USGS, Esri, TANA, DeLorme, and NPS' + } + }, + WorldShadedRelief: { + options: { + variant: 'World_Shaded_Relief', + maxZoom: 13, + attribution: '{attribution.Esri} — Source: Esri' + } + }, + WorldPhysical: { + options: { + variant: 'World_Physical_Map', + maxZoom: 8, + attribution: '{attribution.Esri} — Source: US National Park Service' + } + }, + OceanBasemap: { + options: { + variant: 'Ocean_Basemap', + maxZoom: 13, + attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' + } + }, + NatGeoWorldMap: { + options: { + variant: 'NatGeo_World_Map', + maxZoom: 16, + attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' + } + }, + WorldGrayCanvas: { + options: { + variant: 'Canvas/World_Light_Gray_Base', + maxZoom: 16, + attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' + } + } + } + }, + OpenWeatherMap: { + url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', + options: { + maxZoom: 19, + attribution: 'Map data © OpenWeatherMap', + apiKey: '', + opacity: 0.5 + }, + variants: { + Clouds: 'clouds', + CloudsClassic: 'clouds_cls', + Precipitation: 'precipitation', + PrecipitationClassic: 'precipitation_cls', + Rain: 'rain', + RainClassic: 'rain_cls', + Pressure: 'pressure', + PressureContour: 'pressure_cntr', + Wind: 'wind', + Temperature: 'temp', + Snow: 'snow' + } + }, + HERE: { + /* + * HERE maps, formerly Nokia maps. + * These basemaps are free, but you need an api id and app key. Please sign up at + * https://developer.here.com/plans + */ + url: + 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'app_id={app_id}&app_code={app_code}&lg={language}', + options: { + attribution: + 'Map © 1987-' + new Date().getFullYear() + ' HERE', + subdomains: '1234', + mapID: 'newest', + 'app_id': '', + 'app_code': '', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalDayTraffic: { + options: { + variant: 'normal.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + normalNightTransit: 'normal.night.transit', + normalNightTransitMobile: 'normal.night.transit.mobile', + reducedDay: 'reduced.day', + reducedNight: 'reduced.night', + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + hybridDayTransit: { + options: { + base: 'aerial', + variant: 'hybrid.day.transit' + } + }, + hybridDayGrey: { + options: { + base: 'aerial', + variant: 'hybrid.grey.day' + } + }, + hybridDayTraffic: { + options: { + variant: 'hybrid.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + HEREv3: { + /* + * HERE maps API Version 3. + * These basemaps are free, but you need an API key. Please sign up at + * https://developer.here.com/plans + * Version 3 deprecates the app_id and app_code access in favor of apiKey + * + * Supported access methods as of 2019/12/21: + * @see https://developer.here.com/faqs#access-control-1--how-do-you-control-access-to-here-location-services + */ + url: + 'https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'apiKey={apiKey}&lg={language}', + options: { + attribution: + 'Map © 1987-' + new Date().getFullYear() + ' HERE', + subdomains: '1234', + mapID: 'newest', + apiKey: '', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + normalNightTransit: 'normal.night.transit', + normalNightTransitMobile: 'normal.night.transit.mobile', + reducedDay: 'reduced.day', + reducedNight: 'reduced.night', + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + hybridDayTransit: { + options: { + base: 'aerial', + variant: 'hybrid.day.transit' + } + }, + hybridDayGrey: { + options: { + base: 'aerial', + variant: 'hybrid.grey.day' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + FreeMapSK: { + url: 'https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', + options: { + minZoom: 8, + maxZoom: 16, + subdomains: 'abcd', + bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], + attribution: + '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 Freemap.sk' + } + }, + MtbMap: { + url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap} & USGS' + } + }, + CartoDB: { + url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png', + options: { + attribution: '{attribution.OpenStreetMap} © CARTO', + subdomains: 'abcd', + maxZoom: 19, + variant: 'light_all' + }, + variants: { + Positron: 'light_all', + PositronNoLabels: 'light_nolabels', + PositronOnlyLabels: 'light_only_labels', + DarkMatter: 'dark_all', + DarkMatterNoLabels: 'dark_nolabels', + DarkMatterOnlyLabels: 'dark_only_labels', + Voyager: 'rastertiles/voyager', + VoyagerNoLabels: 'rastertiles/voyager_nolabels', + VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', + VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' + } + }, + HikeBike: { + url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: '{attribution.OpenStreetMap}', + variant: 'hikebike' + }, + variants: { + HikeBike: {}, + HillShading: { + options: { + maxZoom: 15, + variant: 'hillshading' + } + } + } + }, + BasemapAT: { + url: 'https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}', + options: { + maxZoom: 19, + attribution: 'Datenquelle: basemap.at', + subdomains: ['', '1', '2', '3', '4'], + type: 'normal', + format: 'png', + bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], + variant: 'geolandbasemap' + }, + variants: { + basemap: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'geolandbasemap' + } + }, + grau: 'bmapgrau', + overlay: 'bmapoverlay', + terrain: { + options: { + variant: 'bmapgelaende', + type: 'grau', + format: 'jpeg' + } + }, + surface: { + options: { + variant: 'bmapoberflaeche', + type: 'grau', + format: 'jpeg' + } + }, + highdpi: { + options: { + variant: 'bmaphidpi', + format: 'jpeg' + } + }, + orthofoto: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'bmaporthofoto30cm', + format: 'jpeg' + } + } + } + }, + nlmaps: { + url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', + options: { + minZoom: 6, + maxZoom: 19, + bounds: [[50.5, 3.25], [54, 7.6]], + attribution: 'Kaartgegevens © Kadaster' + }, + variants: { + 'standaard': 'brtachtergrondkaart', + 'pastel': 'brtachtergrondkaartpastel', + 'grijs': 'brtachtergrondkaartgrijs', + 'luchtfoto': { + 'url': 'https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_ortho25/EPSG:3857/{z}/{x}/{y}.jpeg', + } + } + }, + NASAGIBS: { + url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', + options: { + attribution: + 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + + '(ESDIS) with funding provided by NASA/HQ.', + bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], + minZoom: 1, + maxZoom: 9, + format: 'jpg', + time: '', + tilematrixset: 'GoogleMapsCompatible_Level' + }, + variants: { + ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', + ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', + ViirsEarthAtNight2012: { + options: { + variant: 'VIIRS_CityLights_2012', + maxZoom: 8 + } + }, + ModisTerraLSTDay: { + options: { + variant: 'MODIS_Terra_Land_Surface_Temp_Day', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + }, + ModisTerraSnowCover: { + options: { + variant: 'MODIS_Terra_NDSI_Snow_Cover', + format: 'png', + maxZoom: 8, + opacity: 0.75 + } + }, + ModisTerraAOD: { + options: { + variant: 'MODIS_Terra_Aerosol', + format: 'png', + maxZoom: 6, + opacity: 0.75 + } + }, + ModisTerraChlorophyll: { + options: { + variant: 'MODIS_Terra_Chlorophyll_A', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + } + } + }, + NLS: { + // NLS maps are copyright National library of Scotland. + // http://maps.nls.uk/projects/api/index.html + // Please contact NLS for anything other than non-commercial low volume usage + // + // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s + // z0-9 - 1:1m + // z10-11 - quarter inch (1:253440) + // z12-18 - one inch (1:63360) + url: 'https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', + options: { + attribution: 'National Library of Scotland Historic Maps', + bounds: [[49.6, -12], [61.7, 3]], + minZoom: 1, + maxZoom: 18, + subdomains: '0123', + } + }, + JusticeMap: { + // Justice Map (http://www.justicemap.org/) + // Visualize race and income data for your community, county and country. + // Includes tools for data journalists, bloggers and community activists. + url: 'https://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', + options: { + attribution: 'Justice Map', + // one of 'county', 'tract', 'block' + size: 'county', + // Bounds for USA, including Alaska and Hawaii + bounds: [[14, -180], [72, -56]] + }, + variants: { + income: 'income', + americanIndian: 'indian', + asian: 'asian', + black: 'black', + hispanic: 'hispanic', + multi: 'multi', + nonWhite: 'nonwhite', + white: 'white', + plurality: 'plural' + } + }, + GeoportailFrance: { + url: 'https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', + options: { + attribution: 'Geoportail France', + bounds: [[-75, -180], [81, 180]], + minZoom: 2, + maxZoom: 18, + // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ + // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee + apikey: 'choisirgeoportail', + format: 'image/png', + style: 'normal', + variant: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2' + }, + variants: { + plan: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2', + parcels: { + options: { + variant: 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS', + style: 'PCI vecteur', + maxZoom: 20 + } + }, + orthos: { + options: { + maxZoom: 19, + format: 'image/jpeg', + variant: 'ORTHOIMAGERY.ORTHOPHOTOS' + } + } + } + }, + OneMapSG: { + url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', + options: { + variant: 'Default', + minZoom: 11, + maxZoom: 18, + bounds: [[1.56073, 104.11475], [1.16, 103.502]], + attribution: ' New OneMap | Map data © contributors, Singapore Land Authority' + }, + variants: { + Default: 'Default', + Night: 'Night', + Original: 'Original', + Grey: 'Grey', + LandLot: 'LandLot' + } + }, + USGS: { + url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}', + options: { + maxZoom: 20, + attribution: 'Tiles courtesy of the U.S. Geological Survey' + }, + variants: { + USTopo: {}, + USImagery: { + url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}' + }, + USImageryTopo: { + url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}' + } + } + }, + WaymarkedTrails: { + url: 'https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 18, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © waymarkedtrails.org (CC-BY-SA)' + }, + variants: { + hiking: 'hiking', + cycling: 'cycling', + mtb: 'mtb', + slopes: 'slopes', + riding: 'riding', + skating: 'skating' + } + }, + OpenAIP: { + url: 'https://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}', + options: { + attribution: 'openAIP Data (CC-BY-NC-SA)', + ext: 'png', + minZoom: 4, + maxZoom: 14, + tms: true, + detectRetina: true, + subdomains: '12' + } + }, + OpenSnowMap: { + url: 'https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png', + options: { + minZoom: 9, + maxZoom: 18, + attribution: 'Map data: {attribution.OpenStreetMap} & ODbL, © www.opensnowmap.org CC-BY-SA' + }, + variants: { + pistes: 'pistes', + } + }, + AzureMaps: { + url: + 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ + '&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}'+ + '&subscription-key={subscriptionKey}', + options: { + attribution: 'See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.', + apiVersion: '2.0', + variant: 'microsoft.imagery', + subscriptionKey: '', + language: 'en-US', + }, + variants: { + MicrosoftImagery: 'microsoft.imagery', + MicrosoftBaseDarkGrey: 'microsoft.base.darkgrey', + MicrosoftBaseRoad: 'microsoft.base.road', + MicrosoftBaseHybridRoad: 'microsoft.base.hybrid.road', + MicrosoftTerraMain: 'microsoft.terra.main', + MicrosoftWeatherInfraredMain: { + url: + 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ + '&tilesetId={variant}&x={x}&y={y}&zoom={z}'+ + '&timeStamp={timeStamp}&language={language}' + + '&subscription-key={subscriptionKey}', + options: { + timeStamp: '2021-05-08T09:03:00Z', + attribution: 'See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.', + variant: 'microsoft.weather.infrared.main', + }, + }, + MicrosoftWeatherRadarMain: { + url: + 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ + '&tilesetId={variant}&x={x}&y={y}&zoom={z}'+ + '&timeStamp={timeStamp}&language={language}' + + '&subscription-key={subscriptionKey}', + options: { + timeStamp: '2021-05-08T09:03:00Z', + attribution: 'See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.', + variant: 'microsoft.weather.radar.main', + }, + } + }, + } + }; + + L.tileLayer.provider = function (provider, options) { + return new L.TileLayer.Provider(provider, options); + }; + + return L; +})); diff --git a/src/main/webapp/js/vendor/leaflet-providers.min.js b/src/main/webapp/js/vendor/leaflet-providers.min.js new file mode 100644 index 00000000..78aafcd1 --- /dev/null +++ b/src/main/webapp/js/vendor/leaflet-providers.min.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["leaflet"],a):"object"==typeof modules&&module.exports?module.exports=a(require("leaflet")):a(L)}(function(n){"use strict";return n.TileLayer.Provider=n.TileLayer.extend({initialize:function(a,t){var e=n.TileLayer.Provider.providers,r=a.split("."),o=r[0],a=r[1];if(!e[o])throw"No such provider ("+o+")";r={url:e[o].url,options:e[o].options};if(a&&"variants"in e[o]){if(!(a in e[o].variants))throw"No such variant of "+o+" ("+a+")";o=e[o].variants[a],a="string"==typeof o?{variant:o}:o.options,r={url:o.url||r.url,options:n.Util.extend({},r.options,a)}}var i=function(a){return-1===a.indexOf("{attribution.")?a:a.replace(/\{attribution.(\w*)\}/g,function(a,t){return i(e[t].options.attribution)})};r.options.attribution=i(r.options.attribution);t=n.Util.extend({},r.options,t);n.TileLayer.prototype.initialize.call(this,r.url,t)}}),n.TileLayer.Provider.providers={OpenStreetMap:{url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",options:{maxZoom:19,attribution:'© OpenStreetMap contributors'},variants:{Mapnik:{},DE:{url:"https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png",options:{maxZoom:18}},CH:{url:"https://tile.osm.ch/switzerland/{z}/{x}/{y}.png",options:{maxZoom:18,bounds:[[45,5],[48,11]]}},France:{url:"https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",options:{maxZoom:20,attribution:"© OpenStreetMap France | {attribution.OpenStreetMap}"}},HOT:{url:"https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",options:{attribution:'{attribution.OpenStreetMap}, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France'}},BZH:{url:"https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png",options:{attribution:'{attribution.OpenStreetMap}, Tiles courtesy of Breton OpenStreetMap Team',bounds:[[46.2,-5.5],[50,.7]]}}}},OpenSeaMap:{url:"https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png",options:{attribution:'Map data: © OpenSeaMap contributors'}},OpenPtMap:{url:"http://openptmap.org/tiles/{z}/{x}/{y}.png",options:{maxZoom:17,attribution:'Map data: © OpenPtMap contributors'}},OpenTopoMap:{url:"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",options:{maxZoom:17,attribution:'Map data: {attribution.OpenStreetMap}, SRTM | Map style: © OpenTopoMap (CC-BY-SA)'}},OpenRailwayMap:{url:"https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png",options:{maxZoom:19,attribution:'Map data: {attribution.OpenStreetMap} | Map style: © OpenRailwayMap (CC-BY-SA)'}},OpenFireMap:{url:"http://openfiremap.org/hytiles/{z}/{x}/{y}.png",options:{maxZoom:19,attribution:'Map data: {attribution.OpenStreetMap} | Map style: © OpenFireMap (CC-BY-SA)'}},SafeCast:{url:"https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png",options:{maxZoom:16,attribution:'Map data: {attribution.OpenStreetMap} | Map style: © SafeCast (CC-BY-SA)'}},Stadia:{url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png",options:{maxZoom:20,attribution:'© Stadia Maps, © OpenMapTiles © OpenStreetMap contributors'},variants:{AlidadeSmooth:{url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png"},AlidadeSmoothDark:{url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png"},OSMBright:{url:"https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png"},Outdoors:{url:"https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png"}}},Thunderforest:{url:"https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",options:{attribution:'© Thunderforest, {attribution.OpenStreetMap}',variant:"cycle",apikey:"",maxZoom:22},variants:{OpenCycleMap:"cycle",Transport:{options:{variant:"transport"}},TransportDark:{options:{variant:"transport-dark"}},SpinalMap:{options:{variant:"spinal-map"}},Landscape:"landscape",Outdoors:"outdoors",Pioneer:"pioneer",MobileAtlas:"mobile-atlas",Neighbourhood:"neighbourhood"}},CyclOSM:{url:"https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png",options:{maxZoom:20,attribution:'CyclOSM | Map data: {attribution.OpenStreetMap}'}},Hydda:{url:"https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png",options:{maxZoom:20,variant:"full",attribution:'Tiles courtesy of OpenStreetMap Sweden — Map data {attribution.OpenStreetMap}'},variants:{Full:"full",Base:"base",RoadsAndLabels:"roads_and_labels"}},Jawg:{url:"https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",options:{attribution:'© JawgMaps {attribution.OpenStreetMap}',minZoom:0,maxZoom:22,subdomains:"abcd",variant:"jawg-terrain",accessToken:""},variants:{Streets:"jawg-streets",Terrain:"jawg-terrain",Sunny:"jawg-sunny",Dark:"jawg-dark",Light:"jawg-light",Matrix:"jawg-matrix"}},MapBox:{url:"https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}",options:{attribution:'© Mapbox {attribution.OpenStreetMap} Improve this map',tileSize:512,maxZoom:18,zoomOffset:-1,id:"mapbox/streets-v11",accessToken:""}},MapTiler:{url:"https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",options:{attribution:'© MapTiler © OpenStreetMap contributors',variant:"streets",ext:"png",key:"",tileSize:512,zoomOffset:-1,minZoom:0,maxZoom:21},variants:{Streets:"streets",Basic:"basic",Bright:"bright",Pastel:"pastel",Positron:"positron",Hybrid:{options:{variant:"hybrid",ext:"jpg"}},Toner:"toner",Topo:"topo",Voyager:"voyager"}},Stamen:{url:"https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",options:{attribution:'Map tiles by Stamen Design, CC BY 3.0 — Map data {attribution.OpenStreetMap}',subdomains:"abcd",minZoom:0,maxZoom:20,variant:"toner",ext:"png"},variants:{Toner:"toner",TonerBackground:"toner-background",TonerHybrid:"toner-hybrid",TonerLines:"toner-lines",TonerLabels:"toner-labels",TonerLite:"toner-lite",Watercolor:{url:"https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}",options:{variant:"watercolor",ext:"jpg",minZoom:1,maxZoom:16}},Terrain:{options:{variant:"terrain",minZoom:0,maxZoom:18}},TerrainBackground:{options:{variant:"terrain-background",minZoom:0,maxZoom:18}},TerrainLabels:{options:{variant:"terrain-labels",minZoom:0,maxZoom:18}},TopOSMRelief:{url:"https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}",options:{variant:"toposm-color-relief",ext:"jpg",bounds:[[22,-132],[51,-56]]}},TopOSMFeatures:{options:{variant:"toposm-features",bounds:[[22,-132],[51,-56]],opacity:.9}}}},TomTom:{url:"https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}",options:{variant:"basic",maxZoom:22,attribution:'© 1992 - '+(new Date).getFullYear()+" TomTom. ",subdomains:"abcd",style:"main",ext:"png",apikey:""},variants:{Basic:"basic",Hybrid:"hybrid",Labels:"labels"}},Esri:{url:"https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",options:{variant:"World_Street_Map",attribution:"Tiles © Esri"},variants:{WorldStreetMap:{options:{attribution:"{attribution.Esri} — Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012"}},DeLorme:{options:{variant:"Specialty/DeLorme_World_Base_Map",minZoom:1,maxZoom:11,attribution:"{attribution.Esri} — Copyright: ©2012 DeLorme"}},WorldTopoMap:{options:{variant:"World_Topo_Map",attribution:"{attribution.Esri} — Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community"}},WorldImagery:{options:{variant:"World_Imagery",attribution:"{attribution.Esri} — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community"}},WorldTerrain:{options:{variant:"World_Terrain_Base",maxZoom:13,attribution:"{attribution.Esri} — Source: USGS, Esri, TANA, DeLorme, and NPS"}},WorldShadedRelief:{options:{variant:"World_Shaded_Relief",maxZoom:13,attribution:"{attribution.Esri} — Source: Esri"}},WorldPhysical:{options:{variant:"World_Physical_Map",maxZoom:8,attribution:"{attribution.Esri} — Source: US National Park Service"}},OceanBasemap:{options:{variant:"Ocean_Basemap",maxZoom:13,attribution:"{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri"}},NatGeoWorldMap:{options:{variant:"NatGeo_World_Map",maxZoom:16,attribution:"{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC"}},WorldGrayCanvas:{options:{variant:"Canvas/World_Light_Gray_Base",maxZoom:16,attribution:"{attribution.Esri} — Esri, DeLorme, NAVTEQ"}}}},OpenWeatherMap:{url:"http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",options:{maxZoom:19,attribution:'Map data © OpenWeatherMap',apiKey:"",opacity:.5},variants:{Clouds:"clouds",CloudsClassic:"clouds_cls",Precipitation:"precipitation",PrecipitationClassic:"precipitation_cls",Rain:"rain",RainClassic:"rain_cls",Pressure:"pressure",PressureContour:"pressure_cntr",Wind:"wind",Temperature:"temp",Snow:"snow"}},HERE:{url:"https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",options:{attribution:"Map © 1987-"+(new Date).getFullYear()+' HERE',subdomains:"1234",mapID:"newest",app_id:"",app_code:"",base:"base",variant:"normal.day",maxZoom:20,type:"maptile",language:"eng",format:"png8",size:"256"},variants:{normalDay:"normal.day",normalDayCustom:"normal.day.custom",normalDayGrey:"normal.day.grey",normalDayMobile:"normal.day.mobile",normalDayGreyMobile:"normal.day.grey.mobile",normalDayTransit:"normal.day.transit",normalDayTransitMobile:"normal.day.transit.mobile",normalDayTraffic:{options:{variant:"normal.traffic.day",base:"traffic",type:"traffictile"}},normalNight:"normal.night",normalNightMobile:"normal.night.mobile",normalNightGrey:"normal.night.grey",normalNightGreyMobile:"normal.night.grey.mobile",normalNightTransit:"normal.night.transit",normalNightTransitMobile:"normal.night.transit.mobile",reducedDay:"reduced.day",reducedNight:"reduced.night",basicMap:{options:{type:"basetile"}},mapLabels:{options:{type:"labeltile",format:"png"}},trafficFlow:{options:{base:"traffic",type:"flowtile"}},carnavDayGrey:"carnav.day.grey",hybridDay:{options:{base:"aerial",variant:"hybrid.day"}},hybridDayMobile:{options:{base:"aerial",variant:"hybrid.day.mobile"}},hybridDayTransit:{options:{base:"aerial",variant:"hybrid.day.transit"}},hybridDayGrey:{options:{base:"aerial",variant:"hybrid.grey.day"}},hybridDayTraffic:{options:{variant:"hybrid.traffic.day",base:"traffic",type:"traffictile"}},pedestrianDay:"pedestrian.day",pedestrianNight:"pedestrian.night",satelliteDay:{options:{base:"aerial",variant:"satellite.day"}},terrainDay:{options:{base:"aerial",variant:"terrain.day"}},terrainDayMobile:{options:{base:"aerial",variant:"terrain.day.mobile"}}}},HEREv3:{url:"https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",options:{attribution:"Map © 1987-"+(new Date).getFullYear()+' HERE',subdomains:"1234",mapID:"newest",apiKey:"",base:"base",variant:"normal.day",maxZoom:20,type:"maptile",language:"eng",format:"png8",size:"256"},variants:{normalDay:"normal.day",normalDayCustom:"normal.day.custom",normalDayGrey:"normal.day.grey",normalDayMobile:"normal.day.mobile",normalDayGreyMobile:"normal.day.grey.mobile",normalDayTransit:"normal.day.transit",normalDayTransitMobile:"normal.day.transit.mobile",normalNight:"normal.night",normalNightMobile:"normal.night.mobile",normalNightGrey:"normal.night.grey",normalNightGreyMobile:"normal.night.grey.mobile",normalNightTransit:"normal.night.transit",normalNightTransitMobile:"normal.night.transit.mobile",reducedDay:"reduced.day",reducedNight:"reduced.night",basicMap:{options:{type:"basetile"}},mapLabels:{options:{type:"labeltile",format:"png"}},trafficFlow:{options:{base:"traffic",type:"flowtile"}},carnavDayGrey:"carnav.day.grey",hybridDay:{options:{base:"aerial",variant:"hybrid.day"}},hybridDayMobile:{options:{base:"aerial",variant:"hybrid.day.mobile"}},hybridDayTransit:{options:{base:"aerial",variant:"hybrid.day.transit"}},hybridDayGrey:{options:{base:"aerial",variant:"hybrid.grey.day"}},pedestrianDay:"pedestrian.day",pedestrianNight:"pedestrian.night",satelliteDay:{options:{base:"aerial",variant:"satellite.day"}},terrainDay:{options:{base:"aerial",variant:"terrain.day"}},terrainDayMobile:{options:{base:"aerial",variant:"terrain.day.mobile"}}}},FreeMapSK:{url:"https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg",options:{minZoom:8,maxZoom:16,subdomains:"abcd",bounds:[[47.204642,15.996093],[49.830896,22.576904]],attribution:'{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 Freemap.sk'}},MtbMap:{url:"http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png",options:{attribution:"{attribution.OpenStreetMap} & USGS"}},CartoDB:{url:"https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",options:{attribution:'{attribution.OpenStreetMap} © CARTO',subdomains:"abcd",maxZoom:19,variant:"light_all"},variants:{Positron:"light_all",PositronNoLabels:"light_nolabels",PositronOnlyLabels:"light_only_labels",DarkMatter:"dark_all",DarkMatterNoLabels:"dark_nolabels",DarkMatterOnlyLabels:"dark_only_labels",Voyager:"rastertiles/voyager",VoyagerNoLabels:"rastertiles/voyager_nolabels",VoyagerOnlyLabels:"rastertiles/voyager_only_labels",VoyagerLabelsUnder:"rastertiles/voyager_labels_under"}},HikeBike:{url:"https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png",options:{maxZoom:19,attribution:"{attribution.OpenStreetMap}",variant:"hikebike"},variants:{HikeBike:{},HillShading:{options:{maxZoom:15,variant:"hillshading"}}}},BasemapAT:{url:"https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",options:{maxZoom:19,attribution:'Datenquelle: basemap.at',subdomains:["","1","2","3","4"],type:"normal",format:"png",bounds:[[46.35877,8.782379],[49.037872,17.189532]],variant:"geolandbasemap"},variants:{basemap:{options:{maxZoom:20,variant:"geolandbasemap"}},grau:"bmapgrau",overlay:"bmapoverlay",terrain:{options:{variant:"bmapgelaende",type:"grau",format:"jpeg"}},surface:{options:{variant:"bmapoberflaeche",type:"grau",format:"jpeg"}},highdpi:{options:{variant:"bmaphidpi",format:"jpeg"}},orthofoto:{options:{maxZoom:20,variant:"bmaporthofoto30cm",format:"jpeg"}}}},nlmaps:{url:"https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png",options:{minZoom:6,maxZoom:19,bounds:[[50.5,3.25],[54,7.6]],attribution:'Kaartgegevens © Kadaster'},variants:{standaard:"brtachtergrondkaart",pastel:"brtachtergrondkaartpastel",grijs:"brtachtergrondkaartgrijs",luchtfoto:{url:"https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_ortho25/EPSG:3857/{z}/{x}/{y}.jpeg"}}},NASAGIBS:{url:"https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}",options:{attribution:'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.',bounds:[[-85.0511287776,-179.999999975],[85.0511287776,179.999999975]],minZoom:1,maxZoom:9,format:"jpg",time:"",tilematrixset:"GoogleMapsCompatible_Level"},variants:{ModisTerraTrueColorCR:"MODIS_Terra_CorrectedReflectance_TrueColor",ModisTerraBands367CR:"MODIS_Terra_CorrectedReflectance_Bands367",ViirsEarthAtNight2012:{options:{variant:"VIIRS_CityLights_2012",maxZoom:8}},ModisTerraLSTDay:{options:{variant:"MODIS_Terra_Land_Surface_Temp_Day",format:"png",maxZoom:7,opacity:.75}},ModisTerraSnowCover:{options:{variant:"MODIS_Terra_NDSI_Snow_Cover",format:"png",maxZoom:8,opacity:.75}},ModisTerraAOD:{options:{variant:"MODIS_Terra_Aerosol",format:"png",maxZoom:6,opacity:.75}},ModisTerraChlorophyll:{options:{variant:"MODIS_Terra_Chlorophyll_A",format:"png",maxZoom:7,opacity:.75}}}},NLS:{url:"https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg",options:{attribution:'National Library of Scotland Historic Maps',bounds:[[49.6,-12],[61.7,3]],minZoom:1,maxZoom:18,subdomains:"0123"}},JusticeMap:{url:"https://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",options:{attribution:'Justice Map',size:"county",bounds:[[14,-180],[72,-56]]},variants:{income:"income",americanIndian:"indian",asian:"asian",black:"black",hispanic:"hispanic",multi:"multi",nonWhite:"nonwhite",white:"white",plurality:"plural"}},GeoportailFrance:{url:"https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}",options:{attribution:'Geoportail France',bounds:[[-75,-180],[81,180]],minZoom:2,maxZoom:18,apikey:"choisirgeoportail",format:"image/png",style:"normal",variant:"GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2"},variants:{plan:"GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2",parcels:{options:{variant:"CADASTRALPARCELS.PARCELLAIRE_EXPRESS",style:"PCI vecteur",maxZoom:20}},orthos:{options:{maxZoom:19,format:"image/jpeg",variant:"ORTHOIMAGERY.ORTHOPHOTOS"}}}},OneMapSG:{url:"https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",options:{variant:"Default",minZoom:11,maxZoom:18,bounds:[[1.56073,104.11475],[1.16,103.502]],attribution:' New OneMap | Map data © contributors, Singapore Land Authority'},variants:{Default:"Default",Night:"Night",Original:"Original",Grey:"Grey",LandLot:"LandLot"}},USGS:{url:"https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}",options:{maxZoom:20,attribution:'Tiles courtesy of the U.S. Geological Survey'},variants:{USTopo:{},USImagery:{url:"https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}"},USImageryTopo:{url:"https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}"}}},WaymarkedTrails:{url:"https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",options:{maxZoom:18,attribution:'Map data: {attribution.OpenStreetMap} | Map style: © waymarkedtrails.org (CC-BY-SA)'},variants:{hiking:"hiking",cycling:"cycling",mtb:"mtb",slopes:"slopes",riding:"riding",skating:"skating"}},OpenAIP:{url:"https://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}",options:{attribution:'openAIP Data (CC-BY-NC-SA)',ext:"png",minZoom:4,maxZoom:14,tms:!0,detectRetina:!0,subdomains:"12"}},OpenSnowMap:{url:"https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png",options:{minZoom:9,maxZoom:18,attribution:'Map data: {attribution.OpenStreetMap} & ODbL, © www.opensnowmap.org CC-BY-SA'},variants:{pistes:"pistes"}},AzureMaps:{url:"https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",options:{attribution:"See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",apiVersion:"2.0",variant:"microsoft.imagery",subscriptionKey:"",language:"en-US"},variants:{MicrosoftImagery:"microsoft.imagery",MicrosoftBaseDarkGrey:"microsoft.base.darkgrey",MicrosoftBaseRoad:"microsoft.base.road",MicrosoftBaseHybridRoad:"microsoft.base.hybrid.road",MicrosoftTerraMain:"microsoft.terra.main",MicrosoftWeatherInfraredMain:{url:"https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}",options:{timeStamp:"2021-05-08T09:03:00Z",attribution:"See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.",variant:"microsoft.weather.infrared.main"}},MicrosoftWeatherRadarMain:{url:"https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}",options:{timeStamp:"2021-05-08T09:03:00Z",attribution:"See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.",variant:"microsoft.weather.radar.main"}}}}},n.tileLayer.provider=function(a,t){return new n.TileLayer.Provider(a,t)},n}); diff --git a/src/main/webapp/js/vendor/leaflet.js b/src/main/webapp/js/vendor/leaflet.js new file mode 100644 index 00000000..72c38145 --- /dev/null +++ b/src/main/webapp/js/vendor/leaflet.js @@ -0,0 +1,5 @@ +/* @preserve + * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function h(t){for(var i,e,n=1,o=arguments.length;n=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=O(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=O(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=N(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=N(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}();function kt(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var Bt={ie:tt,ielt9:it,edge:et,webkit:nt,android:ot,android23:st,androidStock:at,opera:ht,chrome:ut,gecko:lt,safari:ct,phantom:_t,opera12:dt,win:pt,ie3d:mt,webkit3d:ft,gecko3d:gt,any3d:vt,mobile:yt,mobileWebkit:xt,mobileWebkit3d:wt,msPointer:Pt,pointer:Lt,touch:bt,mobileOpera:Tt,mobileGecko:Mt,retina:zt,passiveEvents:Ct,canvas:St,svg:Zt,vml:Et},At=Pt?"MSPointerDown":"pointerdown",It=Pt?"MSPointerMove":"pointermove",Ot=Pt?"MSPointerUp":"pointerup",Rt=Pt?"MSPointerCancel":"pointercancel",Nt={},Dt=!1;function jt(t,i,e,n){function o(t){Ut(t,r)}var s,r,a,h,u,l,c,_;function d(t){t.pointerType===(t.MSPOINTER_TYPE_MOUSE||"mouse")&&0===t.buttons||Ut(t,h)}return"touchstart"===i?(u=t,l=e,c=n,_=p(function(t){t.MSPOINTER_TYPE_TOUCH&&t.pointerType===t.MSPOINTER_TYPE_TOUCH&&Ri(t),Ut(t,l)}),u["_leaflet_touchstart"+c]=_,u.addEventListener(At,_,!1),Dt||(document.addEventListener(At,Wt,!0),document.addEventListener(It,Ht,!0),document.addEventListener(Ot,Ft,!0),document.addEventListener(Rt,Ft,!0),Dt=!0)):"touchmove"===i?(h=e,(a=t)["_leaflet_touchmove"+n]=d,a.addEventListener(It,d,!1)):"touchend"===i&&(r=e,(s=t)["_leaflet_touchend"+n]=o,s.addEventListener(Ot,o,!1),s.addEventListener(Rt,o,!1)),this}function Wt(t){Nt[t.pointerId]=t}function Ht(t){Nt[t.pointerId]&&(Nt[t.pointerId]=t)}function Ft(t){delete Nt[t.pointerId]}function Ut(t,i){for(var e in t.touches=[],Nt)t.touches.push(Nt[e]);t.changedTouches=[t],i(t)}var Vt=Pt?"MSPointerDown":Lt?"pointerdown":"touchstart",qt=Pt?"MSPointerUp":Lt?"pointerup":"touchend",Gt="_leaflet_";var Kt,Yt,Xt,Jt,$t,Qt,ti=fi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ii=fi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ei="webkitTransition"===ii||"OTransition"===ii?ii+"End":"transitionend";function ni(t){return"string"==typeof t?document.getElementById(t):t}function oi(t,i){var e,n=t.style[i]||t.currentStyle&&t.currentStyle[i];return n&&"auto"!==n||!document.defaultView||(n=(e=document.defaultView.getComputedStyle(t,null))?e[i]:null),"auto"===n?null:n}function si(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ri(t){var i=t.parentNode;i&&i.removeChild(t)}function ai(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function hi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function ui(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function li(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=pi(t);return 0this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,N(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e,n,o=A((i=i||{}).paddingTopLeft||i.padding||[0,0]),s=A(i.paddingBottomRight||i.padding||[0,0]),r=this.getCenter(),a=this.project(r),h=this.project(t),u=this.getPixelBounds(),l=u.getSize().divideBy(2),c=O([u.min.add(o),u.max.subtract(s)]);return c.contains(h)||(this._enforcingBounds=!0,e=a.subtract(h),n=A(h.x+e.x,h.y+e.y),(h.xc.max.x)&&(n.x=a.x-e.x,0c.max.y)&&(n.y=a.y-e.y,0=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o="mouseout"===i||"mouseover"===i,s=t.target||t.srcElement,r=!1;s;){if((e=this._targets[m(s)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){r=!0;break}if(e&&e.listens(i,!0)){if(o&&!Vi(s,t))break;if(n.push(e),o)break}if(s===this._container)break;s=s.parentNode}return n.length||r||o||!Vi(s,t)||(n=[this]),n},_handleDOMEvent:function(t){var i;this._loaded&&!Ui(t)&&("mousedown"!==(i=t.type)&&"keypress"!==i&&"keyup"!==i&&"keydown"!==i||Pi(t.target||t.srcElement),this._fireDOMEvent(t,i))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,e){var n;if("click"===t.type&&((n=h({},t)).type="preclick",this._fireDOMEvent(n,n.type,e)),!t._stopped&&(e=(e||[]).concat(this._findEventTargets(t,i))).length){var o=e[0];"contextmenu"===i&&o.listens(i,!0)&&Ri(t);var s,r={originalEvent:t};"keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type&&(s=o.getLatLng&&(!o._radius||o._radius<=10),r.containerPoint=s?this.latLngToContainerPoint(o.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=s?o.getLatLng():this.layerPointToLatLng(r.layerPoint));for(var a=0;athis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(M(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,e,n){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,ci(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:n}),setTimeout(p(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&_i(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),M(function(){this._moveEnd(!0)},this))}});function Yi(t){return new Xi(t)}var Xi=S.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return ci(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(ri(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=n):i=this._createRadioElement("leaflet-base-layers_"+m(this),n),this._layerControlInputs.push(i),i.layerId=m(t.layer),zi(i,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var s=document.createElement("div");return e.appendChild(s),s.appendChild(i),s.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;0<=s;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;si.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),$i=Xi.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=si("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=si("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),Oi(s),zi(s,"click",Ni),zi(s,"click",o,this),zi(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";_i(this._zoomInButton,i),_i(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMinZoom()||ci(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMaxZoom()||ci(this._zoomInButton,i)}});Ki.mergeOptions({zoomControl:!0}),Ki.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new $i,this.addControl(this.zoomControl))});var Qi=Xi.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",e=si("div",i),n=this.options;return this._addScales(n,i+"-line",e),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=si("div",i,e)),t.imperial&&(this._iScale=si("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;5280Leaflet'},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var i in(t.attributionControl=this)._container=si("div","leaflet-control-attribution"),Oi(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Ki.mergeOptions({attributionControl:!0}),Ki.addInitHook(function(){this.options.attributionControl&&(new te).addTo(this)});Xi.Layers=Ji,Xi.Zoom=$i,Xi.Scale=Qi,Xi.Attribution=te,Yi.layers=function(t,i,e){return new Ji(t,i,e)},Yi.zoom=function(t){return new $i(t)},Yi.scale=function(t){return new Qi(t)},Yi.attribution=function(t){return new te(t)};var ie=S.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}});ie.addTo=function(t,i){return t.addHandler(i,this),this};var ee,ne={Events:Z},oe=bt?"touchstart mousedown":"mousedown",se={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},re={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},ae=E.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){c(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(zi(this._dragStartTarget,oe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(ae._dragging===this&&this.finishDrag(),Si(this._dragStartTarget,oe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var i,e;!t._simulated&&this._enabled&&(this._moved=!1,li(this._element,"leaflet-zoom-anim")||ae._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((ae._dragging=this)._preventOutline&&Pi(this._element),xi(),Xt(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=bi(this._element),this._startPoint=new k(i.clientX,i.clientY),this._parentScale=Ti(e),zi(document,re[t.type],this._onMove,this),zi(document,se[t.type],this._onUp,this))))},_onMove:function(t){var i,e;!t._simulated&&this._enabled&&(t.touches&&1i&&(e.push(t[n]),o=n);oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function de(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||Oe.prototype._containsPoint.call(this,t,!0)}});var Ne=Ce.extend({initialize:function(t,i){c(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=g(t)?t:t.features;if(o){for(i=0,e=o.length;iu.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c]))},_onCloseButtonClick:function(t){this._close(),Ni(t)},_getAnchor:function(){return A(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Ki.mergeOptions({closePopupOnClick:!0}),Ki.include({openPopup:function(t,i,e){return t instanceof tn||(t=new tn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Me.include({bindPopup:function(t,i){return t instanceof tn?(c(t,i),(this._popup=t)._source=this):(this._popup&&!i||(this._popup=new tn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){return this._popup&&this._map&&(i=this._popup._prepareOpen(this,t,i),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Ni(t),i instanceof Be?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var en=Qe.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){Qe.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){Qe.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=Qe.prototype.getEvents.call(this);return bt&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=si("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,e=this._map,n=this._container,o=e.latLngToContainerPoint(e.getCenter()),s=e.layerPointToContainerPoint(t),r=this.options.direction,a=n.offsetWidth,h=n.offsetHeight,u=A(this.options.offset),l=this._getAnchor(),c="top"===r?(i=a/2,h):"bottom"===r?(i=a/2,0):(i="center"===r?a/2:"right"===r?0:"left"===r?a:s.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oe.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return N(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new R(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new k(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(ri(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ci(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=a,t.onmousemove=a,it&&this.options.opacity<1&&mi(t,this.options.opacity),ot&&!st&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var e=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),p(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&M(p(this._tileReady,this,t,null,o)),vi(o,e),this._tiles[n]={el:o,coords:t,current:!0},i.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,i,e){i&&this.fire("tileerror",{error:i,tile:e,coords:t});var n=this._tileCoordsToKey(t);(e=this._tiles[n])&&(e.loaded=+new Date,this._map._fadeAnimated?(mi(e.el,0),z(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(ci(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),it||!this._map._fadeAnimated?M(this._pruneTiles,this):setTimeout(p(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new k(this._wrapX?o(t.x,this._wrapX):t.x,this._wrapY?o(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new I(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var sn=on.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=c(this,i)).detectRetina&&zt&&0')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_n={_initContainer:function(){this._container=si("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(hn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=cn("shape");ci(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=cn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[m(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ri(i),t.removeInteractiveTarget(i),delete this._layers[m(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i=i||(t._stroke=cn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=g(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e=e||(t._fill=cn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){hi(t._container)},_bringToBack:function(t){ui(t._container)}},dn=Et?cn:J,pn=hn.extend({getEvents:function(){var t=hn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=dn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=dn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ri(this._container),Si(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){var t,i,e;this._map._animatingZoom&&this._bounds||(hn.prototype._update.call(this),i=(t=this._bounds).getSize(),e=this._container,this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),vi(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update"))},_initPath:function(t){var i=t._path=dn("path");t.options.className&&ci(i,t.options.className),t.options.interactive&&ci(i,"leaflet-interactive"),this._updateStyle(t),this._layers[m(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ri(t._path),t.removeInteractiveTarget(t._path),delete this._layers[m(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,$(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){hi(t._path)},_bringToBack:function(t){ui(t._path)}});function mn(t){return Zt||Et?new pn(t):null}Et&&pn.include(_n),Ki.include({getRenderer:function(t){var i=(i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&ln(t)||mn(t)}});var fn=Re.extend({initialize:function(t,i){Re.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=N(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});pn.create=dn,pn.pointsToPath=$,Ne.geometryToLayer=De,Ne.coordsToLatLng=We,Ne.coordsToLatLngs=He,Ne.latLngToCoords=Fe,Ne.latLngsToCoords=Ue,Ne.getFeature=Ve,Ne.asFeature=qe,Ki.mergeOptions({boxZoom:!0});var gn=ie.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){zi(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Si(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ri(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),Xt(),xi(),this._startPoint=this._map.mouseEventToContainerPoint(t),zi(document,{contextmenu:Ni,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=si("div","leaflet-zoom-box",this._container),ci(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new I(this._point,this._startPoint),e=i.getSize();vi(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ri(this._box),_i(this._container,"leaflet-crosshair")),Jt(),wi(),Si(document,{contextmenu:Ni,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){var i;1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(p(this._resetState,this),0),i=new R(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})))},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Ki.addInitHook("addHandler","boxZoom",gn),Ki.mergeOptions({doubleClickZoom:!0});var vn=ie.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Ki.addInitHook("addHandler","doubleClickZoom",vn),Ki.mergeOptions({dragging:!0,inertia:!st,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var yn=ie.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new ae(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),ci(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){_i(this._map._container,"leaflet-grab"),_i(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,i=this._map;i._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=N(this._map.options.maxBounds),this._offsetLimit=O(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,i.fire("movestart").fire("dragstart"),i.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var i,e;this._map.options.inertia&&(i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(e),this._times.push(i),this._prunePositions(i)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)i.getMaxZoom()&&1c*b?c+b:c}function va(a,b,c){return a+c*(b-a)};function wa(a){return function(b){if(b)return[ma(b[0],a[0],a[2]),ma(b[1],a[1],a[3])]}}function xa(a){return a};function ya(a,b,c){this.center=a;this.resolution=b;this.rotation=c};var za="function"===typeof Object.assign?Object.assign:function(a,b){if(!a||!a)throw new TypeError("Cannot convert undefined or null to object");for(var c=Object(a),d=1,e=arguments.length;db?1:ac)for(c=1;c>>0,d,e=0;ee)return 1;if(e>d)return-1}return 0};function ub(a,b){a[0]+=b[0];a[1]+=b[1];return a}function vb(a,b){var c=a[0],d=a[1],e=b[0],f=b[1],g=e[0],e=e[1],h=f[0],f=f[1],l=h-g,m=f-e,c=0===l&&0===m?0:(l*(c-g)+m*(d-e))/(l*l+m*m||0);0>=c||(1<=c?(g=h,e=f):(g+=c*l,e+=c*m));return[g,e]}function wb(a,b,c){a=ta(a+180,360)-180;var d=Math.abs(3600*a);return Math.floor(d/3600)+"\u00b0 "+sb(Math.floor(d/60%60))+"\u2032 "+sb(d%60,c||0)+"\u2033 "+b.charAt(0>a?1:0)} -function xb(a,b,c){return a?b.replace("{x}",a[0].toFixed(c)).replace("{y}",a[1].toFixed(c)):""}function yb(a,b){for(var c=!0,d=a.length-1;0<=d;--d)if(a[d]!=b[d]){c=!1;break}return c}function zb(a,b){var c=Math.cos(b),d=Math.sin(b),e=a[1]*c+a[0]*d;a[0]=a[0]*c-a[1]*d;a[1]=e;return a}function Ab(a,b){var c=a[0]-b[0],d=a[1]-b[1];return c*c+d*d}function Bb(a,b){return Ab(a,vb(a,b))}function Cb(a,b){return xb(a,"{x}, {y}",b)};function Db(a){for(var b=Eb(),c=0,d=a.length;cd&&(h|=4);ge&&(h|=2);0===h&&(h=1);return h}function Eb(){return[Infinity,Infinity,-Infinity,-Infinity]}function Qb(a,b,c,d,e){return e?(e[0]=a,e[1]=b,e[2]=c,e[3]=d,e):[a,b,c,d]}function Rb(a,b){var c=a[0],d=a[1];return Qb(c,d,c,d,b)}function Sb(a,b,c,d,e){e=Qb(Infinity,Infinity,-Infinity,-Infinity,e);return Tb(e,a,b,c,d)} -function Ub(a,b){return a[0]==b[0]&&a[2]==b[2]&&a[1]==b[1]&&a[3]==b[3]}function Vb(a,b){b[0]a[2]&&(a[2]=b[2]);b[1]a[3]&&(a[3]=b[3]);return a}function Fb(a,b){b[0]a[2]&&(a[2]=b[0]);b[1]a[3]&&(a[3]=b[1])}function Tb(a,b,c,d,e){for(;cb[0]?a[0]:b[0],c[1]=a[1]>b[1]?a[1]:b[1],c[2]=a[2]=b[0]&&a[1]<=b[3]&&a[3]>=b[1]}function dc(a){return a[2]a||0!==this.l&&a<=this.l)return this;var b=a.toString();if(this.i.hasOwnProperty(b))return this.i[b];var c=this.Lc(a);if(c.la().lengthe&&(e=f);f=h;g=l}return e}function $c(a,b,c,d,e){var f,g;f=0;for(g=c.length;fh){for(;bt&&(m=n,t=z)}t>e&&(l[(m-b)/d]=1,q+dA&&uaA)&&(0>Ma&&MMa)||(u[g++]= -z,u[g++]=G,y=z,E=G);z=J;G=X}}u[g++]=z;u[g++]=G}}h.push(g);b=n}return g};function jd(a,b){Sc.call(this);this.c=this.j=-1;this.sa(a,b)}w(jd,Sc);k=jd.prototype;k.clone=function(){var a=new jd(null);kd(a,this.ka,this.B.slice());return a};k.vb=function(a,b,c,d){if(df!=n>f&&e<(m-h)*(f-l)/(n-l)+h&&(g=!g);h=m;l=n}return g}function nd(a,b,c,d,e,f){if(0===c.length||!md(a,b,c[0],d,e,f))return!1;var g;b=1;for(g=c.length;bp&&(m=(m+n)/2,nd(a,b,c,d,m,q)&&(v=m,p=u));m=n}isNaN(v)&&(v=e[f]);return g?(g.push(v,q),g):[v,q]};function pd(a,b,c,d,e,f){for(var g=[a[b],a[b+1]],h=[],l;b+d=e[0]&&f[2]<=e[2]||f[1]>=e[1]&&f[3]<=e[3]?!0:pd(a,b,c,d,function(a,b){var c=!1,d=Ob(e,a),f=Ob(e,b);if(1===d||1===f)c=!0;else{var p=e[0],q=e[1],t=e[2],v=e[3],u=b[0],y=b[1],E=(y-a[1])/(u-a[0]);f&2&&!(d&2)&&(c=u-(y-v)/E,c=c>=p&&c<=t);c||!(f&4)||d&4||(c=y-(u-t)*E,c=c>=q&&c<=v);c||!(f&8)||d&8||(c=u-(y-q)/E,c=c>=p&&c<=t);c||!(f&16)||d&16||(c=y-(u-p)*E,c=c>=q&&c<=v)}return c}):!1} -function rd(a,b,c,d,e){var f=c[0];if(!(qd(a,b,f,d,e)||md(a,b,f,d,e[0],e[1])||md(a,b,f,d,e[0],e[3])||md(a,b,f,d,e[2],e[1])||md(a,b,f,d,e[2],e[3])))return!1;if(1===c.length)return!0;b=1;for(f=c.length;ba||this.c.length<=a)return null;var b=new jd(null);kd(b,this.ka,this.B.slice(0===a?0:this.c[a-1],this.c[a]));return b};k.Vd=function(){var a=this.ka,b=this.B,c=this.c,d=[],e=0,f,g;f=0;for(g=c.length;f=this.i&&b<=this.a){a=this.l||0;var c,d;if(this.f){d=cb(this.f,b,1);a+=d;if(d==this.f.length-1)return a;c=this.f[d];d=c/this.f[d+1]}else c=this.a,d=this.s;a+=Math.log(c/b)/Math.log(d)}return a}; -k.af=function(a,b,c){a instanceof Sc||(la(Array.isArray(a),24),la(!dc(a),25),a=yd(a));var d=c||{};c=void 0!==d.padding?d.padding:[0,0,0,0];var e=void 0!==d.constrainResolution?d.constrainResolution:!0,f=void 0!==d.nearest?d.nearest:!1,g;void 0!==d.minResolution?g=d.minResolution:void 0!==d.maxZoom?g=this.constrainResolution(this.a,d.maxZoom-this.l,0):g=0;var h=a.la(),l=this.Ma(),d=Math.cos(-l),l=Math.sin(-l),m=Infinity,n=Infinity,p=-Infinity,q=-Infinity;a=a.ua();for(var t=0,v=h.length;ta?Nd(2*a):1-Nd(2*(a-.5))};function Sd(a){var b=a.source,c=a.start?a.start:Date.now(),d=b[0],e=b[1],f=void 0!==a.duration?a.duration:1E3,g=a.easing?a.easing:Nd;return function(a,b){if(b.time=b.ca&&a.fa<=b.ia&&a.ia>=b.fa};function Zd(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]+2*b;c[1]=a[1]+2*b;return c}function $d(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]*b+.5|0;c[1]=a[1]*b+.5|0;return c}function ae(a,b){if(Array.isArray(a))return a;void 0===b?b=[a,a]:b[0]=b[1]=a;return b};function be(a,b,c,d){return void 0!==d?(d[0]=a,d[1]=b,d[2]=c,d):[a,b,c]}function ce(a){var b=a[0],c=Array(b),d=1<>=1;return c.join("")};function de(a){this.minZoom=void 0!==a.minZoom?a.minZoom:0;this.b=a.resolutions;la(lb(this.b,function(a,b){return b-a}),17);this.maxZoom=this.b.length-1;this.g=void 0!==a.origin?a.origin:null;this.f=null;void 0!==a.origins&&(this.f=a.origins,la(this.f.length==this.b.length,20));var b=a.extent;void 0===b||this.g||this.f||(this.g=bc(b));la(!this.g&&this.f||this.g&&!this.f,18);this.c=null;void 0!==a.tileSizes&&(this.c=a.tileSizes,la(this.c.length==this.b.length,19));this.i=void 0!==a.tileSize?a.tileSize: -this.c?null:256;la(!this.i&&this.c||this.i&&!this.c,22);this.s=void 0!==b?b:null;this.a=null;this.l=[0,0];void 0!==a.sizes?this.a=a.sizes.map(function(a){return new Vd(Math.min(0,a[0]),Math.max(a[0]-1,-1),Math.min(0,a[1]),Math.max(a[1]-1,-1))},this):b&&ee(this,b)}var fe=[0,0,0];k=de.prototype;k.wg=function(a,b,c){a=ge(this,a,b);for(var d=a.ca,e=a.ea;d<=e;++d)for(var f=a.fa,g=a.ia;f<=g;++f)c([b,d,f])}; -function he(a,b,c,d,e){e=a.Ea(b,e);for(b=b[0]-1;b>=a.minZoom;){if(c.call(null,b,ge(a,e,b,d)))return!0;--b}return!1}k.C=function(){return this.s};k.Gg=function(){return this.maxZoom};k.Hg=function(){return this.minZoom};k.Ka=function(a){return this.g?this.g:this.f[a]};k.$=function(a){return this.b[a]};k.Hh=function(){return this.b};function ie(a,b,c,d){return b[0]b?1:0};function He(a,b,c){return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};var Ie;a:{var Je=aa.navigator;if(Je){var Ke=Je.userAgent;if(Ke){Ie=Ke;break a}}Ie=""}function Le(a){return-1!=Ie.indexOf(a)};var Me=Le("Opera"),Ne=Le("Trident")||Le("MSIE"),Oe=Le("Edge"),Pe=Le("Gecko")&&!(-1!=Ie.toLowerCase().indexOf("webkit")&&!Le("Edge"))&&!(Le("Trident")||Le("MSIE"))&&!Le("Edge"),Qe=-1!=Ie.toLowerCase().indexOf("webkit")&&!Le("Edge"),Re; -a:{var Se="",Te=function(){var a=Ie;if(Pe)return/rv\:([^\);]+)(\)|;)/.exec(a);if(Oe)return/Edge\/([\d\.]+)/.exec(a);if(Ne)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(Qe)return/WebKit\/(\S+)/.exec(a);if(Me)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Te&&(Se=Te?Te[1]:"");if(Ne){var Ue,Ve=aa.document;Ue=Ve?Ve.documentMode:void 0;if(null!=Ue&&Ue>parseFloat(Se)){Re=String(Ue);break a}}Re=Se}var We={};function Xe(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Ye(a,b){a[0]=b[0];a[1]=b[1];a[4]=b[2];a[5]=b[3];a[12]=b[4];a[13]=b[5];return a};var Ze=Xe();function $e(a,b){var c=document.createElement("CANVAS");a&&(c.width=a);b&&(c.height=b);return c.getContext("2d")} -var af=function(){var a;return function(){if(void 0===a){var b=document.createElement("P"),c,d={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(b);for(var e in d)e in b.style&&(b.style[e]="translate(1px,1px)",c=ja.getComputedStyle(b).getPropertyValue(d[e]));document.body.removeChild(b);a=c&&"none"!==c}return a}}(),bf=function(){var a;return function(){if(void 0===a){var b=document.createElement("P"), -c,d={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(b);for(var e in d)e in b.style&&(b.style[e]="translate3d(1px,1px,1px)",c=ja.getComputedStyle(b).getPropertyValue(d[e]));document.body.removeChild(b);a=c&&"none"!==c}return a}}(); -function cf(a,b){var c=a.style;c.WebkitTransform=b;c.MozTransform=b;c.b=b;c.msTransform=b;c.transform=b;if((c=Ne)&&!(c=We["9.0"])){for(var c=0,d=Fe(String(Re)).split("."),e=Fe("9.0").split("."),f=Math.max(d.length,e.length),g=0;0==c&&gc;++c)e[c]=d[c].toFixed(6);cf(a,"matrix3d("+e.join(",")+")")}else if(af()){d=Array(6);for(c=0;6>c;++c)d[c]=b[c].toFixed(6);cf(a,"matrix("+d.join(",")+")")}else a.style.left=Math.round(b[4])+"px",a.style.top=Math.round(b[5])+"px"}function ef(a,b){var c=b.parentNode;c&&c.replaceChild(a,b)} -function ff(a){a&&a.parentNode&&a.parentNode.removeChild(a)}function gf(a){for(;a.lastChild;)a.removeChild(a.lastChild)};function hf(a,b,c){Pa.call(this,a);this.map=b;this.frameState=void 0!==c?c:null}w(hf,Pa);function jf(a){Xa.call(this);this.element=a.element?a.element:null;this.a=this.R=null;this.s=[];this.render=a.render?a.render:ha;a.target&&this.c(a.target)}w(jf,Xa);jf.prototype.ma=function(){ff(this.element);Xa.prototype.ma.call(this)};jf.prototype.i=function(){return this.a}; -jf.prototype.setMap=function(a){this.a&&ff(this.element);for(var b=0,c=this.s.length;bMa.ea)if(Yd(A,new Vd(ta(J.ca,ua),ta(J.ea,ua),J.fa,J.ia))||J.ea-J.ca+1>ua&&Yd(A,Ma)){p=!0;break a}}}p=!1}else p=!0}}else p=!1;p?(l in v&&delete v[l],t[l]=h):v[l]=h}b=[t,v];c=b[0];b=b[1];for(var M in this.o)M in c?(this.l[M]||(this.o[M].style.display="",this.l[M]=!0),delete c[M]):M in b?(this.l[M]&&(this.o[M].style.display="none",delete this.l[M]),delete b[M]):(ff(this.o[M]),delete this.o[M],delete this.l[M]);for(M in c)d=document.createElement("LI"),d.innerHTML=c[M].a,this.O.appendChild(d), -this.o[M]=d,this.l[M]=!0;for(M in b)d=document.createElement("LI"),d.innerHTML=b[M].a,d.style.display="none",this.O.appendChild(d),this.o[M]=d;M=!Ca(this.l)||!Ca(a.logos);this.D!=M&&(this.element.style.display=M?"":"none",this.D=M);M&&Ca(this.l)?this.element.classList.add("ol-logo-only"):this.element.classList.remove("ol-logo-only");var oa;a=a.logos;M=this.T;for(oa in M)oa in a||(ff(M[oa]),delete M[oa]);for(var Wb in a)b=a[Wb],b instanceof HTMLElement&&(this.v.appendChild(b),M[Wb]=b),Wb in M||(oa= -new Image,oa.src=Wb,""===b?c=oa:(c=document.createElement("a"),c.href=b,c.appendChild(oa)),this.v.appendChild(c),M[Wb]=c);this.v.style.display=Ca(a)?"none":""}else this.D&&(this.element.style.display="none",this.D=!1)}k=kf.prototype;k.Wl=function(a){a.preventDefault();mf(this)};function mf(a){a.element.classList.toggle("ol-collapsed");a.f?ef(a.A,a.H):ef(a.H,a.A);a.f=!a.f}k.Vl=function(){return this.j}; -k.Yl=function(a){this.j!==a&&(this.j=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.f&&mf(this))};k.Xl=function(a){this.j&&this.f!==a&&mf(this)};k.Ul=function(){return this.f};function nf(a){a=a?a:{};this.f=void 0!==a.className?a.className:"ol-full-screen";var b=void 0!==a.label?a.label:"\u2922";this.j="string"===typeof b?document.createTextNode(b):b;b=void 0!==a.labelActive?a.labelActive:"\u00d7";this.o="string"===typeof b?document.createTextNode(b):b;var c=a.tipLabel?a.tipLabel:"Toggle full-screen",b=document.createElement("button");b.className=this.f+"-"+of();b.setAttribute("type","button");b.title=c;b.appendChild(this.j);B(b,"click",this.H,this);c=document.createElement("div"); -c.className=this.f+" ol-unselectable ol-control "+(pf()?"":"ol-unsupported");c.appendChild(b);jf.call(this,{element:c,target:a.target});this.A=void 0!==a.keys?a.keys:!1;this.l=a.source}w(nf,jf); -nf.prototype.H=function(a){a.preventDefault();pf()&&(a=this.a)&&(of()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(a=this.l?"string"===typeof this.l?document.getElementById(this.l):this.l:a.xc(),this.A?a.mozRequestFullScreenWithKeys?a.mozRequestFullScreenWithKeys():a.webkitRequestFullscreen?a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT): -qf(a):qf(a)))};nf.prototype.v=function(){var a=this.element.firstElementChild,b=this.a;of()?(a.className=this.f+"-true",ef(this.o,this.j)):(a.className=this.f+"-false",ef(this.j,this.o));b&&b.Wc()};nf.prototype.setMap=function(a){jf.prototype.setMap.call(this,a);a&&this.s.push(B(ja.document,rf(),this.v,this))}; -function pf(){var a=document.body;return!!(a.webkitRequestFullscreen||a.mozRequestFullScreen&&document.mozFullScreenEnabled||a.msRequestFullscreen&&document.msFullscreenEnabled||a.requestFullscreen&&document.fullscreenEnabled)}function of(){return!!(document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||document.fullscreenElement)} -function qf(a){a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()}var rf=function(){var a;return function(){if(!a){var b=document.body;b.webkitRequestFullscreen?a="webkitfullscreenchange":b.mozRequestFullScreen?a="mozfullscreenchange":b.msRequestFullscreen?a="MSFullscreenChange":b.requestFullscreen&&(a="fullscreenchange")}return a}}();function sf(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-rotate",c=void 0!==a.label?a.label:"\u21e7";this.f=null;"string"===typeof c?(this.f=document.createElement("span"),this.f.className="ol-compass",this.f.textContent=c):(this.f=c,this.f.classList.add("ol-compass"));var d=a.tipLabel?a.tipLabel:"Reset rotation",c=document.createElement("button");c.className=b+"-reset";c.setAttribute("type","button");c.title=d;c.appendChild(this.f);B(c,"click",sf.prototype.A,this);d=document.createElement("div"); -d.className=b+" ol-unselectable ol-control";d.appendChild(c);b=a.render?a.render:uf;this.j=a.resetNorth?a.resetNorth:void 0;jf.call(this,{element:d,render:b,target:a.target});this.o=void 0!==a.duration?a.duration:250;this.l=void 0!==a.autoHide?a.autoHide:!0;this.v=void 0;this.l&&this.element.classList.add("ol-hidden")}w(sf,jf); -sf.prototype.A=function(a){a.preventDefault();if(void 0!==this.j)this.j();else{a=this.a;var b=a.aa();if(b){var c=b.Ma();void 0!==c&&(0Math.PI&&(c-=2*Math.PI),a.$a(Td({rotation:c,duration:this.o,easing:Md}))),b.ge(0))}}}; -function uf(a){if(a=a.frameState){a=a.viewState.rotation;if(a!=this.v){var b="rotate("+a+"rad)";if(this.l){var c=this.element.classList.contains("ol-hidden");c||0!==a?c&&0!==a&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.f.style.msTransform=b;this.f.style.webkitTransform=b;this.f.style.transform=b}this.v=a}};function vf(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-zoom",c=void 0!==a.delta?a.delta:1,d=void 0!==a.zoomInLabel?a.zoomInLabel:"+",e=void 0!==a.zoomOutLabel?a.zoomOutLabel:"\u2212",f=void 0!==a.zoomInTipLabel?a.zoomInTipLabel:"Zoom in",g=void 0!==a.zoomOutTipLabel?a.zoomOutTipLabel:"Zoom out",h=document.createElement("button");h.className=b+"-in";h.setAttribute("type","button");h.title=f;h.appendChild("string"===typeof d?document.createTextNode(d):d);B(h,"click",vf.prototype.l.bind(this, -c));d=document.createElement("button");d.className=b+"-out";d.setAttribute("type","button");d.title=g;d.appendChild("string"===typeof e?document.createTextNode(e):e);B(d,"click",vf.prototype.l.bind(this,-c));c=document.createElement("div");c.className=b+" ol-unselectable ol-control";c.appendChild(h);c.appendChild(d);jf.call(this,{element:c,target:a.target});this.f=void 0!==a.duration?a.duration:250}w(vf,jf); -vf.prototype.l=function(a,b){b.preventDefault();var c=this.a,d=c.aa();if(d){var e=d.$();e&&(0=Math.abs(d-h[0])&&25>=l)return!0}return!1}function Zf(a){var b=$f(a,a),c=b.preventDefault;b.preventDefault=function(){a.preventDefault();c()};b.pointerId=1;b.isPrimary=!0;b.pointerType="mouse";return b}k=Xf.prototype; -k.ml=function(a){if(!Yf(this,a)){if((1).toString()in this.a){var b=Zf(a);ag(this.b,bg,b,a);delete this.a[(1).toString()]}b=Zf(a);this.a[(1).toString()]=a;ag(this.b,cg,b,a)}};k.nl=function(a){if(!Yf(this,a)){var b=Zf(a);ag(this.b,dg,b,a)}};k.ql=function(a){if(!Yf(this,a)){var b=this.a[(1).toString()];b&&b.button===a.button&&(b=Zf(a),ag(this.b,eg,b,a),delete this.a[(1).toString()])}};k.pl=function(a){if(!Yf(this,a)){var b=Zf(a);fg(this.b,b,a)}}; -k.ol=function(a){if(!Yf(this,a)){var b=Zf(a);gg(this.b,b,a)}};function hg(a){Wf.call(this,a,{MSPointerDown:this.vl,MSPointerMove:this.wl,MSPointerUp:this.zl,MSPointerOut:this.xl,MSPointerOver:this.yl,MSPointerCancel:this.ul,MSGotPointerCapture:this.sl,MSLostPointerCapture:this.tl});this.a=a.g;this.g=["","unavailable","touch","pen","mouse"]}w(hg,Wf);function ig(a,b){var c=b;"number"===typeof b.pointerType&&(c=$f(b,b),c.pointerType=a.g[b.pointerType]);return c}k=hg.prototype;k.vl=function(a){this.a[a.pointerId.toString()]=a;var b=ig(this,a);ag(this.b,cg,b,a)}; -k.wl=function(a){var b=ig(this,a);ag(this.b,dg,b,a)};k.zl=function(a){var b=ig(this,a);ag(this.b,eg,b,a);delete this.a[a.pointerId.toString()]};k.xl=function(a){var b=ig(this,a);gg(this.b,b,a)};k.yl=function(a){var b=ig(this,a);fg(this.b,b,a)};k.ul=function(a){var b=ig(this,a);ag(this.b,bg,b,a);delete this.a[a.pointerId.toString()]};k.tl=function(a){this.b.b(new jg("lostpointercapture",a,a))};k.sl=function(a){this.b.b(new jg("gotpointercapture",a,a))};function kg(a){Wf.call(this,a,{pointerdown:this.io,pointermove:this.jo,pointerup:this.mo,pointerout:this.ko,pointerover:this.lo,pointercancel:this.ho,gotpointercapture:this.Dk,lostpointercapture:this.ll})}w(kg,Wf);k=kg.prototype;k.io=function(a){lg(this.b,a)};k.jo=function(a){lg(this.b,a)};k.mo=function(a){lg(this.b,a)};k.ko=function(a){lg(this.b,a)};k.lo=function(a){lg(this.b,a)};k.ho=function(a){lg(this.b,a)};k.ll=function(a){lg(this.b,a)};k.Dk=function(a){lg(this.b,a)};function jg(a,b,c){Pa.call(this,a);this.b=b;a=c?c:{};this.buttons=mg(a);this.pressure=ng(a,this.buttons);this.bubbles="bubbles"in a?a.bubbles:!1;this.cancelable="cancelable"in a?a.cancelable:!1;this.view="view"in a?a.view:null;this.detail="detail"in a?a.detail:null;this.screenX="screenX"in a?a.screenX:0;this.screenY="screenY"in a?a.screenY:0;this.clientX="clientX"in a?a.clientX:0;this.clientY="clientY"in a?a.clientY:0;this.button="button"in a?a.button:0;this.relatedTarget="relatedTarget"in a?a.relatedTarget: -null;this.pointerId="pointerId"in a?a.pointerId:0;this.width="width"in a?a.width:0;this.height="height"in a?a.height:0;this.pointerType="pointerType"in a?a.pointerType:"";this.isPrimary="isPrimary"in a?a.isPrimary:!1;b.preventDefault&&(this.preventDefault=function(){b.preventDefault()})}w(jg,Pa);function mg(a){if(a.buttons||og)a=a.buttons;else switch(a.which){case 1:a=1;break;case 2:a=4;break;case 3:a=2;break;default:a=0}return a} -function ng(a,b){var c=0;a.pressure?c=a.pressure:c=b?.5:0;return c}var og=!1;try{og=1===(new MouseEvent("click",{buttons:1})).buttons}catch(a){};function pg(a,b){Wf.call(this,a,{touchstart:this.pp,touchmove:this.op,touchend:this.np,touchcancel:this.mp});this.a=a.g;this.l=b;this.g=void 0;this.i=0;this.f=void 0}w(pg,Wf);k=pg.prototype;k.$h=function(){this.i=0;this.f=void 0}; -function qg(a,b,c){b=$f(b,c);b.pointerId=c.identifier+2;b.bubbles=!0;b.cancelable=!0;b.detail=a.i;b.button=0;b.buttons=1;b.width=c.webkitRadiusX||c.radiusX||0;b.height=c.webkitRadiusY||c.radiusY||0;b.pressure=c.webkitForce||c.force||.5;b.isPrimary=a.g===c.identifier;b.pointerType="touch";b.clientX=c.clientX;b.clientY=c.clientY;b.screenX=c.screenX;b.screenY=c.screenY;return b} -function rg(a,b,c){function d(){b.preventDefault()}var e=Array.prototype.slice.call(b.changedTouches),f=e.length,g,h;for(g=0;g=b.length){var e=[],f,g,h;for(f=0;f=a.minResolution&&bn[2])l=[q+p*Math.ceil((n[0]-q)/p),a[1]]}n=b.layerStatesArray;for(p=n.length-1;0<=p;--p){var t=n[p],q=t.layer;if(Xg(t,m)&&e.call(f,q)&&(t=oh(this,q),q.ga()&&(h=t.ta(q.ga().D?l:a,b,g,d)),h))return h}}; -k.oh=function(a,b,c,d,e,f){var g,h=b.viewState.resolution,l=b.layerStatesArray,m;for(m=l.length-1;0<=m;--m){g=l[m];var n=g.layer;if(Xg(g,h)&&e.call(f,n)&&(g=oh(this,n).Ac(a,b,c,d)))return g}};k.ph=function(a,b,c,d){return void 0!==this.ta(a,b,nc,this,c,d)};function oh(a,b){var c=x(b).toString();if(c in a.g)return a.g[c];var d=a.Ve(b);a.g[c]=d;a.s[c]=B(d,"change",a.Mk,a);return d}k.Mk=function(){this.i.render()};k.Be=ha; -k.Qo=function(a,b){for(var c in this.g)if(!(b&&c in b.layerStates)){var d=c,e=this.g[d];delete this.g[d];Ea(this.s[d]);delete this.s[d];Oa(e)}};function ph(a,b){for(var c in a.g)if(!(c in b.layerStates)){b.postRenderFunctions.push(a.Qo.bind(a));break}}function jb(a,b){return a.zIndex-b.zIndex};function qh(a,b){Sa.call(this);this.oa=a;this.state=b;this.a=null;this.key=""}w(qh,Sa);function rh(a){a.b("change")}qh.prototype.Ya=function(){return this.key+"/"+this.oa};qh.prototype.i=function(){return this.oa};qh.prototype.V=function(){return this.state};function sh(a,b){this.o=a;this.f=b;this.b=[];this.g=[];this.a={}}sh.prototype.clear=function(){this.b.length=0;this.g.length=0;Aa(this.a)};function th(a){var b=a.b,c=a.g,d=b[0];1==b.length?(b.length=0,c.length=0):(b[0]=b.pop(),c[0]=c.pop(),uh(a,0));b=a.f(d);delete a.a[b];return d}sh.prototype.c=function(a){la(!(this.f(a)in this.a),31);var b=this.o(a);return Infinity!=b?(this.b.push(a),this.g.push(b),this.a[this.f(a)]=!0,vh(this,0,this.b.length-1),!0):!1}; -function uh(a,b){for(var c=a.b,d=a.g,e=c.length,f=c[b],g=d[b],h=b;b>1;){var l=2*b+1,m=2*b+2,l=mb;){var g=c-1>>1;if(a[g]>f)d[c]=d[g],a[c]=a[g],c=g;else break}d[c]=e;a[c]=f}function wh(a){var b=a.o,c=a.b,d=a.g,e=0,f=c.length,g,h,l;for(h=0;h>1)-1;0<=b;b--)uh(a,b)};function xh(a,b){sh.call(this,function(b){return a.apply(null,b)},function(a){return a[0].Ya()});this.s=b;this.l=0;this.i={}}w(xh,sh);xh.prototype.c=function(a){var b=sh.prototype.c.call(this,a);b&&B(a[0],"change",this.j,this);return b};xh.prototype.j=function(a){a=a.target;var b=a.V();if(2===b||3===b||4===b||5===b)Ka(a,"change",this.j,this),a=a.Ya(),a in this.i&&(delete this.i[a],--this.l),this.s()}; -function yh(a,b,c){for(var d=0,e,f;a.lc.b.length)c=!1;else{var d=Date.now()-c.i,e=c.b.length-3;if(c.b[e+2]d;)f-=3;var d=c.b[e+2]-c.b[f+2],g=c.b[e]-c.b[f],e=c.b[e+1]-c.b[f+1];c.c=Math.atan2(e,g);c.a=Math.sqrt(g*g+e*e)/d;c=c.a>c.g}}c?(c=this.a,c=(c.g-c.a)/c.f,e=this.a.c,f=a.bb(),this.o=Ah(this.a,f),b.$a(this.o),f=b.Ga(f),b=b.Na([f[0]-c*Math.cos(e),f[1]-c*Math.sin(e)]),b=a.Od(b),a.ob(b)):b.render(); -Kd(a,-1);return!1}this.c=null;return!0}function Uh(a){if(0this.D&&(this.a=!0));this.o=c;a=a.map;c=a.a.getBoundingClientRect();d=Sh(this.j);d[0]-=c.left;d[1]-=c.top;this.c=a.Na(d);this.a&&(c=a.aa(),d=c.Ma(),a.render(),Ch(a,c,d+b,this.c))} -function ti(a){if(2>this.j.length){a=a.map;var b=a.aa();Kd(b,-1);if(this.a){var c=b.Ma(),d=this.c,e=this.A,c=b.constrainRotation(c,0);Ch(a,b,c,d,e)}return!1}return!0}function ri(a){return 2<=this.j.length?(a=a.map,this.c=null,this.o=void 0,this.a=!1,this.s=0,this.H||Kd(a.aa(),1),a.render(),!0):!1}qi.prototype.Ec=oc;function ui(a){Qh.call(this,{handleDownEvent:vi,handleDragEvent:wi,handleUpEvent:xi});a=a?a:{};this.c=null;this.s=void 0!==a.duration?a.duration:400;this.a=void 0;this.o=1}w(ui,Qh);function wi(a){var b=1,c=this.j[0],d=this.j[1],e=c.clientX-d.clientX,c=c.clientY-d.clientY,e=Math.sqrt(e*e+c*c);void 0!==this.a&&(b=this.a/e);this.a=e;1!=b&&(this.o=b);a=a.map;var e=a.aa(),c=e.$(),d=a.a.getBoundingClientRect(),f=Sh(this.j);f[0]-=d.left;f[1]-=d.top;this.c=a.Na(f);a.render();Eh(a,e,c*b,this.c)} -function xi(a){if(2>this.j.length){a=a.map;var b=a.aa();Kd(b,-1);var c=b.$(),d=this.c,e=this.s,c=b.constrainResolution(c,0,this.o-1);Eh(a,b,c,d,e);return!1}return!0}function vi(a){return 2<=this.j.length?(a=a.map,this.c=null,this.a=void 0,this.o=1,this.H||Kd(a.aa(),1),a.render(),!0):!1}ui.prototype.Ec=oc;function yi(a){a=a?a:{};var b=new re,c=new zh(-.005,.05,100);(void 0!==a.altShiftDragRotate?a.altShiftDragRotate:1)&&b.push(new Xh);(void 0!==a.doubleClickZoom?a.doubleClickZoom:1)&&b.push(new Fh({delta:a.zoomDelta,duration:a.zoomDuration}));(void 0!==a.dragPan?a.dragPan:1)&&b.push(new Th({kinetic:c}));(void 0!==a.pinchRotate?a.pinchRotate:1)&&b.push(new qi);(void 0!==a.pinchZoom?a.pinchZoom:1)&&b.push(new ui({duration:a.zoomDuration}));if(void 0!==a.keyboard?a.keyboard:1)b.push(new ki),b.push(new mi({delta:a.zoomDelta, -duration:a.zoomDuration}));(void 0!==a.mouseWheelZoom?a.mouseWheelZoom:1)&&b.push(new oi({duration:a.zoomDuration}));(void 0!==a.shiftDragZoom?a.shiftDragZoom:1)&&b.push(new ji({duration:a.zoomDuration}));return b};function zi(a){var b=a||{};a=za({},b);delete a.layers;b=b.layers;Qg.call(this,a);this.f=[];this.a={};B(this,Za("layers"),this.Ok,this);b?Array.isArray(b)?b=new re(b.slice()):la(b instanceof re,43):b=new re;this.lh(b)}w(zi,Qg);k=zi.prototype;k.ae=function(){this.Bb()&&this.u()}; -k.Ok=function(){this.f.forEach(Ea);this.f.length=0;var a=this.Rc();this.f.push(B(a,ue,this.Nk,this),B(a,ve,this.Pk,this));for(var b in this.a)this.a[b].forEach(Ea);Aa(this.a);var a=a.a,c,d;b=0;for(c=a.length;be;++e)d[e]=b.charCodeAt(c++)|b.charCodeAt(c++)<<8|b.charCodeAt(c++)<<16|b.charCodeAt(c++)<<24;else for(e=0;16>e;++e)d[e]=b[c++]|b[c++]<<8|b[c++]<<16|b[c++]<<24;b=a.b[0];c=a.b[1];var e=a.b[2],f=a.b[3],g;g=b+(f^c&(e^f))+d[0]+3614090360&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[1]+3905402710&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[2]+606105819&4294967295;e=f+(g<<17&4294967295|g>>>15);g= -c+(b^e&(f^b))+d[3]+3250441966&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[4]+4118548399&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[5]+1200080426&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[6]+2821735955&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[7]+4249261313&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[8]+1770035416&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[9]+2336552879&4294967295;f=b+(g<<12&4294967295|g>>> -20);g=e+(c^f&(b^c))+d[10]+4294925233&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[11]+2304563134&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[12]+1804603682&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[13]+4254626195&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[14]+2792965006&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[15]+1236535329&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(e^f&(c^e))+d[1]+4129170786&4294967295;b=c+(g<<5&4294967295| -g>>>27);g=f+(c^e&(b^c))+d[6]+3225465664&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[11]+643717713&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[0]+3921069994&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(e^f&(c^e))+d[5]+3593408605&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[10]+38016083&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[15]+3634488961&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[4]+3889429448&4294967295;c=e+(g<<20&4294967295| -g>>>12);g=b+(e^f&(c^e))+d[9]+568446438&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[14]+3275163606&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[3]+4107603335&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[8]+1163531501&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(e^f&(c^e))+d[13]+2850285829&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[2]+4243563512&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[7]+1735328473&4294967295;e=f+(g<<14&4294967295| -g>>>18);g=c+(f^b&(e^f))+d[12]+2368359562&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(c^e^f)+d[5]+4294588738&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[8]+2272392833&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[11]+1839030562&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[14]+4259657740&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[1]+2763975236&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[4]+1272893353&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^ -b^c)+d[7]+4139469664&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[10]+3200236656&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[13]+681279174&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[0]+3936430074&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[3]+3572445317&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[6]+76029189&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[9]+3654602809&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[12]+3873151461&4294967295; -f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[15]+530742520&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[2]+3299628645&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(e^(c|~f))+d[0]+4096336452&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[7]+1126891415&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[14]+2878612391&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[5]+4237533241&4294967295;c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[12]+1700485571&4294967295;b=c+ -(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[3]+2399980690&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[10]+4293915773&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[1]+2240044497&4294967295;c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[8]+1873313359&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[15]+4264355552&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[6]+2734768916&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[13]+1309151649&4294967295; -c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[4]+4149444226&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[11]+3174756917&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[2]+718787259&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[9]+3951481745&4294967295;a.b[0]=a.b[0]+b&4294967295;a.b[1]=a.b[1]+(e+(g<<21&4294967295|g>>>11))&4294967295;a.b[2]=a.b[2]+e&4294967295;a.b[3]=a.b[3]+f&4294967295} -function Xi(a,b){var c;void 0===c&&(c=b.length);for(var d=c-a.a,e=a.c,f=a.g,g=0;gc.g?c.a:2*c.a)-c.g);b[0]=128;for(var d=1;dd;++d)for(var f=0;32>f;f+=8)b[e++]=c.b[d]>>>f&255;if(8192>=b.length)c=String.fromCharCode.apply(null, -b);else for(c="",d=0;da.ea&&(a.ea=d.ea),d.faa.ia&&(a.ia=d.ia)):a[b][c]=d:(a[b]={},a[b][c]=d)}function Bj(a,b,c){return[b*(Math.round(a[0]/b)+c[0]%2/2),b*(Math.round(a[1]/b)+c[1]%2/2)]} -function Cj(a,b,c,d,e,f,g,h,l,m){var n=x(b).toString();n in a.wantedTiles||(a.wantedTiles[n]={});var p=a.wantedTiles[n];a=a.tileQueue;var q=c.minZoom,t,v,u,y,E,z;for(z=g;z>=q;--z)for(v=ge(c,f,z,v),u=c.$(z),y=v.ca;y<=v.ea;++y)for(E=v.fa;E<=v.ia;++E)g-z<=h?(t=b.dc(z,y,E,d,e),0==t.V()&&(p[t.Ya()]=!0,t.Ya()in a.a||a.c([t,n,le(c,t.oa),u])),void 0!==l&&l.call(m,t)):b.Xf(z,y,E,e)};function Dj(a){tj.call(this,a);this.O=ah()}w(Dj,tj);function Ej(a,b,c){var d=b.pixelRatio,e=b.size[0]*d,f=b.size[1]*d,g=b.viewState.rotation,h=bc(c),l=ac(c),m=$b(c);c=Zb(c);fh(b.coordinateToPixelTransform,h);fh(b.coordinateToPixelTransform,l);fh(b.coordinateToPixelTransform,m);fh(b.coordinateToPixelTransform,c);a.save();Oi(a,-g,e/2,f/2);a.beginPath();a.moveTo(h[0]*d,h[1]*d);a.lineTo(l[0]*d,l[1]*d);a.lineTo(m[0]*d,m[1]*d);a.lineTo(c[0]*d,c[1]*d);a.clip();Oi(a,g,e/2,f/2)} -Dj.prototype.i=function(a,b,c){Fj(this,"precompose",c,a,void 0);var d=this.f?this.f.a():null;if(d){var e=b.extent,f=void 0!==e;f&&Ej(c,a,e);var e=this.s,g=c.globalAlpha;c.globalAlpha=b.opacity;c.drawImage(d,0,0,+d.width,+d.height,Math.round(e[4]),Math.round(e[5]),Math.round(d.width*e[0]),Math.round(d.height*e[3]));c.globalAlpha=g;f&&c.restore()}Gj(this,c,a)}; -function Fj(a,b,c,d,e){var f=a.a;if(Ta(f,b)){var g=d.size[0]*d.pixelRatio,h=d.size[1]*d.pixelRatio,l=d.viewState.rotation;Oi(c,-l,g/2,h/2);a=void 0!==e?e:Hj(a,d,0);f.b(new Sg(b,new gj(c,d.pixelRatio,d.extent,a,d.viewState.rotation),d,c,null));Oi(c,l,g/2,h/2)}}function Gj(a,b,c,d){Fj(a,"postcompose",b,c,d)}function Hj(a,b,c){var d=b.viewState,e=b.pixelRatio,f=e/d.resolution;return jh(a.O,e*b.size[0]/2,e*b.size[1]/2,f,-f,-d.rotation,-d.center[0]+c,-d.center[1])};function Ij(){};var Jj=["Polygon","LineString","Image","Text"];function Kj(a,b,c,d){this.pa=a;this.T=b;this.overlaps=d;this.f=null;this.c=0;this.resolution=c;this.Ba=this.Aa=null;this.a=[];this.coordinates=[];this.Va=ah();this.b=[];this.W=[];this.ha=ah();this.cb=ah()}w(Kj,fj); -function Lj(a,b,c,d,e,f){var g=a.coordinates.length,h=a.bf(),l=[b[c],b[c+1]],m=[NaN,NaN],n=!0,p,q,t;for(p=c+e;pa&&(b.fill(),J=0);X>a&&(b.stroke(),X=0);J||X||b.beginPath();++n;break;case 2:q=A[1];t=m[q];A=m[q+1];z=m[q+2]-t;q=m[q+3]-A;q=Math.sqrt(z*z+q*q); -b.moveTo(t+q,A);b.arc(t,A,q,0,2*Math.PI,!0);++n;break;case 3:b.closePath();++n;break;case 4:q=A[1];t=A[2];Ma=A[3];ua=A[4]*c;M=A[5]*c;var Wb=A[6],Ib=A[7],Jb=A[8],Yb=A[9];oa=A[10];z=A[11];G=A[12];var hc=A[13],Pb=A[14];for(oa&&(z+=e);qMa.width?Ma.width-Jb:Pb,Pd=Wb+Yb>Ma.height?Ma.height-Yb: -Wb;b.drawImage(Ma,Jb,Yb,tf,Pd,A,oa,tf*c,Pd*c);1!=Ib&&(b.globalAlpha=Od);if(1!=G||0!==z)kh(eh(u,v)),b.transform.apply(b,u)}++n;break;case 5:q=A[1];t=A[2];M=A[3];Wb=A[4]*c;Ib=A[5]*c;z=A[6];G=A[7]*c;Ma=A[8];ua=A[9];for((oa=A[10])&&(z+=e);qthis.c&&(this.c=this.g.lineWidth,this.f=null)}; -function Uj(a,b,c,d){Kj.call(this,a,b,c,d);this.g={sg:void 0,fd:void 0,ad:void 0,bd:null,cd:void 0,dd:void 0,ed:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}w(Uj,Kj); -function Vj(a,b,c,d,e){var f=a.g,g=void 0!==f.fillStyle,f=void 0!=f.strokeStyle,h=d.length;if(!g&&!f)return d[h-1];var l=[1];a.a.push(l);a.b.push(l);for(l=0;lthis.c&&(this.c=c.lineWidth,this.f=null)):(c.strokeStyle=void 0,c.lineCap=void 0,c.lineDash=null,c.lineJoin=void 0,c.lineWidth=void 0,c.miterLimit=void 0)}; -function Wj(a){var b=a.g,c=b.fillStyle,d=b.strokeStyle,e=b.lineCap,f=b.lineDash,g=b.lineJoin,h=b.lineWidth,l=b.miterLimit;void 0!==c&&b.sg!=c&&(a.a.push([9,c]),b.sg=b.fillStyle);void 0===d||b.fd==d&&b.ad==e&&b.bd==f&&b.cd==g&&b.dd==h&&b.ed==l||(a.a.push([10,d,h,e,g,l,f]),b.fd=d,b.ad=e,b.bd=f,b.cd=g,b.dd=h,b.ed=l)}function Xj(a,b,c,d){Kj.call(this,a,b,c,d);this.O=this.D=this.H=null;this.j="";this.s=this.o=0;this.v=void 0;this.A=this.U=0;this.l=this.i=this.g=null}w(Xj,Kj); -function Yj(a,b,c,d,e){if(""!==a.j&&a.l&&(a.g||a.i)){if(a.g){var f=a.g,g=a.H;if(!g||g.fillStyle!=f.fillStyle){var h=[9,f.fillStyle];a.a.push(h);a.b.push(h);g?g.fillStyle=f.fillStyle:a.H={fillStyle:f.fillStyle}}}a.i&&(f=a.i,g=a.D,g&&g.lineCap==f.lineCap&&g.lineDash==f.lineDash&&g.lineJoin==f.lineJoin&&g.lineWidth==f.lineWidth&&g.miterLimit==f.miterLimit&&g.strokeStyle==f.strokeStyle||(h=[10,f.strokeStyle,f.lineWidth,f.lineCap,f.lineJoin,f.miterLimit,f.lineDash,!1],a.a.push(h),a.b.push(h),g?(g.lineCap= -f.lineCap,g.lineDash=f.lineDash,g.lineJoin=f.lineJoin,g.lineWidth=f.lineWidth,g.miterLimit=f.miterLimit,g.strokeStyle=f.strokeStyle):a.D={lineCap:f.lineCap,lineDash:f.lineDash,lineJoin:f.lineJoin,lineWidth:f.lineWidth,miterLimit:f.miterLimit,strokeStyle:f.strokeStyle}));f=a.l;g=a.O;g&&g.font==f.font&&g.textAlign==f.textAlign&&g.textBaseline==f.textBaseline||(h=[11,f.font,f.textAlign,f.textBaseline],a.a.push(h),a.b.push(h),g?(g.font=f.font,g.textAlign=f.textAlign,g.textBaseline=f.textBaseline):a.O= -{font:f.font,textAlign:f.textAlign,textBaseline:f.textBaseline});Mj(a,e);f=a.coordinates.length;b=Lj(a,b,0,c,d,!1);b=[5,f,b,a.j,a.o,a.s,a.U,a.A,!!a.g,!!a.i,a.v];a.a.push(b);a.b.push(b);Pj(a,e)}} -Xj.prototype.$b=function(a){if(a){var b=a.b;b?(b=b.b,b=Ee(b?b:Li),this.g?this.g.fillStyle=b:this.g={fillStyle:b}):this.g=null;var c=a.l;if(c){var b=c.b,d=c.f,e=c.g,f=c.c,g=c.a,c=c.i,d=void 0!==d?d:"round",e=e?e.slice():Mi,f=void 0!==f?f:"round",g=void 0!==g?g:1,c=void 0!==c?c:10,b=Ce(b?b:Ni);if(this.i){var h=this.i;h.lineCap=d;h.lineDash=e;h.lineJoin=f;h.lineWidth=g;h.miterLimit=c;h.strokeStyle=b}else this.i={lineCap:d,lineDash:e,lineJoin:f,lineWidth:g,miterLimit:c,strokeStyle:b}}else this.i=null; -var l=a.g,b=a.f,d=a.c,e=a.s,g=a.i,c=a.a,f=a.Ja(),h=a.j,m=a.o;a=void 0!==l?l:"10px sans-serif";h=void 0!==h?h:"center";m=void 0!==m?m:"middle";this.l?(l=this.l,l.font=a,l.textAlign=h,l.textBaseline=m):this.l={font:a,textAlign:h,textBaseline:m};this.j=void 0!==f?f:"";this.o=void 0!==b?b:0;this.s=void 0!==d?d:0;this.v=void 0!==e?e:!1;this.U=void 0!==g?g:0;this.A=void 0!==c?c:1}else this.j=""};function Zj(a,b,c,d,e){this.s=a;this.f=b;this.j=d;this.o=c;this.c=e;this.a={};this.i=$e(1,1);this.l=ah()} -w(Zj,Ij);function ak(a){for(var b in a.a){var c=a.a[b],d;for(d in c)c[d].ie()}}Zj.prototype.ta=function(a,b,c,d,e){var f=jh(this.l,.5,.5,1/b,-1/b,-c,-a[0],-a[1]),g=this.i;g.clearRect(0,0,1,1);var h;void 0!==this.c&&(h=Eb(),Fb(h,a),Gb(h,b*this.c,h));return bk(this,g,f,c,d,function(a){if(0Ib&&(Ib=Yb,m=Jb)}if(0===Ib){g=null;break a}Ib=g[m];g[m]=g[l];g[l]=Ib;for(m=l+1;mthis.b/2){var b=[[a.source[0][0],a.source[0][1]],[a.source[1][0],a.source[1][1]],[a.source[2][0],a.source[2][1]]];b[0][0]-n>this.b/2&&(b[0][0]-=this.b);b[1][0]-n>this.b/2&&(b[1][0]-=this.b);b[2][0]-n>this.b/2&&(b[2][0]-=this.b);Math.max(b[0][0],b[1][0],b[2][0])-Math.min(b[0][0],b[1][0],b[2][0])p,v=!1;if(0a.s),v)){Math.abs(b[0]-d[0])<=Math.abs(b[1]-d[1])?(t=[(c[0]+d[0])/2,(c[1]+d[1])/2],q=a.a(t),n=[(e[0]+b[0])/2,(e[1]+b[1])/2],p=a.a(n),qk(a,b,c,t,n,f,g,q,p,m-1),qk(a,n,t,d,e,p,q,h,l,m-1)):(t=[(b[0]+c[0])/2,(b[1]+c[1])/2],q=a.a(t),n=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=a.a(n),qk(a,b,t,n,e,f,q,p,l,m-1),qk(a,t,c,d,n,q,g,h,p,m-1));return}if(t){if(!a.o)return;a.j=!0}a.f.push({source:[f,h,l],target:[b,d,e]});a.f.push({source:[f,g,h],target:[b,c,d]})}} -function rk(a){var b=Eb();a.f.forEach(function(a){a=a.source;Fb(b,a[0]);Fb(b,a[1]);Fb(b,a[2])});return b};function sk(a,b,c,d,e,f){this.v=b;this.s=a.C();var g=b.C(),h=g?jc(c,g):c,g=mk(a,b,gc(h),d);this.j=new pk(a,b,h,this.s,.5*g);this.c=d;this.g=c;a=rk(this.j);this.o=(this.qb=f(a,g,e))?this.qb.f:1;this.zd=this.i=null;e=2;f=[];this.qb&&(e=0,f=this.qb.l);rj.call(this,c,d,this.o,e,f)}w(sk,rj);sk.prototype.ma=function(){1==this.state&&(Ea(this.zd),this.zd=null);rj.prototype.ma.call(this)};sk.prototype.a=function(){return this.i}; -sk.prototype.yd=function(){var a=this.qb.V();2==a&&(this.i=ok(ec(this.g)/this.c,fc(this.g)/this.c,this.o,this.qb.$(),0,this.c,this.g,this.j,[{extent:this.qb.C(),image:this.qb.a()}],0));this.state=a;sj(this)};sk.prototype.load=function(){if(0==this.state){this.state=1;sj(this);var a=this.qb.V();2==a||3==a?this.yd():(this.zd=B(this.qb,"change",function(){var a=this.qb.V();if(2==a||3==a)Ea(this.zd),this.zd=null,this.yd()},this),this.qb.load())}};function tk(a){Tg.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state});this.H=void 0!==a.resolutions?a.resolutions:null;this.a=null;this.pa=0}w(tk,Tg);function uk(a,b){a.H&&(b=a.H[cb(a.H,b,0)]);return b} -tk.prototype.A=function(a,b,c,d){var e=this.f;if(e&&d&&!Lc(e,d)){if(this.a){if(this.pa==this.g&&Lc(this.a.v,d)&&this.a.$()==b&&this.a.f==c&&Ub(this.a.C(),a))return this.a;Oa(this.a);this.a=null}this.a=new sk(e,d,a,b,c,function(a,b,c){return this.Kc(a,b,c,e)}.bind(this));this.pa=this.g;return this.a}e&&(d=e);return this.Kc(a,b,c,d)};tk.prototype.o=function(a){a=a.target;switch(a.V()){case 1:this.b(new vk(wk,a));break;case 2:this.b(new vk(xk,a));break;case 3:this.b(new vk(yk,a))}}; -function zk(a,b){a.a().src=b}function vk(a,b){Pa.call(this,a);this.image=b}w(vk,Pa);var wk="imageloadstart",xk="imageloadend",yk="imageloaderror";function Ak(a){tk.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions,state:a.state});this.ha=a.canvasFunction;this.T=null;this.W=0;this.na=void 0!==a.ratio?a.ratio:1.5}w(Ak,tk);Ak.prototype.Kc=function(a,b,c,d){b=uk(this,b);var e=this.T;if(e&&this.W==this.g&&e.$()==b&&e.f==c&&Nb(e.C(),a))return e;a=a.slice();lc(a,this.na);(d=this.ha(a,b,c,[ec(a)/b*c,fc(a)/b*c],d))&&(e=new hk(a,b,c,this.l,d));this.T=e;this.W=this.g;return e};function Bk(a){this.c=a.source;this.Ia=ah();this.i=$e();this.j=[0,0];this.za=void 0==a.renderBuffer?100:a.renderBuffer;this.v=null;Ak.call(this,{attributions:a.attributions,canvasFunction:this.zj.bind(this),logo:a.logo,projection:a.projection,ratio:a.ratio,resolutions:a.resolutions,state:this.c.V()});this.R=null;this.s=void 0;this.uh(a.style);B(this.c,"change",this.$m,this)}w(Bk,Ak);k=Bk.prototype; -k.zj=function(a,b,c,d,e){var f=new Zj(.5*b/c,a,b,this.c.W,this.za);this.c.Nc(a,b,e);var g=!1;this.c.xb(a,function(a){var d;if(!(d=g)){var e;(d=a.hc())?e=d.call(a,b):this.s&&(e=this.s(a,b));if(e){var n,p=!1;Array.isArray(e)||(e=[e]);d=0;for(n=e.length;dl[2];)++z,n=m*z,n=Hj(this,a,n),p.Sa(u,e,n,g,f),h-=m;n=Hj(this,a,0)}Oi(u,g,b/2,E/2);u!=c&&(Fj(this,"render",u,a,n),c.drawImage(u.canvas,-t,-v),u.translate(-t,-v));u.globalAlpha=y}q&&c.restore();Gj(this,c,a,n)}; -Gk.prototype.ta=function(a,b,c,d){if(this.j){var e=this.a,f={};return this.j.ta(a,b.viewState.resolution,b.viewState.rotation,{},function(a){var b=x(a).toString();if(!(b in f))return f[b]=!0,c.call(d,a,e)})}};Gk.prototype.D=function(){vj(this)}; -Gk.prototype.l=function(a){function b(a){var b,d=a.hc();d?b=d.call(a,m):(d=c.i)&&(b=d(a,m));if(b){if(b){d=!1;if(Array.isArray(b))for(var e=0,f=b.length;eA&&this.target.insertBefore(u.target,this.target.childNodes[0]|| -null)}else{if(!a.viewHints[0]&&!a.viewHints[1]){G=ge(u.c,q,u.g[0],E);A=[];z=void 0;for(z in u.a)X=u.a[z],ua=X.oa,Wd(G,ua[1],ua[2])||A.push(X);G=0;for(ua=A.length;G=m;){t=this.g[e];c=this.s[e];p=x(c).toString();if(void 0===h[p]&&c.Y()&&(void 0===n||kc(n,c.Y().C()))&&(f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),f.drawElements(4,b-t,d,t*a),b=l(c))){h=b;break a}b=t;e--}h=void 0}else f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),tl(this,f,a,h,this.l,this.i),h=(h=l(null))?h:void 0;t=h}f.disableVertexAttribArray(q.f);f.disableVertexAttribArray(q.b);f.disableVertexAttribArray(q.c);f.disableVertexAttribArray(q.a);f.disableVertexAttribArray(q.g); -return t};function tl(a,b,c,d,e,f){var g=c.g?5125:5123;c=c.g?4:2;if(Ca(d)){var h;a=0;d=e.length;for(h=0;aa[0]||a[0]>e[0]||0>a[1]||a[1]>e[1])&&(this.j|| -(this.j=$e(1,1)),this.j.clearRect(0,0,1,1),this.j.drawImage(this.c.a(),a[0],a[1],1,1,0,0,1,1),e=this.j.getImageData(0,0,1,1).data,0d?b[0]=d-c:0>e&&(b[0]=Math.abs(e)+ -c),0>f?b[1]=f-c:0>g&&(b[1]=Math.abs(g)+c),0===b[0]&&0===b[1])||(c=a.aa().bb(),d=a.Ga(c),b=[d[0]+b[0],d[1]+b[1]],this.i&&(this.i.source=c,a.$a(Sd(this.i))),a.aa().ob(a.Na(b)))}}};k.Xk=function(){bm(this)};k.ci=function(a){this.set("element",a)};k.setMap=function(a){this.set("map",a)};k.ii=function(a){this.set("offset",a)};k.tf=function(a){this.set("position",a)};function cm(a,b){var c=a.getBoundingClientRect(),d=c.left+ja.pageXOffset,c=c.top+ja.pageYOffset;return[d,c,d+b[0],c+b[1]]} -k.li=function(a){this.set("positioning",a)};function dm(a,b){a.a.visible!==b&&(a.f.style.display=b?"":"none",a.a.visible=b)} -function bm(a){var b=a.fe(),c=a.dh();if(void 0!==b&&b.f&&void 0!==c){var c=b.Ga(c),d=b.kb(),b=a.f.style,e=a.Ig(),f=a.Jg(),g=e[0],e=e[1];if("bottom-right"==f||"center-right"==f||"top-right"==f)""!==a.a.de&&(a.a.de=b.left=""),g=Math.round(d[0]-c[0]-g)+"px",a.a.Ce!=g&&(a.a.Ce=b.right=g);else{""!==a.a.Ce&&(a.a.Ce=b.right="");if("bottom-center"==f||"center-center"==f||"top-center"==f)g-=a.f.offsetWidth/2;g=Math.round(c[0]+g)+"px";a.a.de!=g&&(a.a.de=b.left=g)}if("bottom-left"==f||"bottom-center"==f||"bottom-right"== -f)""!==a.a.Ee&&(a.a.Ee=b.top=""),c=Math.round(d[1]-c[1]-e)+"px",a.a.Ld!=c&&(a.a.Ld=b.bottom=c);else{""!==a.a.Ld&&(a.a.Ld=b.bottom="");if("center-left"==f||"center-center"==f||"center-right"==f)e-=a.f.offsetHeight/2;c=Math.round(c[1]+e)+"px";a.a.Ee!=c&&(a.a.Ee=b.top=c)}dm(a,!0)}else dm(a,!1)};function em(a){a=a?a:{};this.l=void 0!==a.collapsed?a.collapsed:!0;this.j=void 0!==a.collapsible?a.collapsible:!0;this.j||(this.l=!1);var b=void 0!==a.className?a.className:"ol-overviewmap",c=void 0!==a.tipLabel?a.tipLabel:"Overview map",d=void 0!==a.collapseLabel?a.collapseLabel:"\u00ab";"string"===typeof d?(this.o=document.createElement("span"),this.o.textContent=d):this.o=d;d=void 0!==a.label?a.label:"\u00bb";"string"===typeof d?(this.v=document.createElement("span"),this.v.textContent=d):this.v= -d;var e=this.j&&!this.l?this.o:this.v,d=document.createElement("button");d.setAttribute("type","button");d.title=c;d.appendChild(e);B(d,"click",this.bm,this);c=document.createElement("DIV");c.className="ol-overviewmap-map";var f=this.f=new I({controls:new re,interactions:new re,target:c,view:a.view});a.layers&&a.layers.forEach(function(a){f.jg(a)},this);e=document.createElement("DIV");e.className="ol-overviewmap-box";e.style.boxSizing="border-box";this.A=new am({position:[0,0],positioning:"bottom-left", -element:e});this.f.kg(this.A);e=document.createElement("div");e.className=b+" ol-unselectable ol-control"+(this.l&&this.j?" ol-collapsed":"")+(this.j?"":" ol-uncollapsible");e.appendChild(c);e.appendChild(d);jf.call(this,{element:e,render:a.render?a.render:fm,target:a.target})}w(em,jf);k=em.prototype; -k.setMap=function(a){var b=this.a;a!==b&&(b&&(b=b.aa())&&Ka(b,Za(Ed),this.be,this),jf.prototype.setMap.call(this,a),a&&(this.s.push(B(a,"propertychange",this.Rk,this)),0===this.f.ah().gc()&&this.f.gi(a.wc()),a=a.aa()))&&(B(a,Za(Ed),this.be,this),Jd(a)&&(this.f.Wc(),gm(this)))};k.Rk=function(a){"view"===a.key&&((a=a.oldValue)&&Ka(a,Za(Ed),this.be,this),a=this.a.aa(),B(a,Za(Ed),this.be,this))};k.be=function(){this.f.aa().ge(this.a.aa().Ma())}; -function fm(){var a=this.a,b=this.f;if(a.f&&b.f){var c=a.kb(),a=a.aa().Ic(c),d=b.kb(),c=b.aa().Ic(d),e=b.Ga(bc(a)),f=b.Ga($b(a)),b=Math.abs(e[0]-f[0]),e=Math.abs(e[1]-f[1]),f=d[0],d=d[1];b<.1*f||e<.1*d||b>.75*f||e>.75*d?gm(this):Nb(c,a)||(a=this.f,c=this.a.aa(),a.aa().ob(c.bb()))}hm(this)}function gm(a){var b=a.a;a=a.f;var c=b.kb(),b=b.aa().Ic(c),c=a.kb();a=a.aa();lc(b,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));a.af(b,c)} -function hm(a){var b=a.a,c=a.f;if(b.f&&c.f){var d=b.kb(),e=b.aa(),f=c.aa(),c=e.Ma(),b=a.A,g=a.A.Sd(),h=e.Ic(d),d=f.$(),e=Zb(h),f=ac(h),l;if(a=a.a.aa().bb())l=[e[0]-a[0],e[1]-a[1]],zb(l,c),ub(l,a);b.tf(l);g&&(g.style.width=Math.abs((e[0]-f[0])/d)+"px",g.style.height=Math.abs((f[1]-e[1])/d)+"px")}}k.bm=function(a){a.preventDefault();im(this)}; -function im(a){a.element.classList.toggle("ol-collapsed");a.l?ef(a.o,a.v):ef(a.v,a.o);a.l=!a.l;var b=a.f;a.l||b.f||(b.Wc(),gm(a),Ja(b,"postrender",function(){hm(this)},a))}k.am=function(){return this.j};k.dm=function(a){this.j!==a&&(this.j=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.l&&im(this))};k.cm=function(a){this.j&&this.l!==a&&im(this)};k.$l=function(){return this.l};k.lk=function(){return this.f};function jm(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-scale-line";this.j=document.createElement("DIV");this.j.className=b+"-inner";this.f=document.createElement("DIV");this.f.className=b+" ol-unselectable";this.f.appendChild(this.j);this.v=null;this.o=void 0!==a.minWidth?a.minWidth:64;this.l=!1;this.H=void 0;this.A="";jf.call(this,{element:this.f,render:a.render?a.render:km,target:a.target});B(this,Za(lm),this.O,this);this.D(a.units||mm)}w(jm,jf);var nm=[1,2,5];jm.prototype.Ab=function(){return this.get(lm)}; -function km(a){(a=a.frameState)?this.v=a.viewState:this.v=null;om(this)}jm.prototype.O=function(){om(this)};jm.prototype.D=function(a){this.set(lm,a)}; -function om(a){var b=a.v;if(b){var c=b.projection,d=c.cc(),b=c.getPointResolution(b.resolution,b.center)*d,d=a.o*b,c="",e=a.Ab();e==pm?(c=rc.degrees,b/=c,dd?(c="in",b/=.0254):1609.344>d?(c="ft",b/=.3048):(c="mi",b/=1609.344):e==rm?(b/=1852,c="nm"):e==mm?1>d?(c="mm",b*=1E3):1E3>d?c="m":(c="km",b/=1E3):e==sm?.9144>d?(c="in",b*=39.37):1609.344>d?(c="ft",b/=.30480061):(c="mi",b/=1609.3472):la(!1,33);for(var e=3*Math.floor(Math.log(a.o* -b)/Math.log(10)),f;;){f=nm[(e%3+3)%3]*Math.pow(10,Math.floor(e/3));d=Math.round(f/b);if(isNaN(d)){a.f.style.display="none";a.l=!1;return}if(d>=a.o)break;++e}b=f+" "+c;a.A!=b&&(a.j.innerHTML=b,a.A=b);a.H!=d&&(a.j.style.width=d+"px",a.H=d);a.l||(a.f.style.display="",a.l=!0)}else a.l&&(a.f.style.display="none",a.l=!1)}var lm="units",pm="degrees",qm="imperial",rm="nautical",mm="metric",sm="us";function tm(a){a=a?a:{};this.f=void 0;this.l=um;this.v=[];this.H=this.o=0;this.T=null;this.ha=!1;this.W=void 0!==a.duration?a.duration:200;var b=void 0!==a.className?a.className:"ol-zoomslider",c=document.createElement("button");c.setAttribute("type","button");c.className=b+"-thumb ol-unselectable";var d=document.createElement("div");d.className=b+" ol-unselectable ol-control";d.appendChild(c);this.j=new wg(d);B(this.j,cg,this.Fk,this);B(this.j,dg,this.Lg,this);B(this.j,eg,this.Mg,this);B(d,"click", -this.Ek,this);B(c,"click",Qa);jf.call(this,{element:d,render:a.render?a.render:vm})}w(tm,jf);tm.prototype.ma=function(){Oa(this.j);jf.prototype.ma.call(this)};var um=0;k=tm.prototype;k.setMap=function(a){jf.prototype.setMap.call(this,a);a&&a.render()}; -function vm(a){if(a.frameState){if(!this.ha){var b=this.element,c=b.offsetWidth,d=b.offsetHeight,e=b.firstElementChild,f=ja.getComputedStyle(e),b=e.offsetWidth+parseFloat(f.marginRight)+parseFloat(f.marginLeft),e=e.offsetHeight+parseFloat(f.marginTop)+parseFloat(f.marginBottom);this.T=[b,e];c>d?(this.l=1,this.H=c-b):(this.l=um,this.o=d-e);this.ha=!0}a=a.frameState.viewState.resolution;a!==this.f&&(this.f=a,wm(this,a))}} -k.Ek=function(a){var b=this.a,c=b.aa(),d=c.$();b.$a(Ud({resolution:d,duration:this.W,easing:Md}));a=xm(this,ma(1===this.l?(a.offsetX-this.T[0]/2)/this.H:(a.offsetY-this.T[1]/2)/this.o,0,1));c.Zb(c.constrainResolution(a))}; -k.Fk=function(a){if(!this.A&&a.b.target===this.element.firstElementChild&&(Kd(this.a.aa(),1),this.D=a.clientX,this.O=a.clientY,this.A=!0,0===this.v.length)){a=this.Lg;var b=this.Mg;this.v.push(B(document,"mousemove",a,this),B(document,"touchmove",a,this),B(document,dg,a,this),B(document,"mouseup",b,this),B(document,"touchend",b,this),B(document,eg,b,this))}}; -k.Lg=function(a){if(this.A){var b=this.element.firstElementChild;this.f=xm(this,ma(1===this.l?(a.clientX-this.D+parseInt(b.style.left,10))/this.H:(a.clientY-this.O+parseInt(b.style.top,10))/this.o,0,1));this.a.aa().Zb(this.f);wm(this,this.f);this.D=a.clientX;this.O=a.clientY}};k.Mg=function(){if(this.A){var a=this.a,b=a.aa();Kd(b,-1);a.$a(Ud({resolution:this.f,duration:this.W,easing:Md}));a=b.constrainResolution(this.f);b.Zb(a);this.A=!1;this.O=this.D=void 0;this.v.forEach(Ea);this.v.length=0}}; -function wm(a,b){var c;c=1-Id(a.a.aa())(b);var d=a.element.firstElementChild;1==a.l?d.style.left=a.H*c+"px":d.style.top=a.o*c+"px"}function xm(a,b){return Hd(a.a.aa())(1-b)};function ym(a){a=a?a:{};this.f=a.extent?a.extent:null;var b=void 0!==a.className?a.className:"ol-zoom-extent",c=void 0!==a.label?a.label:"E",d=void 0!==a.tipLabel?a.tipLabel:"Fit to extent",e=document.createElement("button");e.setAttribute("type","button");e.title=d;e.appendChild("string"===typeof c?document.createTextNode(c):c);B(e,"click",this.l,this);c=document.createElement("div");c.className=b+" ol-unselectable ol-control";c.appendChild(e);jf.call(this,{element:c,target:a.target})}w(ym,jf); -ym.prototype.l=function(a){a.preventDefault();var b=this.a;a=b.aa();var c=this.f?this.f:a.j.C(),b=b.kb();a.af(c,b)};function zm(a){Xa.call(this);a=a?a:{};this.a=null;B(this,Za("tracking"),this.Dl,this);this.qf(void 0!==a.tracking?a.tracking:!1)}w(zm,Xa);k=zm.prototype;k.ma=function(){this.qf(!1);Xa.prototype.ma.call(this)}; -k.$n=function(a){if(null!==a.alpha){var b=sa(a.alpha);this.set("alpha",b);"boolean"===typeof a.absolute&&a.absolute?this.set("heading",b):"number"===typeof a.webkitCompassHeading&&-1!=a.webkitCompassAccuracy&&this.set("heading",sa(a.webkitCompassHeading))}null!==a.beta&&this.set("beta",sa(a.beta));null!==a.gamma&&this.set("gamma",sa(a.gamma));this.u()};k.Lj=function(){return this.get("alpha")};k.Oj=function(){return this.get("beta")};k.Vj=function(){return this.get("gamma")};k.Cl=function(){return this.get("heading")}; -k.Xg=function(){return this.get("tracking")};k.Dl=function(){if(Nf){var a=this.Xg();a&&!this.a?this.a=B(ja,"deviceorientation",this.$n,this):a||null===this.a||(Ea(this.a),this.a=null)}};k.qf=function(a){this.set("tracking",a)};function Am(a){Xa.call(this);this.i=void 0;this.a="geometry";this.c=null;this.l=void 0;this.f=null;B(this,Za(this.a),this.$d,this);void 0!==a&&(a instanceof Qc||!a?this.Xa(a):this.G(a))}w(Am,Xa);k=Am.prototype;k.clone=function(){var a=new Am(this.N());a.Cc(this.a);var b=this.Y();b&&a.Xa(b.clone());(b=this.c)&&a.rf(b);return a};k.Y=function(){return this.get(this.a)};k.Oa=function(){return this.i};k.Xj=function(){return this.a};k.El=function(){return this.c};k.hc=function(){return this.l};k.Fl=function(){this.u()}; -k.$d=function(){this.f&&(Ea(this.f),this.f=null);var a=this.Y();a&&(this.f=B(a,"change",this.Fl,this));this.u()};k.Xa=function(a){this.set(this.a,a)};k.rf=function(a){this.l=(this.c=a)?Bm(a):void 0;this.u()};k.Xb=function(a){this.i=a;this.u()};k.Cc=function(a){Ka(this,Za(this.a),this.$d,this);this.a=a;B(this,Za(this.a),this.$d,this);this.$d()};function Bm(a){if("function"!==typeof a){var b;Array.isArray(a)?b=a:(la(a instanceof Zi,41),b=[a]);a=function(){return b}}return a};var Cm=document.implementation.createDocument("","",null);function Dm(a,b){return Cm.createElementNS(a,b)}function Em(a,b){return Fm(a,b,[]).join("")}function Fm(a,b,c){if(a.nodeType==Node.CDATA_SECTION_NODE||a.nodeType==Node.TEXT_NODE)b?c.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):c.push(a.nodeValue);else for(a=a.firstChild;a;a=a.nextSibling)Fm(a,b,c);return c}function Gm(a){return a instanceof Document}function Hm(a){return a instanceof Node} -function Im(a){return(new DOMParser).parseFromString(a,"application/xml")}function Jm(a,b){return function(c,d){var e=a.call(b,c,d);void 0!==e&&eb(d[d.length-1],e)}}function Km(a,b){return function(c,d){var e=a.call(void 0!==b?b:this,c,d);void 0!==e&&d[d.length-1].push(e)}}function Lm(a,b){return function(c,d){var e=a.call(void 0!==b?b:this,c,d);void 0!==e&&(d[d.length-1]=e)}} -function Mm(a){return function(b,c){var d=a.call(this,b,c);if(void 0!==d){var e=c[c.length-1],f=b.localName,g;f in e?g=e[f]:g=e[f]=[];g.push(d)}}}function K(a,b){return function(c,d){var e=a.call(this,c,d);void 0!==e&&(d[d.length-1][void 0!==b?b:c.localName]=e)}}function L(a,b){return function(c,d,e){a.call(void 0!==b?b:this,c,d,e);e[e.length-1].node.appendChild(c)}} -function Nm(a){var b,c;return function(d,e,f){if(!b){b={};var g={};g[d.localName]=a;b[d.namespaceURI]=g;c=Om(d.localName)}Pm(b,c,e,f)}}function Om(a,b){return function(c,d,e){c=d[d.length-1].node;d=a;void 0===d&&(d=e);e=b;void 0===b&&(e=c.namespaceURI);return Dm(e,d)}}var Qm=Om();function Rm(a,b){for(var c=b.length,d=Array(c),e=0;eh.status){var a=b.X(),e;"json"==a||"text"==a?e=h.responseText:"xml"==a?(e=h.responseXML)||(e=Im(h.responseText)):"arraybuffer"==a&&(e=h.response);e?c.call(this,b.Fa(e,{featureProjection:g}),b.Ra(e)):d.call(this)}else d.call(this)}.bind(this);h.send()}} -function Vm(a,b){return Um(a,b,function(a,b){this.uf(b);this.di(a)},function(){this.state=3;rh(this)})}function Wm(a,b){return Um(a,b,function(a){this.Hc(a)},ha)};function Xm(){this.defaultDataProjection=null}function Ym(a,b,c){var d;c&&(d={dataProjection:c.dataProjection?c.dataProjection:a.Ra(b),featureProjection:c.featureProjection});return Zm(a,d)}function Zm(a,b){var c;b&&(c={featureProjection:b.featureProjection,dataProjection:b.dataProjection?b.dataProjection:a.defaultDataProjection,rightHanded:b.rightHanded},b.decimals&&(c.decimals=b.decimals));return c} -function $m(a,b,c){var d=c?vc(c.featureProjection):null,e=c?vc(c.dataProjection):null,f;d&&e&&!Lc(d,e)?a instanceof Qc?f=(b?a.clone():a).lb(b?d:e,b?e:d):f=Pc(b?a.slice():a,b?d:e,b?e:d):f=a;if(b&&c&&c.decimals){var g=Math.pow(10,c.decimals);a=function(a){for(var b=0,c=a.length;b>1),h=+ab(g[e],c),0>h?l=e+1:(m=e,n=!h);e=n?l:~l;0>e?(c=(c-g[-e-2])/(g[-e-1]-g[-e-2]),b+=(-e-2)*d,g=va(a[b],a[b+d],c),h=va(a[b+1],a[b+d+1],c)):(g=a[b+e*d],h=a[b+e*d+1])}return f?(f[0]= -g,f[1]=h,f):[g,h]}function dn(a,b,c,d,e,f){if(c==b)return null;if(e>1,ea||this.c.length<=a)return null;var b=new P(null);b.ba(this.ka,this.B.slice(0===a?0:this.c[a-1],this.c[a]));return b}; -k.ld=function(){var a=this.B,b=this.c,c=this.ka,d=[],e=0,f,g;f=0;for(g=b.length;fa||b<=a)return null;b=new C(null);b.ba(this.ka,this.B.slice(a*this.a,(a+1)*this.a));return b};k.he=function(){var a=this.B,b=this.ka,c=this.a,d=[],e,f;e=0;for(f=a.length;ea||this.c.length<=a)return null;var b;0===a?b=0:(b=this.c[a-1],b=b[b.length-1]);a=this.c[a].slice();var c=a[a.length-1];if(0!==b){var d,e;d=0;for(e=a.length;da||0!==this.l&&ad;++d){var e=parseInt(c[d],10).toString(16);c[d]=1==e.length?"0"+e:e}Mn(a,c.join(""))} -function bq(a,b,c){a={node:a};var d=b.X(),e,f;"GeometryCollection"==d?(e=b.df(),f=cq):"MultiPoint"==d?(e=b.he(),f=dq):"MultiLineString"==d?(e=b.ld(),f=eq):"MultiPolygon"==d?(e=b.Wd(),f=fq):la(!1,39);Tm(a,gq,f,e,c)}function hq(a,b,c){Tm({node:a},iq,jq,[b],c)} -function kq(a,b,c){var d={node:a};b.Oa()&&a.setAttribute("id",b.Oa());a=b.N();var e=b.hc();e&&(e=e.call(b,0))&&(e=Array.isArray(e)?e[0]:e,this.l&&(a.Style=e),(e=e.Ja())&&(a.name=e.Ja()));e=lq[c[c.length-1].node.namespaceURI];a=Rm(a,e);Tm(d,mq,Qm,a,c,e);a=c[0];(b=b.Y())&&(b=$m(b,!0,a));Tm(d,mq,cq,[b],c)}function nq(a,b,c){var d=b.la();a={node:a};a.layout=b.ka;a.stride=b.ua();Tm(a,oq,pq,[d],c)}function qq(a,b,c){b=b.Vd();var d=b.shift();a={node:a};Tm(a,rq,sq,b,c);Tm(a,rq,tq,[d],c)} -function uq(a,b){Nn(a,Math.round(b*b*1E6)/1E6)} -var vq=N(hp,["Document","Placemark"]),yq=N(hp,{Document:L(function(a,b,c){Tm({node:a},wq,xq,b,c,void 0,this)}),Placemark:L(kq)}),wq=N(hp,{Placemark:L(kq)}),zq={Point:"Point",LineString:"LineString",LinearRing:"LinearRing",Polygon:"Polygon",MultiPoint:"MultiGeometry",MultiLineString:"MultiGeometry",MultiPolygon:"MultiGeometry",GeometryCollection:"MultiGeometry"},Aq=N(hp,["href"],N(gp,["x","y","w","h"])),Bq=N(hp,{href:L(Mn)},N(gp,{x:L(Nn),y:L(Nn),w:L(Nn),h:L(Nn)})),Cq=N(hp,["scale","heading","Icon", -"hotSpot"]),Eq=N(hp,{Icon:L(function(a,b,c){a={node:a};var d=Aq[c[c.length-1].node.namespaceURI],e=Rm(b,d);Tm(a,Bq,Qm,e,c,d);d=Aq[gp[0]];e=Rm(b,d);Tm(a,Bq,Dq,e,c,d)}),heading:L(Nn),hotSpot:L(function(a,b){a.setAttribute("x",b.x);a.setAttribute("y",b.y);a.setAttribute("xunits",b.Zf);a.setAttribute("yunits",b.$f)}),scale:L(uq)}),Fq=N(hp,["color","scale"]),Gq=N(hp,{color:L(aq),scale:L(uq)}),Hq=N(hp,["color","width"]),Iq=N(hp,{color:L(aq),width:L(Nn)}),iq=N(hp,{LinearRing:L(nq)}),gq=N(hp,{LineString:L(nq), -Point:L(nq),Polygon:L(qq),GeometryCollection:L(bq)}),lq=N(hp,"name open visibility address phoneNumber description styleUrl Style".split(" ")),mq=N(hp,{MultiGeometry:L(bq),LineString:L(nq),LinearRing:L(nq),Point:L(nq),Polygon:L(qq),Style:L(function(a,b,c){a={node:a};var d={},e=b.c,f=b.f,g=b.a;b=b.Ja();g instanceof Qo&&(d.IconStyle=g);b&&(d.LabelStyle=b);f&&(d.LineStyle=f);e&&(d.PolyStyle=e);b=Jq[c[c.length-1].node.namespaceURI];d=Rm(d,b);Tm(a,Kq,Qm,d,c,b)}),address:L(Mn),description:L(Mn),name:L(Mn), -open:L(Ln),phoneNumber:L(Mn),styleUrl:L(Mn),visibility:L(Ln)}),oq=N(hp,{coordinates:L(function(a,b,c){c=c[c.length-1];var d=c.layout;c=c.stride;var e;"XY"==d||"XYM"==d?e=2:"XYZ"==d||"XYZM"==d?e=3:la(!1,34);var f,g=b.length,h="";if(0>1,v=-7;f=d?f-1:0;var u=d?-1:1,y=a[b+f];f+=u;d=y&(1<<-v)-1;y>>=-v;for(v+=p;0>=-v;for(v+=e;0>1,y=23===f?Math.pow(2,-24)-Math.pow(2,-77):0;p=e?0:p-1;var E=e?1:-1,z=0>b||0===b&&0>1/b?1:0;b=Math.abs(b);isNaN(b)||Infinity===b?(b=isNaN(b)?1:0,e=v):(e=Math.floor(Math.log(b)/Math.LN2),1>b*(q=Math.pow(2,-e))&&(e--,q*=2),b=1<=e+u?b+y/q:b+y*Math.pow(2,1-u),2<=b*q&&(e++,q/=2),e+u>=v?(b=0,e=v):1<=e+u?(b=(b*q-1)*Math.pow(2,f),e+=u):(b=b*Math.pow(2,u-1)*Math.pow(2,f),e=0));for(;8<=f;a[d+p]=b&255,p+=E,b/=256,f-=8);e=e<f)if(g)if(56320>f){d.push(239,191,189);g=f;continue}else f=g-55296<<10|f-56320|65536,g=null;else{56319< -f||e+1===b?d.push(239,191,189):g=f;continue}else g&&(d.push(239,191,189),g=null);128>f?d.push(f):2048>f?d.push(f>>6|192,f&63|128):65536>f?d.push(f>>12|224,f>>6&63|128,f&63|128):d.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}return d}b.ja=f;var h=a("ieee754"),l,m,n;l={Xh:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},Yf:function(a,b){this[b]=a;this[b+1]=a>>>8;this[b+2]=a>>>16;this[b+3]=a>>>24},Ph:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+(this[a+3]<<24)}, -Mf:function(a){return h.read(this,a,!0,23,4)},Gf:function(a){return h.read(this,a,!0,52,8)},Ai:function(a,b){return h.write(this,a,b,!0,23,4)},xi:function(a,b){return h.write(this,a,b,!0,52,8)},toString:function(a,b,d){var e=a="";d=Math.min(this.length,d||this.length);for(b=b||0;b=f?(a+=decodeURIComponent(e)+String.fromCharCode(f),e=""):e+="%"+f.toString(16)}return a+=decodeURIComponent(e)},write:function(a,b){for(var d=a===m?n:g(a),e=0;ee)return a;e=d[b.da++];a+=34359738368*(e&127);if(128>e)return a;e=d[b.da++];a+=4398046511104*(e& -127);if(128>e)return a;e=d[b.da++];a+=562949953421312*(e&127);if(128>e)return a;e=d[b.da++];a+=72057594037927936*(e&127);if(128>e)return a;e=d[b.da++];if(128>e)return a+0x7fffffffffffffff*(e&127);throw Error("Expected varint not more than 10 bytes");}b.ja=g;var l=f.xp||a("./buffer");g.f=0;g.g=1;g.b=2;g.a=5;var m=Math.pow(2,63);g.prototype={Kf:function(a,b,d){for(d=d||this.length;this.da>3,b,this);this.da===f&&this.lp(e)}return b},yo:function(){var a=this.Gb.Mf(this.da); -this.da+=4;return a},uo:function(){var a=this.Gb.Gf(this.da);this.da+=8;return a},Da:function(){var a=this.Gb,b,d;d=a[this.da++];b=d&127;if(128>d)return b;d=a[this.da++];b|=(d&127)<<7;if(128>d)return b;d=a[this.da++];b|=(d&127)<<14;if(128>d)return b;d=a[this.da++];b|=(d&127)<<21;return 128>d?b:h(b,this)},Jo:function(){var a=this.da,b=this.Da();if(be?f<<7*e:f*Math.pow(2,7*e));return-b- -1},wd:function(){var a=this.Da();return 1===a%2?(a+1)/-2:a/2},so:function(){return!!this.Da()},Pf:function(){var a=this.Da()+this.da,b=this.Gb.toString("utf8",this.da,a);this.da=a;return b},lp:function(a){a&=7;if(a===g.f)for(;127>=3),e--,1===d||2===d)f+=a.wd(),g+=a.wd(),1===d&&(u&&v.push(u),u=[]),u.push(new h(f,g));else if(7===d)u&&u.push(u[0].clone());else throw Error("unknown command "+d);u&&v.push(u);return v};f.prototype.bbox=function(){var a=this.qc;a.da=this.Oe;for(var b=a.Da()+a.da,d=1,e=0,f=0,g=0,h=Infinity,u=-Infinity,y=Infinity,E=-Infinity;a.da< -b;)if(e||(e=a.Da(),d=e&7,e>>=3),e--,1===d||2===d)f+=a.wd(),g+=a.wd(),fu&&(u=f),gE&&(E=g);else if(7!==d)throw Error("unknown command "+d);return[h,y,u,E]}},{"point-geometry":1}],5:[function(a,b){function f(a,b){this.version=1;this.name=null;this.extent=4096;this.length=0;this.qc=a;this.Hd=[];this.Jd=[];this.Gd=[];a.Kf(g,this,b);this.length=this.Gd.length}function g(a,b,d){15===a?b.version=d.Da():1===a?b.name=d.Pf():5===a?b.extent=d.Da():2===a?b.Gd.push(d.da):3===a?b.Hd.push(d.Pf()): -4===a&&b.Jd.push(h(d))}function h(a){for(var b=null,d=a.Da()+a.da;a.da>3,b=1===b?a.Pf():2===b?a.yo():3===b?a.uo():4===b?a.Jo():5===b?a.Da():6===b?a.wd():7===b?a.so():null;return b}var l=a("./vectortilefeature.js");b.ja=f;f.prototype.feature=function(a){if(0>a||a>=this.Gd.length)throw Error("feature index out of bounds");this.qc.da=this.Gd[a];a=this.qc.Da()+this.qc.da;return new l(this.qc,a,this.extent,this.Hd,this.Jd)}},{"./vectortilefeature.js":4}]},{},[2])(2)});Oq=b.ja})();function Rq(a,b,c,d){this.g=a;this.b=b;this.c=c;this.f=d}k=Rq.prototype;k.get=function(a){return this.f[a]};k.Hb=function(){return this.c};k.C=function(){this.a||(this.a="Point"===this.g?Rb(this.b):Sb(this.b,0,this.b.length,2));return this.a};k.Qb=function(){return this.b};k.la=Rq.prototype.Qb;k.Y=function(){return this};k.Im=function(){return this.f};k.md=Rq.prototype.Y;k.ua=function(){return 2};k.hc=ha;k.X=function(){return this.g};function Sq(a){this.defaultDataProjection=null;a=a?a:{};this.defaultDataProjection=new sc({code:"",units:"tile-pixels"});this.b=a.featureClass?a.featureClass:Rq;this.g=a.geometryName?a.geometryName:"geometry";this.a=a.layerName?a.layerName:"layer";this.f=a.layers?a.layers:null}w(Sq,Xm);Sq.prototype.X=function(){return"arraybuffer"}; -Sq.prototype.Fa=function(a,b){var c=this.f,d=new Nq(a),d=new Oq.aj(d),e=[],f=this.b,g,h,l;for(l in d.layers)if(!c||-1!=c.indexOf(l)){g=d.layers[l];for(var m=0,n=g.length;me?~(e<<1):e<<1;c="";d=0;for(e=a.length;d>=5;h+=String.fromCharCode(f+63);c+=h}return c} -function Tr(a,b){var c=b?b:1E5,d=[],e=0,f=0,g,h;g=0;for(h=a.length;gl?(d.push(e),f=e=0):f+=5}e=0;for(f=d.length;e>1):g>>1;e=0;for(f=d.length;e=b||"."==b||"-"==b){c.type=4;var d,b=a.b,e=!1,f=!1;do{if("."==d)e=!0;else if("e"==d||"E"==d)f=!0;d=a.a.charAt(++a.b)}while("0"<=d&&"9">=d||"."==d&&(void 0===e||!e)||!f&&("e"==d||"E"==d)||f&&("-"==d||"+"==d));a=parseFloat(a.a.substring(b,a.b--));c.value=a}else if("a"<=b&&"z">=b||"A"<=b&&"Z">=b){c.type=1;b=a.b;do d=a.a.charAt(++a.b);while("a"<=d&&"z">= -d||"A"<=d&&"Z">=d);a=a.a.substring(b,a.b--).toUpperCase();c.value=a}else{if(" "==b||"\t"==b||"\r"==b||"\n"==b)return ys(a);if(""===b)c.type=6;else throw Error("Unexpected character: "+b);}return c}function ws(a){this.a=a}k=ws.prototype;k.match=function(a){if(a=this.b.type==a)this.b=ys(this.a);return a}; -function zs(a){var b=a.b;if(a.match(1)){var c=b.value;if("GEOMETRYCOLLECTION"==c){a:{if(a.match(2)){b=[];do b.push(zs(a));while(a.match(5));if(a.match(3)){a=b;break a}}else if(As(a)){a=[];break a}throw Error(Bs(a));}return new qn(a)}var d=Cs[c],b=Ds[c];if(!d||!b)throw Error("Invalid geometry type: "+c);a=d.call(a);return new b(a)}throw Error(Bs(a));}k.Df=function(){if(this.match(2)){var a=Es(this);if(this.match(3))return a}else if(As(this))return null;throw Error(Bs(this));}; -k.Cf=function(){if(this.match(2)){var a=Fs(this);if(this.match(3))return a}else if(As(this))return[];throw Error(Bs(this));};k.Ef=function(){if(this.match(2)){var a=Gs(this);if(this.match(3))return a}else if(As(this))return[];throw Error(Bs(this));};k.eo=function(){if(this.match(2)){var a;if(2==this.b.type)for(a=[this.Df()];this.match(5);)a.push(this.Df());else a=Fs(this);if(this.match(3))return a}else if(As(this))return[];throw Error(Bs(this));}; -k.co=function(){if(this.match(2)){var a=Gs(this);if(this.match(3))return a}else if(As(this))return[];throw Error(Bs(this));};k.fo=function(){if(this.match(2)){for(var a=[this.Ef()];this.match(5);)a.push(this.Ef());if(this.match(3))return a}else if(As(this))return[];throw Error(Bs(this));};function Es(a){for(var b=[],c=0;2>c;++c){var d=a.b;if(a.match(4))b.push(d.value);else break}if(2==b.length)return b;throw Error(Bs(a));}function Fs(a){for(var b=[Es(a)];a.match(5);)b.push(Es(a));return b} -function Gs(a){for(var b=[a.Cf()];a.match(5);)b.push(a.Cf());return b}function As(a){var b=1==a.b.type&&"EMPTY"==a.b.value;b&&(a.b=ys(a.a));return b}function Bs(a){return"Unexpected `"+a.b.value+"` at position "+a.b.position+" in `"+a.a.a+"`"}var Ds={POINT:C,LINESTRING:P,POLYGON:D,MULTIPOINT:R,MULTILINESTRING:Q,MULTIPOLYGON:S},Cs={POINT:ws.prototype.Df,LINESTRING:ws.prototype.Cf,POLYGON:ws.prototype.Ef,MULTIPOINT:ws.prototype.eo,MULTILINESTRING:ws.prototype.co,MULTIPOLYGON:ws.prototype.fo};function Hs(){this.version=void 0}w(Hs,xr);Hs.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return this.b(a);return null};Hs.prototype.b=function(a){this.version=a.getAttribute("version").trim();return(a=O({version:this.version},Is,a,[]))?a:null};function Js(a,b){return O({},Ks,a,b)}function Ls(a,b){return O({},Ms,a,b)}function Ns(a,b){var c=Js(a,b);if(c){var d=[Kn(a.getAttribute("width")),Kn(a.getAttribute("height"))];c.size=d;return c}} -function Os(a,b){return O([],Ps,a,b)} -var Qs=[null,"http://www.opengis.net/wms"],Is=N(Qs,{Service:K(function(a,b){return O({},Rs,a,b)}),Capability:K(function(a,b){return O({},Ss,a,b)})}),Ss=N(Qs,{Request:K(function(a,b){return O({},Ts,a,b)}),Exception:K(function(a,b){return O([],Us,a,b)}),Layer:K(function(a,b){return O({},Vs,a,b)})}),Rs=N(Qs,{Name:K(T),Title:K(T),Abstract:K(T),KeywordList:K(Os),OnlineResource:K(wr),ContactInformation:K(function(a,b){return O({},Ws,a,b)}),Fees:K(T),AccessConstraints:K(T),LayerLimit:K(Jn),MaxWidth:K(Jn), -MaxHeight:K(Jn)}),Ws=N(Qs,{ContactPersonPrimary:K(function(a,b){return O({},Xs,a,b)}),ContactPosition:K(T),ContactAddress:K(function(a,b){return O({},Ys,a,b)}),ContactVoiceTelephone:K(T),ContactFacsimileTelephone:K(T),ContactElectronicMailAddress:K(T)}),Xs=N(Qs,{ContactPerson:K(T),ContactOrganization:K(T)}),Ys=N(Qs,{AddressType:K(T),Address:K(T),City:K(T),StateOrProvince:K(T),PostCode:K(T),Country:K(T)}),Us=N(Qs,{Format:Km(T)}),Vs=N(Qs,{Name:K(T),Title:K(T),Abstract:K(T),KeywordList:K(Os),CRS:Mm(T), -EX_GeographicBoundingBox:K(function(a,b){var c=O({},Zs,a,b);if(c){var d=c.westBoundLongitude,e=c.southBoundLatitude,f=c.eastBoundLongitude,c=c.northBoundLatitude;return void 0===d||void 0===e||void 0===f||void 0===c?void 0:[d,e,f,c]}}),BoundingBox:Mm(function(a){var b=[In(a.getAttribute("minx")),In(a.getAttribute("miny")),In(a.getAttribute("maxx")),In(a.getAttribute("maxy"))],c=[In(a.getAttribute("resx")),In(a.getAttribute("resy"))];return{crs:a.getAttribute("CRS"),extent:b,res:c}}),Dimension:Mm(function(a){return{name:a.getAttribute("name"), -units:a.getAttribute("units"),unitSymbol:a.getAttribute("unitSymbol"),"default":a.getAttribute("default"),multipleValues:Fn(a.getAttribute("multipleValues")),nearestValue:Fn(a.getAttribute("nearestValue")),current:Fn(a.getAttribute("current")),values:T(a)}}),Attribution:K(function(a,b){return O({},$s,a,b)}),AuthorityURL:Mm(function(a,b){var c=Js(a,b);if(c)return c.name=a.getAttribute("name"),c}),Identifier:Mm(T),MetadataURL:Mm(function(a,b){var c=Js(a,b);if(c)return c.type=a.getAttribute("type"), -c}),DataURL:Mm(Js),FeatureListURL:Mm(Js),Style:Mm(function(a,b){return O({},at,a,b)}),MinScaleDenominator:K(Hn),MaxScaleDenominator:K(Hn),Layer:Mm(function(a,b){var c=b[b.length-1],d=O({},Vs,a,b);if(d){var e=Fn(a.getAttribute("queryable"));void 0===e&&(e=c.queryable);d.queryable=void 0!==e?e:!1;e=Kn(a.getAttribute("cascaded"));void 0===e&&(e=c.cascaded);d.cascaded=e;e=Fn(a.getAttribute("opaque"));void 0===e&&(e=c.opaque);d.opaque=void 0!==e?e:!1;e=Fn(a.getAttribute("noSubsets"));void 0===e&&(e=c.noSubsets); -d.noSubsets=void 0!==e?e:!1;(e=In(a.getAttribute("fixedWidth")))||(e=c.fixedWidth);d.fixedWidth=e;(e=In(a.getAttribute("fixedHeight")))||(e=c.fixedHeight);d.fixedHeight=e;["Style","CRS","AuthorityURL"].forEach(function(a){a in c&&(d[a]=(d[a]||[]).concat(c[a]))});"EX_GeographicBoundingBox BoundingBox Dimension Attribution MinScaleDenominator MaxScaleDenominator".split(" ").forEach(function(a){a in d||(d[a]=c[a])});return d}})}),$s=N(Qs,{Title:K(T),OnlineResource:K(wr),LogoURL:K(Ns)}),Zs=N(Qs,{westBoundLongitude:K(Hn), -eastBoundLongitude:K(Hn),southBoundLatitude:K(Hn),northBoundLatitude:K(Hn)}),Ts=N(Qs,{GetCapabilities:K(Ls),GetMap:K(Ls),GetFeatureInfo:K(Ls)}),Ms=N(Qs,{Format:Mm(T),DCPType:Mm(function(a,b){return O({},bt,a,b)})}),bt=N(Qs,{HTTP:K(function(a,b){return O({},ct,a,b)})}),ct=N(Qs,{Get:K(Js),Post:K(Js)}),at=N(Qs,{Name:K(T),Title:K(T),Abstract:K(T),LegendURL:Mm(Ns),StyleSheetURL:K(Js),StyleURL:K(Js)}),Ks=N(Qs,{Format:K(T),OnlineResource:K(wr)}),Ps=N(Qs,{Keyword:Km(T)});function dt(a){a=a?a:{};this.g="http://mapserver.gis.umn.edu/mapserver";this.b=new Yn;this.c=a.layers?a.layers:null;zn.call(this)}w(dt,zn); -dt.prototype.nc=function(a,b){var c={};b&&za(c,Ym(this,a,b));var d=[c];a.setAttribute("namespaceURI",this.g);var e=a.localName,c=[];if(0!==a.childNodes.length){if("msGMLOutput"==e)for(var f=0,g=a.childNodes.length;f=b[0]||a[1]<=b[1]&&a[3]>=b[1]?!0:Xb(a,this.jb,this)):!1}; -k.em=function(a){var b=this.a,c=this.B[b]-this.B[0],d=a.slice();d[b]=d[0]+c;for(c=1;cf[2])&&(c=h*Math.ceil((f[0]-c)/h),d=[d[0]+c, -d[1],d[2]+c,d[3]]);c=this.s[0];f=this.s[1];h=-1;m=Math.pow(this.Ba*g,2);p=[];q=[];g=0;for(l=zt.length;gd;){if(600v-t/2?-1:1);f(a,b,Math.max(d,Math.floor(b-v*y/t+u)),Math.min(e,Math.floor(b+(t-v)*y/t+u)),q)}t=a[b];v=d;y=e;g(a,d,b);for(0q(a[v],t);)v++; -for(;0b?1:0}b.ja=f},{}],2:[function(a,b){function f(a,b){if(!(this instanceof f))return new f(a,b);this.Re=Math.max(4,a||9);this.gg=Math.max(2,Math.ceil(.4*this.Re));b&&this.ij(b);this.clear()}function g(a,b){h(a,0,a.children.length,b,a)}function h(a,b,d,e,f){f||(f=u(null));f.ca=Infinity;f.fa=Infinity;f.ea=-Infinity;f.ia=-Infinity;for(var g;b< -d;b++)g=a.children[b],l(f,a.Wa?e(g):g);return f}function l(a,b){a.ca=Math.min(a.ca,b.ca);a.fa=Math.min(a.fa,b.fa);a.ea=Math.max(a.ea,b.ea);a.ia=Math.max(a.ia,b.ia)}function m(a,b){return a.ca-b.ca}function n(a,b){return a.fa-b.fa}function p(a){return(a.ea-a.ca)*(a.ia-a.fa)}function q(a){return a.ea-a.ca+(a.ia-a.fa)}function t(a,b){return a.ca<=b.ca&&a.fa<=b.fa&&b.ea<=a.ea&&b.ia<=a.ia}function v(a,b){return b.ca<=a.ea&&b.fa<=a.ia&&b.ea>=a.ca&&b.ia>=a.fa}function u(a){return{children:a,height:1,Wa:!0, -ca:Infinity,fa:Infinity,ea:-Infinity,ia:-Infinity}}function y(a,b,d,e,f){for(var g=[b,d],h;g.length;)d=g.pop(),b=g.pop(),d-b<=e||(h=b+Math.ceil((d-b)/e/2)*e,E(a,h,b,d,f),g.push(b,h,h,d))}b.ja=f;var E=a("quickselect");f.prototype={all:function(){return this.bg(this.data,[])},search:function(a){var b=this.data,d=[],e=this.nb;if(!v(a,b))return d;for(var f=[],g,h,l,m;b;){g=0;for(h=b.children.length;gthis.Re)this.oj(e,b),b--;else break;this.cj(d, -e,b)},oj:function(a,b){var d=a[b],e=d.children.length,f=this.gg;this.dj(d,f,e);e=this.ej(d,f,e);e=u(d.children.splice(e,d.children.length-e));e.height=d.height;e.Wa=d.Wa;g(d,this.nb);g(e,this.nb);b?a[b-1].children.push(e):this.ig(d,e)},ig:function(a,b){this.data=u([a,b]);this.data.height=a.height+1;this.data.Wa=!1;g(this.data,this.nb)},ej:function(a,b,d){var e,f,g,l,m,n,q;m=n=Infinity;for(e=b;e<=d-b;e++)f=h(a,0,e,this.nb),g=h(a,e,d,this.nb),l=Math.max(0,Math.min(f.ea,g.ea)-Math.max(f.ca,g.ca))*Math.max(0, -Math.min(f.ia,g.ia)-Math.max(f.fa,g.fa)),f=p(f)+p(g),l=b;n--)p=a.children[n],l(g,a.Wa?e(p):p),m+=q(g);return m},cj:function(a,b,d){for(;0<=d;d--)l(b[d],a)}, -gj:function(a){for(var b=a.length-1,d;0<=b;b--)0===a[b].children.length?0a.Ia:a.c===hu&&(d=a.a[0].length>a.Ia,e=[a.a[0][0],a.a[0][a.a[0].length-2]]);if(d)for(var d=b.map,f=0,g=e.length;fa.Ha,a.D(f,d);else if(a.c===hu){f=a.a[0];f.push(c.slice());if(e=f.length>a.Ha)a.s=f[0];a.D(a.a,d)}qu(a);e&&a.jd()}k.No=function(){var a=this.o.Y(),b,c;this.c===ju?(b=this.a,b.splice(-2,1),this.D(b,a)):this.c===hu&&(b=this.a[0],b.splice(-2,1),c=this.A.Y(),c.sa(b),this.D(this.a,a));0===b.length&&(this.s=null);qu(this)}; -k.jd=function(){var a=ru(this),b=this.a,c=a.Y();this.c===ju?(b.pop(),this.D(b,c)):this.c===hu&&(b[0].pop(),b[0].push(b[0][0]),this.D(b,c));"MultiPoint"===this.W?a.Xa(new R([b])):"MultiLineString"===this.W?a.Xa(new Q([b])):"MultiPolygon"===this.W&&a.Xa(new S([b]));this.b(new bu("drawend",a));this.sb&&this.sb.push(a);this.Mb&&this.Mb.ub(a)};function ru(a){a.s=null;var b=a.o;b&&(a.o=null,a.O=null,a.A=null,a.na.ga().clear(!0));return b} -k.mm=function(a){var b=a.Y();this.o=a;this.a=b.Z();a=this.a[this.a.length-1];this.s=a.slice();this.a.push(a.slice());qu(this);this.b(new bu("drawstart",this.o))};k.Ec=oc;function qu(a){var b=[];a.o&&b.push(a.o);a.A&&b.push(a.A);a.O&&b.push(a.O);a=a.na.ga();a.clear(!0);a.Hc(b)}k.vi=function(){var a=this.v,b=this.f();a&&b||ru(this);this.na.setMap(b?a:null)}; -function gu(a){var b;"Point"===a||"MultiPoint"===a?b=iu:"LineString"===a||"MultiLineString"===a?b=ju:"Polygon"===a||"MultiPolygon"===a?b=hu:"Circle"===a&&(b=ou);return b}var iu="Point",ju="LineString",hu="Polygon",ou="Circle";function su(a,b,c){Pa.call(this,a);this.features=b;this.mapBrowserEvent=c}w(su,Pa); -function tu(a){Qh.call(this,{handleDownEvent:uu,handleDragEvent:vu,handleEvent:wu,handleUpEvent:xu});this.tb=a.condition?a.condition:Ph;this.Ia=function(a){return Lh(a)&&Kh(a)};this.sb=a.deleteCondition?a.deleteCondition:this.Ia;this.Ha=this.c=null;this.na=[0,0];this.D=this.T=!1;this.a=new Pt;this.O=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.s=this.za=!1;this.o=[];this.R=new F({source:new U({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.style?a.style:yu(),updateWhileAnimating:!0,updateWhileInteracting:!0}); -this.pa={Point:this.tm,LineString:this.hh,LinearRing:this.hh,Polygon:this.um,MultiPoint:this.rm,MultiLineString:this.qm,MultiPolygon:this.sm,GeometryCollection:this.pm};this.A=a.features;this.A.forEach(this.wf,this);B(this.A,ue,this.nm,this);B(this.A,ve,this.om,this);this.W=null}w(tu,Qh);k=tu.prototype;k.wf=function(a){var b=a.Y();b&&b.X()in this.pa&&this.pa[b.X()].call(this,a,b);(b=this.v)&&zu(this,this.na,b);B(a,"change",this.gh,this)}; -function Au(a,b){a.D||(a.D=!0,a.b(new su("modifystart",a.A,b)))}function Bu(a,b){Cu(a,b);a.c&&0===a.A.gc()&&(a.R.ga().pb(a.c),a.c=null);Ka(b,"change",a.gh,a)}function Cu(a,b){var c=a.a,d=[];c.forEach(function(a){b===a.feature&&d.push(a)});for(var e=d.length-1;0<=e;--e)c.remove(d[e])}k.setMap=function(a){this.R.setMap(a);Qh.prototype.setMap.call(this,a)};k.nm=function(a){this.wf(a.element)};k.gh=function(a){this.s||(a=a.target,Bu(this,a),this.wf(a))};k.om=function(a){Bu(this,a.element)}; -k.tm=function(a,b){var c=b.Z(),c={feature:a,geometry:b,qa:[c,c]};this.a.Ca(b.C(),c)};k.rm=function(a,b){var c=b.Z(),d,e,f;e=0;for(f=c.length;ec?g[1]:g[0]);Du(a,h);c={};c[x(g)]=!0;b=1;for(l=f.length;bl&&(l=0);c=n.geometry;e=f=c.Z();d=!1;switch(c.X()){case "MultiLineString":2c&&(a.index+=e)})}function yu(){var a=dj();return function(){return a.Point}};function Gu(a,b,c,d){Pa.call(this,a);this.selected=b;this.deselected=c;this.mapBrowserEvent=d}w(Gu,Pa); -function Hu(a){Bh.call(this,{handleEvent:Iu});a=a?a:{};this.H=a.condition?a.condition:Kh;this.A=a.addCondition?a.addCondition:oc;this.D=a.removeCondition?a.removeCondition:oc;this.O=a.toggleCondition?a.toggleCondition:Mh;this.o=a.multi?a.multi:!1;this.j=a.filter?a.filter:nc;this.c=new F({source:new U({useSpatialIndex:!1,features:a.features,wrapX:a.wrapX}),style:a.style?a.style:Ju(),updateWhileAnimating:!0,updateWhileInteracting:!0});if(a.layers)if("function"===typeof a.layers)a=a.layers;else{var b= -a.layers;a=function(a){return bb(b,a)}}else a=nc;this.s=a;this.a={};a=this.c.ga().c;B(a,ue,this.vm,this);B(a,ve,this.ym,this)}w(Hu,Bh);k=Hu.prototype;k.wm=function(){return this.c.ga().c};k.xm=function(a){la(a instanceof Am,42);a=x(a);return this.a[a]}; -function Iu(a){if(!this.H(a))return!0;var b=this.A(a),c=this.D(a),d=this.O(a),e=!b&&!c&&!d,f=a.map,g=this.c.ga().c,h=[],l=[];if(e)Aa(this.a),f.Rd(a.pixel,function(a,b){if(this.j(a,b)){l.push(a);var c=x(a);this.a[c]=b;return!this.o}},this,this.s),0d?g[1]:g[0],c=b.Ga(l)}else this.T&&(l=vb(e,g),c=b.Ga(l),Math.sqrt(Ab(d,c))<=this.c&&(f=!0,this.na&&(e=b.Ga(g[0]),h=b.Ga(g[1]),e=Ab(c,e),d=Ab(c,h),h=Math.sqrt(Math.min(e, -d)),h=h<=this.c)))&&(l=e>d?g[1]:g[0],c=b.Ga(l));f&&(c=[Math.round(c[0]),Math.round(c[1])])}b=l;f&&(a.coordinate=b.slice(0,2),a.pixel=c);return Rh.call(this,a)}function Mu(){var a=Ba(this.A);a.length&&(a.forEach(this.ui,this),this.A={});return!1}function Nu(a,b){return Bb(this.R,a.qa)-Bb(this.R,b.qa)};function Ou(a,b,c){Pa.call(this,a);this.features=b;this.coordinate=c}w(Ou,Pa);function Pu(a){Qh.call(this,{handleDownEvent:Qu,handleDragEvent:Ru,handleMoveEvent:Su,handleUpEvent:Tu});this.s=void 0;this.a=null;this.c=void 0!==a.features?a.features:null;if(a.layers)if("function"===typeof a.layers)a=a.layers;else{var b=a.layers;a=function(a){return bb(b,a)}}else a=nc;this.A=a;this.o=null}w(Pu,Qh); -function Qu(a){this.o=Uu(this,a.pixel,a.map);return!this.a&&this.o?(this.a=a.coordinate,Su.call(this,a),this.b(new Ou("translatestart",this.c,a.coordinate)),!0):!1}function Tu(a){return this.a?(this.a=null,Su.call(this,a),this.b(new Ou("translateend",this.c,a.coordinate)),!0):!1} -function Ru(a){if(this.a){a=a.coordinate;var b=a[0]-this.a[0],c=a[1]-this.a[1];if(this.c)this.c.forEach(function(a){var d=a.Y();d.Qc(b,c);a.Xa(d)});else if(this.o){var d=this.o.Y();d.Qc(b,c);this.o.Xa(d)}this.a=a;this.b(new Ou("translating",this.c,a))}}function Su(a){var b=a.map.xc();Uu(this,a.pixel,a.map)?(this.s=b.style.cursor,b.style.cursor=this.a?"-webkit-grabbing":"-webkit-grab",b.style.cursor=this.a?"grabbing":"grab"):(b.style.cursor=void 0!==this.s?this.s:"",this.s=void 0)} -function Uu(a,b,c){var d=null;b=c.Rd(b,function(a){return a},a,a.A);a.c&&bb(a.c.a,b)&&(d=b);return d};function V(a){a=a?a:{};var b=za({},a);delete b.gradient;delete b.radius;delete b.blur;delete b.shadow;delete b.weight;F.call(this,b);this.f=null;this.ha=void 0!==a.shadow?a.shadow:250;this.W=void 0;this.c=null;B(this,Za("gradient"),this.Ik,this);this.fi(a.gradient?a.gradient:Vu);this.ai(void 0!==a.blur?a.blur:15);this.nh(void 0!==a.radius?a.radius:8);B(this,Za("blur"),this.kf,this);B(this,Za("radius"),this.kf,this);this.kf();var c=a.weight?a.weight:"weight",d;"string"===typeof c?d=function(a){return a.get(c)}: -d=c;this.l(function(a){a=d(a);a=void 0!==a?ma(a,0,1):1;var b=255*a|0,c=this.c[b];c||(c=[new Zi({image:new Qo({opacity:a,src:this.W})})],this.c[b]=c);return c}.bind(this));this.set("renderOrder",null);B(this,"render",this.Zk,this)}w(V,F);var Vu=["#00f","#0ff","#0f0","#ff0","#f00"];k=V.prototype;k.xg=function(){return this.get("blur")};k.Eg=function(){return this.get("gradient")};k.mh=function(){return this.get("radius")}; -k.Ik=function(){for(var a=this.Eg(),b=$e(1,256),c=b.createLinearGradient(0,0,1,256),d=1/(a.length-1),e=0,f=a.length;e=d)this.state=4;else if(this.A=new pk(a,c,f,e,d*(void 0!==m?m:.5)),0===this.A.f.length)this.state=4;else if(this.s=b.ec(d),c=rk(this.A),e&&(a.a?(c[1]=ma(c[1], -e[1],e[3]),c[3]=ma(c[3],e[1],e[3])):c=jc(c,e)),cc(c)){a=ge(b,c,this.s);for(b=a.ca;b<=a.ea;b++)for(c=a.fa;c<=a.ia;c++)(m=l(this.s,b,c,g))&&this.g.push(m);0===this.g.length&&(this.state=4)}else this.state=4}w(Xu,qh);Xu.prototype.ma=function(){1==this.state&&(this.Vc.forEach(Ea),this.Vc=null);qh.prototype.ma.call(this)};Xu.prototype.ab=function(a){if(void 0!==a){var b=x(a);if(b in this.c)return this.c[b];a=Ca(this.c)?this.l:this.l.cloneNode(!1);return this.c[b]=a}return this.l}; -Xu.prototype.yd=function(){var a=[];this.g.forEach(function(b){b&&2==b.V()&&a.push({extent:this.o.Ea(b.oa),image:b.ab()})},this);this.g.length=0;if(0===a.length)this.state=3;else{var b=this.U[0],c=this.v.Qa(b),d="number"===typeof c?c:c[0],c="number"===typeof c?c:c[1],b=this.v.$(b),e=this.o.$(this.s),f=this.v.Ea(this.U);this.l=ok(d,c,this.D,e,this.o.C(),b,f,this.A,a,this.H,this.O);this.state=2}rh(this)}; -Xu.prototype.load=function(){if(0==this.state){this.state=1;rh(this);var a=0;this.Vc=[];this.g.forEach(function(b){var c=b.V();if(0==c||1==c){a++;var d;d=B(b,"change",function(){var c=b.V();if(2==c||3==c||4==c)Ea(d),a--,0===a&&(this.Vc.forEach(Ea),this.Vc=null,this.yd())},this);this.Vc.push(d)}},this);this.g.forEach(function(a){0==a.V()&&a.load()});0===a&&ja.setTimeout(this.yd.bind(this),0)}};function Yu(a,b){var c=/\{z\}/g,d=/\{x\}/g,e=/\{y\}/g,f=/\{-y\}/g;return function(g){if(g)return a.replace(c,g[0].toString()).replace(d,g[1].toString()).replace(e,function(){return(-g[2]-1).toString()}).replace(f,function(){var a=b.a?b.a[g[0]]:null;la(a,55);return(a.ia-a.fa+1+g[2]).toString()})}}function Zu(a,b){for(var c=a.length,d=Array(c),e=0;ea.c}cv.prototype.Jc=function(a){for(var b,c;dv(this);){b=this.a.Fc;c=b.oa[0].toString();var d;if(d=c in a)b=b.oa,d=Wd(a[c],b[1],b[2]);if(d)break;else Oa(this.pop())}};function ev(a){Tg.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state,wrapX:a.wrapX});this.ha=void 0!==a.opaque?a.opaque:!1;this.na=void 0!==a.tilePixelRatio?a.tilePixelRatio:1;this.tileGrid=void 0!==a.tileGrid?a.tileGrid:null;this.a=new cv(a.cacheSize);this.j=[0,0];this.fc=""}w(ev,Tg);k=ev.prototype;k.xh=function(){return dv(this.a)};k.Jc=function(a,b){var c=this.od(a);c&&c.Jc(b)}; -function uj(a,b,c,d,e){b=a.od(b);if(!b)return!1;for(var f=!0,g,h,l=d.ca;l<=d.ea;++l)for(var m=d.fa;m<=d.ia;++m)g=a.Ib(c,l,m),h=!1,b.b.hasOwnProperty(g)&&(g=b.get(g),(h=2===g.V())&&(h=!1!==e(g))),h||(f=!1);return f}k.Ud=function(){return 0};function fv(a,b){a.fc!==b&&(a.fc=b,a.u())}k.Ib=function(a,b,c){return a+"/"+b+"/"+c};k.gf=function(){return this.ha};k.Pa=function(){return this.tileGrid};k.fb=function(a){return this.tileGrid?this.tileGrid:me(a)}; -k.od=function(a){var b=this.f;return b&&!Lc(b,a)?null:this.a};k.zb=function(){return this.na};k.jf=function(a,b,c){c=this.fb(c);b=this.zb(b);a=ae(c.Qa(a),this.j);return 1==b?a:$d(a,b,this.j)};function gv(a,b,c){var d=void 0!==c?c:a.f;c=a.fb(d);if(a.D&&d.g){var e=b;b=e[0];a=le(c,e);d=ne(d);Lb(d,a)?b=e:(e=ec(d),a[0]+=e*Math.ceil((d[0]-a[0])/e),b=c.pd(a,b))}e=b[0];d=b[1];a=b[2];if(c.minZoom>e||e>c.maxZoom)c=!1;else{var f=c.C();c=(c=f?ge(c,f,e):c.a?c.a[e]:null)?Wd(c,d,a):!0}return c?b:null} -k.va=function(){this.a.clear();this.u()};k.Xf=ha;function hv(a,b){Pa.call(this,a);this.tile=b}w(hv,Pa);function iv(a){ev.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tilePixelRatio:a.tilePixelRatio,wrapX:a.wrapX});this.tileLoadFunction=a.tileLoadFunction;this.tileUrlFunction=this.vc?this.vc.bind(this):av;this.urls=null;a.urls?this.Ua(a.urls):a.url&&this.Za(a.url);a.tileUrlFunction&&this.Ta(a.tileUrlFunction)}w(iv,ev);k=iv.prototype;k.gb=function(){return this.tileLoadFunction}; -k.hb=function(){return this.tileUrlFunction};k.ib=function(){return this.urls};k.yh=function(a){a=a.target;switch(a.V()){case 1:this.b(new hv("tileloadstart",a));break;case 2:this.b(new hv("tileloadend",a));break;case 3:this.b(new hv("tileloaderror",a))}};k.mb=function(a){this.a.clear();this.tileLoadFunction=a;this.u()};k.Ta=function(a,b){this.tileUrlFunction=a;"undefined"!==typeof b?fv(this,b):this.u()}; -k.Za=function(a){var b=this.urls=bv(a);this.Ta(this.vc?this.vc.bind(this):Zu(b,this.tileGrid),a)};k.Ua=function(a){this.urls=a;var b=a.join("\n");this.Ta(this.vc?this.vc.bind(this):Zu(a,this.tileGrid),b)};k.Xf=function(a,b,c){a=this.Ib(a,b,c);this.a.b.hasOwnProperty(a)&&this.a.get(a)};function W(a){iv.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:jv,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,wrapX:a.wrapX});this.crossOrigin=void 0!==a.crossOrigin?a.crossOrigin:null;this.tileClass=void 0!==a.tileClass?a.tileClass:Dt;this.i={};this.s={};this.pa=a.reprojectionErrorThreshold; -this.H=!1}w(W,iv);k=W.prototype;k.xh=function(){if(dv(this.a))return!0;for(var a in this.i)if(dv(this.i[a]))return!0;return!1};k.Jc=function(a,b){var c=this.od(a);this.a.Jc(this.a==c?b:{});for(var d in this.i){var e=this.i[d];e.Jc(e==c?b:{})}};k.Ud=function(a){return this.f&&a&&!Lc(this.f,a)?0:this.ef()};k.ef=function(){return 0};k.gf=function(a){return this.f&&a&&!Lc(this.f,a)?!1:iv.prototype.gf.call(this,a)}; -k.fb=function(a){var b=this.f;return!this.tileGrid||b&&!Lc(b,a)?(b=x(a).toString(),b in this.s||(this.s[b]=me(a)),this.s[b]):this.tileGrid};k.od=function(a){var b=this.f;if(!b||Lc(b,a))return this.a;a=x(a).toString();a in this.i||(this.i[a]=new cv);return this.i[a]};function kv(a,b,c,d,e,f,g){b=[b,c,d];e=(c=gv(a,b,f))?a.tileUrlFunction(c,e,f):void 0;e=new a.tileClass(b,void 0!==e?0:4,void 0!==e?e:"",a.crossOrigin,a.tileLoadFunction);e.key=g;B(e,"change",a.yh,a);return e} -k.dc=function(a,b,c,d,e){if(this.f&&e&&!Lc(this.f,e)){var f=this.od(e);c=[a,b,c];var g;a=this.Ib.apply(this,c);f.b.hasOwnProperty(a)&&(g=f.get(a));b=this.fc;if(g&&g.key==b)return g;var h=this.f,l=this.fb(h),m=this.fb(e),n=gv(this,c,e);d=new Xu(h,l,e,m,c,n,this.zb(d),this.ef(),function(a,b,c,d){return lv(this,a,b,c,d,h)}.bind(this),this.pa,this.H);d.key=b;g?(d.a=g,f.replace(a,d)):f.set(a,d);return d}return lv(this,a,b,c,d,e)}; -function lv(a,b,c,d,e,f){var g,h=a.Ib(b,c,d),l=a.fc;if(a.a.b.hasOwnProperty(h)){if(g=a.a.get(h),g.key!=l){var m=g;g.a&&g.a.key==l?(g=g.a,2==m.V()&&(g.a=m)):(g=kv(a,b,c,d,e,f,l),2==m.V()?g.a=m:m.a&&2==m.a.V()&&(g.a=m.a,m.a=null));g.a&&(g.a.a=null);a.a.replace(h,g)}}else g=kv(a,b,c,d,e,f,l),a.a.set(h,g);return g}k.Db=function(a){if(this.H!=a){this.H=a;for(var b in this.i)this.i[b].clear();this.u()}};k.Eb=function(a,b){var c=vc(a);c&&(c=x(c).toString(),c in this.s||(this.s[c]=b))}; -function jv(a,b){a.ab().src=b};function mv(a){W.call(this,{cacheSize:a.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:vc("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.o=void 0!==a.culture?a.culture:"en-us";this.c=void 0!==a.maxZoom?a.maxZoom:-1;Wu("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+a.imagerySet+"?uriScheme=https&include=ImageryProviders&key="+a.key,this.v.bind(this),void 0,"jsonp")} -w(mv,W);var nv=new qe({html:'Terms of Use'}); -mv.prototype.v=function(a){if(200!=a.statusCode||"OK"!=a.statusDescription||"ValidCredentials"!=a.authenticationResultCode||1!=a.resourceSets.length||1!=a.resourceSets[0].resources.length)Vg(this,"error");else{var b=a.brandLogoUri;-1==b.indexOf("https")&&(b=b.replace("http","https"));var c=a.resourceSets[0].resources[0],d=-1==this.c?c.zoomMax:this.c;a=ne(this.f);var e=pe({extent:a,minZoom:c.zoomMin,maxZoom:d,tileSize:c.imageWidth==c.imageHeight?c.imageWidth:[c.imageWidth,c.imageHeight]});this.tileGrid= -e;var f=this.o;this.tileUrlFunction=$u(c.imageUrlSubdomains.map(function(a){var b=[0,0,0],d=c.imageUrl.replace("{subdomain}",a).replace("{culture}",f);return function(a){if(a)return be(a[0],a[1],-a[2]-1,b),d.replace("{quadkey}",ce(b))}}));if(c.imageryProviders){var g=yc(vc("EPSG:4326"),this.f);a=c.imageryProviders.map(function(a){var b=a.attribution,c={};a.coverageAreas.forEach(function(a){var b=a.zoomMin,f=Math.min(a.zoomMax,d);a=a.bbox;a=mc([a[1],a[0],a[3],a[2]],g);var h,l;for(h=b;h<=f;++h)l=h.toString(), -b=ge(e,a,h),l in c?c[l].push(b):c[l]=[b]});return new qe({html:b,tileRanges:c})});a.push(nv);this.ra(a)}this.O=b;Vg(this,"ready")}};function ov(a){a=a||{};var b=void 0!==a.projection?a.projection:"EPSG:3857",c=void 0!==a.tileGrid?a.tileGrid:pe({extent:ne(b),maxZoom:a.maxZoom,minZoom:a.minZoom,tileSize:a.tileSize});W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:a.opaque,projection:b,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:c,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls, -wrapX:void 0!==a.wrapX?a.wrapX:!0})}w(ov,W);function pv(a){this.v=a.account;this.A=a.map||"";this.c=a.config||{};this.o={};ov.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,maxZoom:void 0!==a.maxZoom?a.maxZoom:18,minZoom:a.minZoom,projection:a.projection,state:"loading",wrapX:a.wrapX});qv(this)}w(pv,ov);k=pv.prototype;k.Qj=function(){return this.c};k.rp=function(a){za(this.c,a);qv(this)};k.Xo=function(a){this.c=a||{};qv(this)}; -function qv(a){var b=JSON.stringify(a.c);if(a.o[b])rv(a,a.o[b]);else{var c="https://"+a.v+".cartodb.com/api/v1/map";a.A&&(c+="/named/"+a.A);var d=new XMLHttpRequest;d.addEventListener("load",a.Kk.bind(a,b));d.addEventListener("error",a.Jk.bind(a));d.open("POST",c);d.setRequestHeader("Content-type","application/json");d.send(JSON.stringify(a.c))}} -k.Kk=function(a,b){var c=b.target;if(!c.status||200<=c.status&&300>c.status){var d;try{d=JSON.parse(c.responseText)}catch(e){Vg(this,"error");return}rv(this,d);this.o[a]=d;Vg(this,"ready")}else Vg(this,"error")};k.Jk=function(){Vg(this,"error")};function rv(a,b){a.Za("https://"+b.cdn_url.https+"/"+a.v+"/api/v1/map/"+b.layergroupid+"/{z}/{x}/{y}.png")};function Y(a){U.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,wrapX:a.wrapX});this.H=void 0;this.pa=void 0!==a.distance?a.distance:20;this.A=[];this.za=a.geometryFunction||function(a){a=a.Y();la(a instanceof C,10);return a};this.v=a.source;this.v.I("change",Y.prototype.Ia,this)}w(Y,U);Y.prototype.sb=function(){return this.v};Y.prototype.Nc=function(a,b,c){this.v.Nc(a,b,c);b!==this.H&&(this.clear(),this.H=b,sv(this),this.Hc(this.A))}; -Y.prototype.tb=function(a){this.pa=a;this.Ia()};Y.prototype.Ia=function(){this.clear();sv(this);this.Hc(this.A);this.u()};function sv(a){if(void 0!==a.H){a.A.length=0;for(var b=Eb(),c=a.pa*a.H,d=a.v.me(),e={},f=0,g=d.length;fm*l?h*g/(m*p):l*g/(n*p),SETVIEWCENTERX:f[0],SETVIEWCENTERY:f[1]};za(e,this.j);d=uv(d,e);d=new Ct(a,b,c,this.l,d,this.W,this.c);B(d,"change",this.o,this)}else d=null;this.i=d;this.R=this.g;return d};k.Sm=function(){return this.c};k.Vm=function(a){za(this.j,a);this.u()};k.Um=function(a){this.i=null;this.c=a;this.u()};function xv(a){var b=a.imageExtent,c=void 0!==a.crossOrigin?a.crossOrigin:null,d=void 0!==a.imageLoadFunction?a.imageLoadFunction:zk;tk.call(this,{attributions:a.attributions,logo:a.logo,projection:vc(a.projection)});this.c=new Ct(b,void 0,1,this.l,a.url,c,d);this.i=a.imageSize?a.imageSize:null;B(this.c,"change",this.o,this)}w(xv,tk);xv.prototype.Kc=function(a){return kc(a,this.c.C())?this.c:null}; -xv.prototype.o=function(a){if(2==this.c.V()){var b=this.c.C(),c=this.c.a(),d,e;this.i?(d=this.i[0],e=this.i[1]):(d=c.width,e=c.height);b=Math.ceil(ec(b)/(fc(b)/e));if(b!=d){var b=$e(b,e),f=b.canvas;b.drawImage(c,0,0,d,e,0,0,f.width,f.height);this.c.g=f}}tk.prototype.o.call(this,a)};function yv(a){a=a||{};tk.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions});this.na=void 0!==a.crossOrigin?a.crossOrigin:null;this.j=a.url;this.R=void 0!==a.imageLoadFunction?a.imageLoadFunction:zk;this.i=a.params||{};this.v=!0;zv(this);this.ha=a.serverType;this.za=void 0!==a.hidpi?a.hidpi:!0;this.c=null;this.T=[0,0];this.W=0;this.s=void 0!==a.ratio?a.ratio:1.5}w(yv,tk);var Av=[101,101];k=yv.prototype; -k.an=function(a,b,c,d){if(void 0!==this.j){var e=ic(a,b,0,Av),f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.i.LAYERS};za(f,this.i,d);d=Math.floor((e[3]-a[1])/b);f[this.v?"I":"X"]=Math.floor((a[0]-e[0])/b);f[this.v?"J":"Y"]=d;return Bv(this,e,Av,1,vc(c),f)}};k.cn=function(){return this.i}; -k.Kc=function(a,b,c,d){if(void 0===this.j)return null;b=uk(this,b);1==c||this.za&&void 0!==this.ha||(c=1);a=a.slice();var e=(a[0]+a[2])/2,f=(a[1]+a[3])/2,g=b/c,h=ec(a)/g,g=fc(a)/g,l=this.c;if(l&&this.W==this.g&&l.$()==b&&l.f==c&&Nb(l.C(),a))return l;if(1!=this.s){var l=this.s*ec(a)/2,m=this.s*fc(a)/2;a[0]=e-l;a[1]=f-m;a[2]=e+l;a[3]=f+m}e={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};za(e,this.i);this.T[0]=Math.ceil(h*this.s);this.T[1]=Math.ceil(g*this.s);d=Bv(this, -a,this.T,c,d,e);this.c=new Ct(a,b,c,this.l,d,this.na,this.R);this.W=this.g;B(this.c,"change",this.o,this);return this.c};k.bn=function(){return this.R}; -function Bv(a,b,c,d,e,f){la(void 0!==a.j,9);f[a.v?"CRS":"SRS"]=e.eb;"STYLES"in a.i||(f.STYLES="");if(1!=d)switch(a.ha){case "geoserver":d=90*d+.5|0;f.FORMAT_OPTIONS="FORMAT_OPTIONS"in f?f.FORMAT_OPTIONS+(";dpi:"+d):"dpi:"+d;break;case "mapserver":f.MAP_RESOLUTION=90*d;break;case "carmentaserver":case "qgis":f.DPI=90*d;break;default:la(!1,8)}f.WIDTH=c[0];f.HEIGHT=c[1];c=e.b;var g;a.v&&"ne"==c.substr(0,2)?g=[b[1],b[0],b[3],b[2]]:g=b;f.BBOX=g.join(",");return uv(a.j,f)}k.dn=function(){return this.j}; -k.en=function(a){this.c=null;this.R=a;this.u()};k.fn=function(a){a!=this.j&&(this.j=a,this.c=null,this.u())};k.gn=function(a){za(this.i,a);zv(this);this.c=null;this.u()};function zv(a){a.v=0<=tb(a.i.VERSION||"1.3.0")};function Cv(a){a=a||{};var b;void 0!==a.attributions?b=a.attributions:b=[Dv];ov.call(this,{attributions:b,cacheSize:a.cacheSize,crossOrigin:void 0!==a.crossOrigin?a.crossOrigin:"anonymous",opaque:void 0!==a.opaque?a.opaque:!0,maxZoom:void 0!==a.maxZoom?a.maxZoom:19,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:a.wrapX})}w(Cv,ov);var Dv=new qe({html:'© OpenStreetMap contributors.'});(function(){var a={},b={ja:a};(function(c){if("object"===typeof a&&"undefined"!==typeof b)b.ja=c();else{var d;"undefined"!==typeof window?d=window:"undefined"!==typeof global?d=global:"undefined"!==typeof self?d=self:d=this;d.Op=c()}})(function(){return function d(a,b,g){function h(m,p){if(!b[m]){if(!a[m]){var q="function"==typeof require&&require;if(!p&&q)return q(m,!0);if(l)return l(m,!0);q=Error("Cannot find module '"+m+"'");throw q.code="MODULE_NOT_FOUND",q;}q=b[m]={ja:{}};a[m][0].call(q.ja,function(b){var d= -a[m][1][b];return h(d?d:b)},q,q.ja,d,a,b,g)}return b[m].ja}for(var l="function"==typeof require&&require,m=0;mthis.kj;)this.$c.shift().pg(null,null)};l.prototype.eg=function(){if(0===this.Id&&0Stamen Design, under CC BY 3.0.'}),Dv];function Qv(a){a=a||{};W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.c=a.params||{};this.o=Eb()}w(Qv,W);Qv.prototype.v=function(){return this.c};Qv.prototype.zb=function(a){return a}; -Qv.prototype.vc=function(a,b,c){var d=this.tileGrid;d||(d=this.fb(c));if(!(d.b.length<=a[0])){var e=d.Ea(a,this.o),f=ae(d.Qa(a[0]),this.j);1!=b&&(f=$d(f,b,this.j));d={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};za(d,this.c);var g=this.urls;g?(c=c.eb.split(":").pop(),d.SIZE=f[0]+","+f[1],d.BBOX=e.join(","),d.BBOXSR=c,d.IMAGESR=c,d.DPI=Math.round(d.DPI?d.DPI*b:90*b),a=1==g.length?g[0]:g[ta((a[1]<a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.ke();return}this.vh(b)}else this.ke()};k.hn=function(){this.ke()};k.xk=function(){return this.c}; -k.vh=function(a){var b=vc("EPSG:4326"),c=this.f,d;if(void 0!==a.bounds){var e=yc(b,c);d=mc(a.bounds,e)}var f=a.minzoom||0,e=a.maxzoom||22;this.tileGrid=c=pe({extent:ne(c),maxZoom:e,minZoom:f});this.tileUrlFunction=Zu(a.tiles,c);if(void 0!==a.attribution&&!this.l){b=void 0!==d?d:b.C();d={};for(var g;f<=e;++f)g=f.toString(),d[g]=[ge(c,b,f)];this.ra([new qe({html:a.attribution,tileRanges:d})])}this.c=a;Vg(this,"ready")};k.ke=function(){Vg(this,"error")};function Uv(a){ev.call(this,{projection:vc("EPSG:3857"),state:"loading"});this.s=void 0!==a.preemptive?a.preemptive:!0;this.o=av;this.i=void 0;this.c=a.jsonp||!1;if(a.url)if(this.c)Wu(a.url,this.Af.bind(this),this.le.bind(this));else{var b=new XMLHttpRequest;b.addEventListener("load",this.nn.bind(this));b.addEventListener("error",this.mn.bind(this));b.open("GET",a.url);b.send()}else a.tileJSON?this.Af(a.tileJSON):la(!1,51)}w(Uv,ev);k=Uv.prototype; -k.nn=function(a){a=a.target;if(!a.status||200<=a.status&&300>a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.le();return}this.Af(b)}else this.le()};k.mn=function(){this.le()};k.uk=function(){return this.i};k.Fj=function(a,b,c,d,e){this.tileGrid?(b=this.tileGrid.Yd(a,b),Vv(this.dc(b[0],b[1],b[2],1,this.f),a,c,d,e)):!0===e?Af(function(){c.call(d,null)}):c.call(d,null)};k.le=function(){Vg(this,"error")}; -k.Af=function(a){var b=vc("EPSG:4326"),c=this.f,d;if(void 0!==a.bounds){var e=yc(b,c);d=mc(a.bounds,e)}var f=a.minzoom||0,e=a.maxzoom||22;this.tileGrid=c=pe({extent:ne(c),maxZoom:e,minZoom:f});this.i=a.template;var g=a.grids;if(g){this.o=Zu(g,c);if(void 0!==a.attribution){b=void 0!==d?d:b.C();for(d={};f<=e;++f)g=f.toString(),d[g]=[ge(c,b,f)];this.ra([new qe({html:a.attribution,tileRanges:d})])}Vg(this,"ready")}else Vg(this,"error")}; -k.dc=function(a,b,c,d,e){var f=this.Ib(a,b,c);if(this.a.b.hasOwnProperty(f))return this.a.get(f);a=[a,b,c];b=gv(this,a,e);d=this.o(b,d,e);d=new Wv(a,void 0!==d?0:4,void 0!==d?d:"",this.tileGrid.Ea(a),this.s,this.c);this.a.set(f,d);return d};k.Xf=function(a,b,c){a=this.Ib(a,b,c);this.a.b.hasOwnProperty(a)&&this.a.get(a)};function Wv(a,b,c,d,e,f){qh.call(this,a,b);this.s=c;this.g=d;this.U=e;this.c=this.o=this.l=null;this.v=f}w(Wv,qh);k=Wv.prototype;k.ab=function(){return null}; -k.getData=function(a){if(!this.l||!this.o)return null;var b=this.l[Math.floor((1-(a[1]-this.g[1])/(this.g[3]-this.g[1]))*this.l.length)];if("string"!==typeof b)return null;b=b.charCodeAt(Math.floor((a[0]-this.g[0])/(this.g[2]-this.g[0])*b.length));93<=b&&b--;35<=b&&b--;b-=32;a=null;b in this.o&&(b=this.o[b],this.c&&b in this.c?a=this.c[b]:a=b);return a}; -function Vv(a,b,c,d,e){0==a.state&&!0===e?(Ja(a,"change",function(){c.call(d,this.getData(b))},a),Xv(a)):!0===e?Af(function(){c.call(d,this.getData(b))},a):c.call(d,a.getData(b))}k.Ya=function(){return this.s};k.Zd=function(){this.state=3;rh(this)};k.wh=function(a){this.l=a.grid;this.o=a.keys;this.c=a.data;this.state=4;rh(this)}; -function Xv(a){if(0==a.state)if(a.state=1,a.v)Wu(a.s,a.wh.bind(a),a.Zd.bind(a));else{var b=new XMLHttpRequest;b.addEventListener("load",a.ln.bind(a));b.addEventListener("error",a.kn.bind(a));b.open("GET",a.s);b.send()}}k.ln=function(a){a=a.target;if(!a.status||200<=a.status&&300>a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.Zd();return}this.wh(b)}else this.Zd()};k.kn=function(){this.Zd()};k.load=function(){this.U&&Xv(this)};function Yv(a){a=a||{};var b=a.params||{};W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:!("TRANSPARENT"in b?b.TRANSPARENT:1),projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.v=void 0!==a.gutter?a.gutter:0;this.c=b;this.o=!0;this.A=a.serverType;this.T=void 0!==a.hidpi?a.hidpi:!0;this.R=""; -Zv(this);this.W=Eb();$v(this);fv(this,aw(this))}w(Yv,W);k=Yv.prototype; -k.pn=function(a,b,c,d){c=vc(c);var e=this.tileGrid;e||(e=this.fb(c));b=e.Yd(a,b);if(!(e.b.length<=b[0])){var f=e.$(b[0]),g=e.Ea(b,this.W),e=ae(e.Qa(b[0]),this.j),h=this.v;0!==h&&(e=Zd(e,h,this.j),g=Gb(g,f*h,g));h={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.c.LAYERS};za(h,this.c,d);d=Math.floor((g[3]-a[1])/f);h[this.o?"I":"X"]=Math.floor((a[0]-g[0])/f);h[this.o?"J":"Y"]=d;return bw(this,b,e,g,1,c,h)}};k.ef=function(){return this.v}; -k.Ib=function(a,b,c){return this.R+W.prototype.Ib.call(this,a,b,c)};k.qn=function(){return this.c}; -function bw(a,b,c,d,e,f,g){var h=a.urls;if(h){g.WIDTH=c[0];g.HEIGHT=c[1];g[a.o?"CRS":"SRS"]=f.eb;"STYLES"in a.c||(g.STYLES="");if(1!=e)switch(a.A){case "geoserver":c=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+c):"dpi:"+c;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e;break;default:la(!1,52)}f=f.b;a.o&&"ne"==f.substr(0,2)&&(a=d[0],d[0]=d[1],d[1]=a,a=d[2],d[2]=d[3],d[3]=a);g.BBOX=d.join(",");return uv(1==h.length?h[0]:h[ta((b[1]<< -b[0])+b[2],h.length)],g)}}k.zb=function(a){return this.T&&void 0!==this.A?a:1};function Zv(a){var b=0,c=[];if(a.urls){var d,e;d=0;for(e=a.urls.length;df||d>f;)e.push([Math.ceil(c/f),Math.ceil(d/f)]),f+=f;break;case "truncated":for(;c>f||d>f;)e.push([Math.ceil(c/f),Math.ceil(d/f)]),c>>=1,d>>=1;break;default:la(!1,53)}e.push([1,1]);e.reverse();for(var f=[1],g=[0],d=1,c=e.length;dthis.g||c+this.b>this.g)return null;d=mw(this,!1,a,b,c,d,f);if(!d)return null;a=mw(this,!0,a,b,c,void 0!==e?e:ha,f);return{offsetX:d.offsetX,offsetY:d.offsetY,image:d.image,Qg:a.image}}; -function mw(a,b,c,d,e,f,g){var h=b?a.i:a.c,l,m,n;m=0;for(n=h.length;m=b+this.b&&f.height>=c+this.b)return h={offsetX:f.x+this.b,offsetY:f.y+this.b,image:this.c},this.f[a]=h,d.call(e,this.g,f.x+this.b,f.y+this.b),a=g,b+=this.b,d=c+this.b,f.width-b>f.height-d?(c={x:f.x+b,y:f.y,width:f.width-b,height:f.height},b={x:f.x,y:f.y+d,width:b,height:f.height-d},nw(this,a,c,b)):(c={x:f.x+b,y:f.y,width:f.width-b,height:d},b={x:f.x,y:f.y+d,width:f.width,height:f.height-d},nw(this, -a,c,b)),h;return null};function nw(a,b,c,d){b=[b,1];0e&&(e=0);f=c.TileMatrixSetLink[e].TileMatrixSet; -var g=c.Format[0];"format"in b&&(g=b.format);e=kb(c.Style,function(a){return"style"in b?a.Title==b.style:a.isDefault});0>e&&(e=0);e=c.Style[e].Identifier;var h={};"Dimension"in c&&c.Dimension.forEach(function(a){var b=a.Identifier,c=a.Default;void 0===c&&(c=a.Value[0]);h[b]=c});var l=gb(a.Contents.TileMatrixSet,function(a){return a.Identifier==f}),m;m="projection"in b?vc(b.projection):vc(l.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var n=c.WGS84BoundingBox,p,q;void 0!==n&& -(q=vc("EPSG:4326").C(),q=n[0]==q[0]&&n[2]==q[2],p=Pc(n,"EPSG:4326",m),(n=m.C())&&(Nb(n,p)||(p=void 0)));var l=gw(l,p),t=[];p=b.requestEncoding;p=void 0!==p?p:"";if("OperationsMetadata"in a&&"GetTile"in a.OperationsMetadata)for(var n=a.OperationsMetadata.GetTile.DCP.HTTP.Get,v=0,u=n.length;v=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop:function(){}}}(),c="0.11.1",d=function(){"use strict";function a(a){return a=b.toStr(a),a?a.split(/\s+/):[]}function c(a){return a=b.toStr(a),a?a.split(/\W+/):[]}function d(a){return function(c){return c=b.isArray(c)?c:[].slice.call(arguments,0),function(d){var e=[];return b.each(c,function(c){e=e.concat(a(b.toStr(d[c])))}),e}}}return{nonword:c,whitespace:a,obj:{nonword:d(c),whitespace:d(a)}}}(),e=function(){"use strict";function c(c){this.maxSize=b.isNumber(c)?c:100,this.reset(),this.maxSize<=0&&(this.set=this.get=a.noop)}function d(){this.head=this.tail=null}function e(a,b){this.key=a,this.val=b,this.prev=this.next=null}return b.mixin(c.prototype,{set:function(a,b){var c,d=this.list.tail;this.size>=this.maxSize&&(this.list.remove(d),delete this.hash[d.key],this.size--),(c=this.hash[a])?(c.val=b,this.list.moveToFront(c)):(c=new e(a,b),this.list.add(c),this.hash[a]=c,this.size++)},get:function(a){var b=this.hash[a];return b?(this.list.moveToFront(b),b.val):void 0},reset:function(){this.size=0,this.hash={},this.list=new d}}),b.mixin(d.prototype,{add:function(a){this.head&&(a.next=this.head,this.head.prev=a),this.head=a,this.tail=this.tail||a},remove:function(a){a.prev?a.prev.next=a.next:this.head=a.next,a.next?a.next.prev=a.prev:this.tail=a.prev},moveToFront:function(a){this.remove(a),this.add(a)}}),c}(),f=function(){"use strict";function c(a,c){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+b.escapeRegExChars(this.prefix)),this.ls=c||h,!this.ls&&this._noop()}function d(){return(new Date).getTime()}function e(a){return JSON.stringify(b.isUndefined(a)?null:a)}function f(b){return a.parseJSON(b)}function g(a){var b,c,d=[],e=h.length;for(b=0;e>b;b++)(c=h.key(b)).match(a)&&d.push(c.replace(a,""));return d}var h;try{h=window.localStorage,h.setItem("~~~","!"),h.removeItem("~~~")}catch(i){h=null}return b.mixin(c.prototype,{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=b.noop},_safeSet:function(a,b){try{this.ls.setItem(a,b)}catch(c){"QuotaExceededError"===c.name&&(this.clear(),this._noop())}},get:function(a){return this.isExpired(a)&&this.remove(a),f(this.ls.getItem(this._prefix(a)))},set:function(a,c,f){return b.isNumber(f)?this._safeSet(this._ttlKey(a),e(d()+f)):this.ls.removeItem(this._ttlKey(a)),this._safeSet(this._prefix(a),e(c))},remove:function(a){return this.ls.removeItem(this._ttlKey(a)),this.ls.removeItem(this._prefix(a)),this},clear:function(){var a,b=g(this.keyMatcher);for(a=b.length;a--;)this.remove(b[a]);return this},isExpired:function(a){var c=f(this.ls.getItem(this._ttlKey(a)));return b.isNumber(c)&&d()>c?!0:!1}}),c}(),g=function(){"use strict";function c(a){a=a||{},this.cancelled=!1,this.lastReq=null,this._send=a.transport,this._get=a.limiter?a.limiter(this._get):this._get,this._cache=a.cache===!1?new e(0):h}var d=0,f={},g=6,h=new e(10);return c.setMaxPendingRequests=function(a){g=a},c.resetCache=function(){h.reset()},b.mixin(c.prototype,{_fingerprint:function(b){return b=b||{},b.url+b.type+a.param(b.data||{})},_get:function(a,b){function c(a){b(null,a),k._cache.set(i,a)}function e(){b(!0)}function h(){d--,delete f[i],k.onDeckRequestArgs&&(k._get.apply(k,k.onDeckRequestArgs),k.onDeckRequestArgs=null)}var i,j,k=this;i=this._fingerprint(a),this.cancelled||i!==this.lastReq||((j=f[i])?j.done(c).fail(e):g>d?(d++,f[i]=this._send(a).done(c).fail(e).always(h)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(c,d){var e,f;d=d||a.noop,c=b.isString(c)?{url:c}:c||{},f=this._fingerprint(c),this.cancelled=!1,this.lastReq=f,(e=this._cache.get(f))?d(null,e):this._get(c,d)},cancel:function(){this.cancelled=!0}}),c}(),h=window.SearchIndex=function(){"use strict";function c(c){c=c||{},c.datumTokenizer&&c.queryTokenizer||a.error("datumTokenizer and queryTokenizer are both required"),this.identify=c.identify||b.stringify,this.datumTokenizer=c.datumTokenizer,this.queryTokenizer=c.queryTokenizer,this.reset()}function d(a){return a=b.filter(a,function(a){return!!a}),a=b.map(a,function(a){return a.toLowerCase()})}function e(){var a={};return a[i]=[],a[h]={},a}function f(a){for(var b={},c=[],d=0,e=a.length;e>d;d++)b[a[d]]||(b[a[d]]=!0,c.push(a[d]));return c}function g(a,b){var c=0,d=0,e=[];a=a.sort(),b=b.sort();for(var f=a.length,g=b.length;f>c&&g>d;)a[c]b[d]?d++:(e.push(a[c]),c++,d++);return e}var h="c",i="i";return b.mixin(c.prototype,{bootstrap:function(a){this.datums=a.datums,this.trie=a.trie},add:function(a){var c=this;a=b.isArray(a)?a:[a],b.each(a,function(a){var f,g;c.datums[f=c.identify(a)]=a,g=d(c.datumTokenizer(a)),b.each(g,function(a){var b,d,g;for(b=c.trie,d=a.split("");g=d.shift();)b=b[h][g]||(b[h][g]=e()),b[i].push(f)})})},get:function(a){var c=this;return b.map(a,function(a){return c.datums[a]})},search:function(a){var c,e,j=this;return c=d(this.queryTokenizer(a)),b.each(c,function(a){var b,c,d,f;if(e&&0===e.length)return!1;for(b=j.trie,c=a.split("");b&&(d=c.shift());)b=b[h][d];return b&&0===c.length?(f=b[i].slice(0),void(e=e?g(e,f):f)):(e=[],!1)}),e?b.map(f(e),function(a){return j.datums[a]}):[]},all:function(){var a=[];for(var b in this.datums)a.push(this.datums[b]);return a},reset:function(){this.datums={},this.trie=e()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),c}(),i=function(){"use strict";function a(a){this.url=a.url,this.ttl=a.ttl,this.cache=a.cache,this.prepare=a.prepare,this.transform=a.transform,this.transport=a.transport,this.thumbprint=a.thumbprint,this.storage=new f(a.cacheKey)}var c;return c={data:"data",protocol:"protocol",thumbprint:"thumbprint"},b.mixin(a.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(a){this.cache&&(this.storage.set(c.data,a,this.ttl),this.storage.set(c.protocol,location.protocol,this.ttl),this.storage.set(c.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var a,b={};return this.cache?(b.data=this.storage.get(c.data),b.protocol=this.storage.get(c.protocol),b.thumbprint=this.storage.get(c.thumbprint),a=b.thumbprint!==this.thumbprint||b.protocol!==location.protocol,b.data&&!a?b.data:null):null},fromNetwork:function(a){function b(){a(!0)}function c(b){a(null,e.transform(b))}var d,e=this;a&&(d=this.prepare(this._settings()),this.transport(d).fail(b).done(c))},clear:function(){return this.storage.clear(),this}}),a}(),j=function(){"use strict";function a(a){this.url=a.url,this.prepare=a.prepare,this.transform=a.transform,this.transport=new g({cache:a.cache,limiter:a.limiter,transport:a.transport})}return b.mixin(a.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(a,b){function c(a,c){b(a?[]:e.transform(c))}var d,e=this;if(b)return a=a||"",d=this.prepare(a,this._settings()),this.transport.get(d,c)},cancelLastRequest:function(){this.transport.cancel()}}),a}(),k=function(){"use strict";function d(d){var e;return d?(e={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:b.identity,transform:b.identity,transport:null},d=b.isString(d)?{url:d}:d,d=b.mixin(e,d),!d.url&&a.error("prefetch requires url to be set"),d.transform=d.filter||d.transform,d.cacheKey=d.cacheKey||d.url,d.thumbprint=c+d.thumbprint,d.transport=d.transport?h(d.transport):a.ajax,d):null}function e(c){var d;if(c)return d={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:b.identity,transport:null},c=b.isString(c)?{url:c}:c,c=b.mixin(d,c),!c.url&&a.error("remote requires url to be set"),c.transform=c.filter||c.transform,c.prepare=f(c),c.limiter=g(c),c.transport=c.transport?h(c.transport):a.ajax,delete c.replace,delete c.wildcard,delete c.rateLimitBy,delete c.rateLimitWait,c}function f(a){function b(a,b){return b.url=f(b.url,a),b}function c(a,b){return b.url=b.url.replace(g,encodeURIComponent(a)),b}function d(a,b){return b}var e,f,g;return e=a.prepare,f=a.replace,g=a.wildcard,e?e:e=f?b:a.wildcard?c:d}function g(a){function c(a){return function(c){return b.debounce(c,a)}}function d(a){return function(c){return b.throttle(c,a)}}var e,f,g;return e=a.limiter,f=a.rateLimitBy,g=a.rateLimitWait,e||(e=/^throttle$/i.test(f)?d(g):c(g)),e}function h(c){return function(d){function e(a){b.defer(function(){g.resolve(a)})}function f(a){b.defer(function(){g.reject(a)})}var g=a.Deferred();return c(d,e,f),g}}return function(c){var f,g;return f={initialize:!0,identify:b.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},c=b.mixin(f,c||{}),!c.datumTokenizer&&a.error("datumTokenizer is required"),!c.queryTokenizer&&a.error("queryTokenizer is required"),g=c.sorter,c.sorter=g?function(a){return a.sort(g)}:b.identity,c.local=b.isFunction(c.local)?c.local():c.local,c.prefetch=d(c.prefetch),c.remote=e(c.remote),c}}(),l=function(){"use strict";function c(a){a=k(a),this.sorter=a.sorter,this.identify=a.identify,this.sufficient=a.sufficient,this.local=a.local,this.remote=a.remote?new j(a.remote):null,this.prefetch=a.prefetch?new i(a.prefetch):null,this.index=new h({identify:this.identify,datumTokenizer:a.datumTokenizer,queryTokenizer:a.queryTokenizer}),a.initialize!==!1&&this.initialize()}var e;return e=window&&window.Bloodhound,c.noConflict=function(){return window&&(window.Bloodhound=e),c},c.tokenizers=d,b.mixin(c.prototype,{__ttAdapter:function(){function a(a,b,d){return c.search(a,b,d)}function b(a,b){return c.search(a,b)}var c=this;return this.remote?a:b},_loadPrefetch:function(){function b(a,b){return a?c.reject():(e.add(b),e.prefetch.store(e.index.serialize()),void c.resolve())}var c,d,e=this;return c=a.Deferred(),this.prefetch?(d=this.prefetch.fromCache())?(this.index.bootstrap(d),c.resolve()):this.prefetch.fromNetwork(b):c.resolve(),c.promise()},_initialize:function(){function a(){b.add(b.local)}var b=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(a),this.initPromise},initialize:function(a){return!this.initPromise||a?this._initialize():this.initPromise},add:function(a){return this.index.add(a),this},get:function(a){return a=b.isArray(a)?a:[].slice.call(arguments),this.index.get(a)},search:function(a,c,d){function e(a){var c=[];b.each(a,function(a){!b.some(f,function(b){return g.identify(a)===g.identify(b)})&&c.push(a)}),d&&d(c)}var f,g=this;return f=this.sorter(this.index.search(a)),c(this.remote?f.slice():f),this.remote&&f.length=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop:function(){}}}(),c=function(){"use strict";function a(a){var g,h;return h=b.mixin({},f,a),g={css:e(),classes:h,html:c(h),selectors:d(h)},{css:g.css,html:g.html,classes:g.classes,selectors:g.selectors,mixin:function(a){b.mixin(a,g)}}}function c(a){return{wrapper:'',menu:'
'}}function d(a){var c={};return b.each(a,function(a,b){c[b]="."+a}),c}function e(){var a={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return b.isMsie()&&b.mixin(a.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),a}var f={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return a}(),d=function(){"use strict";function c(b){b&&b.el||a.error("EventBus initialized without el"),this.$el=a(b.el)}var d,e;return d="typeahead:",e={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},b.mixin(c.prototype,{_trigger:function(b,c){var e;return e=a.Event(d+b),(c=c||[]).unshift(e),this.$el.trigger.apply(this.$el,c),e},before:function(a){var b,c;return b=[].slice.call(arguments,1),c=this._trigger("before"+a,b),c.isDefaultPrevented()},trigger:function(a){var b;this._trigger(a,[].slice.call(arguments,1)),(b=e[a])&&this._trigger(b,[].slice.call(arguments,1))}}),c}(),e=function(){"use strict";function a(a,b,c,d){var e;if(!c)return this;for(b=b.split(i),c=d?h(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function b(b,c,d){return a.call(this,"async",b,c,d)}function c(b,c,d){return a.call(this,"sync",b,c,d)}function d(a){var b;if(!this._callbacks)return this;for(a=a.split(i);b=a.shift();)delete this._callbacks[b];return this}function e(a){var b,c,d,e,g;if(!this._callbacks)return this;for(a=a.split(i),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=f(c.sync,this,[b].concat(d)),g=f(c.async,this,[b].concat(d)),e()&&j(g);return this}function f(a,b,c){function d(){for(var d,e=0,f=a.length;!d&&f>e;e+=1)d=a[e].apply(b,c)===!1;return!d}return d}function g(){var a;return a=window.setImmediate?function(a){setImmediate(function(){a()})}:function(a){setTimeout(function(){a()},0)}}function h(a,b){return a.bind?a.bind(b):function(){a.apply(b,[].slice.call(arguments,0))}}var i=/\s+/,j=g();return{onSync:c,onAsync:b,off:d,trigger:e}}(),f=function(a){"use strict";function c(a,c,d){for(var e,f=[],g=0,h=a.length;h>g;g++)f.push(b.escapeRegExChars(a[g]));return e=d?"\\b("+f.join("|")+")\\b":"("+f.join("|")+")",c?new RegExp(e):new RegExp(e,"i")}var d={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(e){function f(b){var c,d,f;return(c=h.exec(b.data))&&(f=a.createElement(e.tagName),e.className&&(f.className=e.className),d=b.splitText(c.index),d.splitText(c[0].length),f.appendChild(d.cloneNode(!0)),b.parentNode.replaceChild(f,d)),!!c}function g(a,b){for(var c,d=3,e=0;e