vue-azure-maps
Version:
Integrate Azure Maps in your Vue application
663 lines (573 loc) • 1.63 MB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "fb15");
/******/ })
/************************************************************************/
/******/ ({
/***/ "050f":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// CONCATENATED MODULE: ./src/plugin/utils/find-parent-component-by-name.ts
/**
* @name findParentComponentByName
* @summary Find the Vue instance of the first parent component that matches the provided component name.
*
* @description The `findParentComponentByName()` method returns the Vue instance of the first parent component
* that has a `name` component option that matches the provided component name.
*
* @param {Vue} vm - The children component Vue instance that is looking for the parent component Vue instance
* @param {string} componentName - The parent component name
* @returns {Vue|undefined} The parent component instance that matches the provided component name,
* otherwise, undefined is returned
*
* @example
* // Find `<App/>` component from `<Child/>`:
* <App>
* <GrandParent>
* <Parent>
* <Child/>
* </Parent>
* </GrandParent>
* </App>
*
* // Descendant component Vue instance
* new Vue({
* name: 'Child',
*
* created() {
* const app = findParentComponentByName(this, 'App')
* // => VueComponent {_uid: 1, _isVue: true, $options: {…}, _renderProxy: Proxy, _self: VueComponent, …}
* },
* })
*/
function findParentComponentByName(vm, componentName) {
//
// Components tree:
// +---------------------+ \ return undefined, <Child/> is not a descendant of <App/> \
// | <App> |---> Return if component name option matches, otherwise
// |---------------------| \ continue traversing the tree upwards \
// | <GrandParent> |-----> Return if component name option matches, otherwise
// |---------------------| \ continue traversing the tree upwards \
// | <Parent> |-------> Return if component name option matches, otherwise
// |---------------------| \ traverse the tree upwards \
// | <Child/> |---------> STARTING POINT, start looking for App component from here
// |---------------------|
// | </Parent> |
// |---------------------|
// | </GrandParent> |
// |---------------------|
// | </App> |
// +---------------------+
//
var component;
var parent = vm.$parent;
while (parent && !component) {
if (parent.$options.name === componentName) {
component = parent;
}
parent = parent.$parent;
}
return component;
}
// CONCATENATED MODULE: ./src/plugin/utils/dependency-injection.ts
/* unused harmony export getInjection */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getMapInjection; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getDataSourceInjection; });
function isValidInjection(vm, injection, injectedPropertyLabel, componentName, parentName) {
var isValid = Boolean(injection);
if (!isValid && "production" !== 'production') {
console.warn("Invalid <".concat(componentName, "> ").concat(injectedPropertyLabel, ".").concat(parentName && !findParentComponentByName(vm, parentName) ? "\nPlease make sure <".concat(componentName, "> is a descendant of <").concat(parentName, ">.") : ""));
}
return isValid;
}
function getInjection(_ref) {
var vm = _ref.vm,
injectionName = _ref.injectionName,
injectedPropertyLabel = _ref.injectedPropertyLabel,
sourceComponentName = _ref.sourceComponentName;
var injection = vm[injectionName];
if (!isValidInjection(vm, injection, injectedPropertyLabel, vm.$options.name || '', sourceComponentName)) return;
return injection;
}
function getMapInjection(vm) {
return getInjection({
vm: vm,
injectionName: 'getMap',
injectedPropertyLabel: 'map instance',
sourceComponentName: 'AzureMap'
});
}
function getDataSourceInjection(vm) {
return getInjection({
vm: vm,
injectionName: 'getDataSource',
injectedPropertyLabel: 'data source',
sourceComponentName: 'AzureMapDataSource'
});
}
/***/ }),
/***/ "0c7c":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functional component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
/***/ }),
/***/ "31d7":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function getOptionsFromProps(_ref) {
var props = _ref.props,
_ref$excludedPropKeys = _ref.excludedPropKeys,
excludedPropKeys = _ref$excludedPropKeys === void 0 ? [] : _ref$excludedPropKeys,
_ref$reservedAttribut = _ref.reservedAttributes,
reservedAttributes = _ref$reservedAttribut === void 0 ? {} : _ref$reservedAttribut;
var propEntries = Object.entries(_objectSpread({}, props));
var options = {};
var reservedKeys = Object.keys(reservedAttributes); // Look for all the properties that have a truthy value
for (var _i = 0, _propEntries = propEntries; _i < _propEntries.length; _i++) {
var _propEntries$_i = _slicedToArray(_propEntries[_i], 2),
prop = _propEntries$_i[0],
value = _propEntries$_i[1];
if (!excludedPropKeys.includes(prop) && value !== null && value !== undefined) {
var propKey = prop; // Handle reserved attributes
if (reservedKeys.includes(prop)) {
propKey = reservedAttributes[prop];
}
options[propKey] = value;
}
}
return options;
}
/* harmony default export */ __webpack_exports__["a"] = (getOptionsFromProps);
/***/ }),
/***/ "32ef":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export isObject */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return looseEqual; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return capitalize; });
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
//===
// Helper functions
//===
/**
* Quick object check - this is primarily used to tell
* Objects from primitive values when we know the value
* is a JSON-compliant type.
*/
function isObject(obj) {
return obj !== null && _typeof(obj) === 'object';
}
/**
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
function looseEqual(a, b) {
if (a === b) return true;
var isObjectA = isObject(a);
var isObjectB = isObject(b);
if (isObjectA && isObjectB) {
try {
var isArrayA = Array.isArray(a);
var isArrayB = Array.isArray(b);
if (isArrayA && isArrayB) {
return a.length === b.length && a.every(function (e, i) {
return looseEqual(e, b[i]);
});
} else if (a instanceof Date && b instanceof Date) {
return a.getTime() === b.getTime();
} else if (!isArrayA && !isArrayB) {
var keysA = Object.keys(a);
var keysB = Object.keys(b);
return keysA.length === keysB.length && keysA.every(function (key) {
return looseEqual(a[key], b[key]);
});
} else {
return false;
}
} catch (e) {
return false;
}
} else if (!isObjectA && !isObjectB) {
return String(a) === String(b);
} else {
return false;
}
}
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
/***/ }),
/***/ "330c":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"3e5ca8aa-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/plugin/components/AzureMapDataSource.vue?vue&type=template&id=7997c3ce&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}]},[(Boolean(_vm.dataSource))?[_vm._t("default",null,{"dataSource":_vm.dataSource})]:_vm._e()],2)}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/plugin/components/AzureMapDataSource.vue?vue&type=template&id=7997c3ce&
// EXTERNAL MODULE: ./src/plugin/utils/dependency-injection.ts + 1 modules
var dependency_injection = __webpack_require__("050f");
// EXTERNAL MODULE: ./src/plugin/utils/get-options-from-props.ts
var get_options_from_props = __webpack_require__("31d7");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
var external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--14-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/plugin/components/AzureMapDataSource.vue?vue&type=script&lang=ts&
var AzureMapDataSourceEvent;
(function (AzureMapDataSourceEvent) {
AzureMapDataSourceEvent["Created"] = "created";
})(AzureMapDataSourceEvent || (AzureMapDataSourceEvent = {}));
var state = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.observable({
id: 0
});
/**
* `AzureMapDataSource` makes it easy to manage shapes data that will be displayed on the map.
*
* A data source must be added to a layer before it is visible on the map.
*
* `AzureMapDataSource` may be used with:
* `AzureMapSymbolLayer`, `AzureMapLineLayer`, `AzureMapPolygonLayer`, `AzureMapBubbleLayer`, and `AzureMapHeatMapLayer`.
*/
/* harmony default export */ var AzureMapDataSourcevue_type_script_lang_ts_ = (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend({
name: 'AzureMapDataSource',
provide: function provide() {
return {
/**
* Provide a function to retreive the `atlas.source.DataSource` instance for descendent components that need to inject it
*
* Note that this method will only be available in the descendent component if it uses `inject: ['getDataSource']`
*/
getDataSource: this.getDataSource
};
},
/**
* Inject the `getMap` function to get the `atlas.Map` instance
*/
inject: ['getMap'],
props: {
/**
* A unique id that the user assigns to the data source.
* If this is not specified, then the data source will automatically be assigned an id.
*/
id: {
type: String,
default: undefined
},
/**
* Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels).
* default `18`
* @default 18
*/
maxZoom: {
type: Number,
default: undefined
},
/**
* A boolean indicating if Point features in the source should be clustered or not.
* If set to true, points will be clustered together into groups by radius.
* default `false`
* @default false
*/
cluster: {
type: Boolean,
default: undefined
},
/**
* The radius of each cluster in pixels.
* default `50`
* @default 50
*/
clusterRadius: {
type: Number,
default: undefined
},
/**
* The maximum zoom level in which to cluster points.
* Defaults to one zoom less than `maxZoom` so that last zoom features are not clustered.
*/
clusterMaxZoom: {
type: Number,
default: undefined
},
/**
* Defines custom properties that are calculated using expressions against all the points within each cluster and added to the properties of each cluster point.
*/
clusterProperties: {
type: Object,
default: undefined
},
/**
* Specifies whether to calculate line distance metrics.
* This is required for line layers that specify `lineGradient` values.
* default `false`
* @default false
*/
lineMetrics: {
type: Boolean,
default: undefined
},
/**
* The Douglas-Peucker simplification tolerance that is applied to the data when rendering (higher means simpler geometries and faster performance).
* default `0.375`
* @default 0.375
*/
tolerance: {
type: Number,
default: undefined
}
},
data: function data() {
return {
// The data source instance
dataSource: null
};
},
computed: {
dataSourceOptionProps: function dataSourceOptionProps() {
var maxZoom = this.maxZoom,
cluster = this.cluster,
clusterRadius = this.clusterRadius,
clusterMaxZoom = this.clusterMaxZoom,
lineMetrics = this.lineMetrics,
tolerance = this.tolerance,
clusterProperties = this.clusterProperties;
return {
maxZoom: maxZoom,
cluster: cluster,
clusterRadius: clusterRadius,
clusterMaxZoom: clusterMaxZoom,
lineMetrics: lineMetrics,
tolerance: tolerance,
clusterProperties: clusterProperties
};
}
},
created: function created() {
this.initializeDataSource();
},
methods: {
initializeDataSource: function initializeDataSource() {
var _this = this;
// Look for the injected function that retreives the map instance
var getMap = Object(dependency_injection["b" /* getMapInjection */])(this);
if (!getMap) return; // Retrieve the map instance from the injected function
var map = getMap(); // Create a data source to manage shapes
var dataSource = new this.$_azureMaps.atlas.source.DataSource(this.id || "azure-map-data-source-".concat(state.id++), Object(get_options_from_props["a" /* default */])({
props: this.dataSourceOptionProps
}));
this.$emit(AzureMapDataSourceEvent.Created, dataSource); // Watch for all props changes
this.$watch('dataSourceOptionProps', function () {
dataSource.setOptions(_this.dataSourceOptionProps);
}, {
deep: true
}); // Save the data source in a data property to provide it to descendent components
this.dataSource = dataSource; // Add the data source to the map sources
map.sources.add(this.dataSource); // Remove the data source when the component is destroyed
this.$once('hook:destroyed', function () {
map.sources.remove(dataSource);
});
},
getDataSource: function getDataSource() {
// Return the data source for descendent components injection
return this.dataSource;
}
}
}));
// CONCATENATED MODULE: ./src/plugin/components/AzureMapDataSource.vue?vue&type=script&lang=ts&
/* harmony default export */ var components_AzureMapDataSourcevue_type_script_lang_ts_ = (AzureMapDataSourcevue_type_script_lang_ts_);
// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__("0c7c");
// CONCATENATED MODULE: ./src/plugin/components/AzureMapDataSource.vue
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
components_AzureMapDataSourcevue_type_script_lang_ts_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var AzureMapDataSource = __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "42fb":
/***/ (function(module, exports, __webpack_require__) {
// Imports
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__("4bad");
exports = ___CSS_LOADER_API_IMPORT___(false);
// Module
exports.push([module.i, ".mapboxgl-marker,.mapboxgl-popup{will-change:transform;top:0;left:0}.incident-popup-subtitle,.incident-popup-title{text-transform:capitalize;text-overflow:ellipsis}.mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:transparent}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-nav-compass{cursor:-webkit-grab;cursor:grab}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-nav-compass:active{cursor:-webkit-grabbing;cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan{-ms-touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan{-ms-touch-action:none;touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{right:0;bottom:0}.mapboxgl-ctrl{clear:both;pointer-events:auto}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:10px 0 0 10px;float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group{border-radius:4px;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1);overflow:hidden;background:#fff}.mapboxgl-ctrl-group>button{width:30px;height:30px;display:block;padding:0;outline:0;border:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:transparent;cursor:pointer}.mapboxgl-ctrl>button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl>button:last-child{border-bottom:0}.mapboxgl-ctrl>button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-icon,.mapboxgl-ctrl-icon>.mapboxgl-ctrl-compass-arrow{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mapboxgl-ctrl-icon{padding:5px}.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-out{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg%20viewBox%3D%270%200%2020%2020%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%0A%20%20%3Cpath%20style%3D%27fill%3A%23333333%3B%27%20d%3D%27m%207%2C9%20c%20-0.554%2C0%20-1%2C0.446%20-1%2C1%200%2C0.554%200.446%2C1%201%2C1%20l%206%2C0%20c%200.554%2C0%201%2C-0.446%201%2C-1%200%2C-0.554%20-0.446%2C-1%20-1%2C-1%20z%27%20%2F%3E%0A%3C%2Fsvg%3E%0A\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-zoom-in{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg%20viewBox%3D%270%200%2020%2020%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%0A%20%20%3Cpath%20style%3D%27fill%3A%23333333%3B%27%20d%3D%27M%2010%206%20C%209.446%206%209%206.4459904%209%207%20L%209%209%20L%207%209%20C%206.446%209%206%209.446%206%2010%20C%206%2010.554%206.446%2011%207%2011%20L%209%2011%20L%209%2013%20C%209%2013.55401%209.446%2014%2010%2014%20C%2010.554%2014%2011%2013.55401%2011%2013%20L%2011%2011%20L%2013%2011%20C%2013.554%2011%2014%2010.554%2014%2010%20C%2014%209.446%2013.554%209%2013%209%20L%2011%209%20L%2011%207%20C%2011%206.4459904%2010.554%206%2010%206%20z%27%20%2F%3E%0A%3C%2Fsvg%3E%0A\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 013.5 3.5 3.5 3.5 0 01-3.5 3.5A3.5 3.5 0 016.5 10 3.5 3.5 0 0110 6.5zm0 1.8A1.8 1.8 0 008.3 10a1.8 1.8 0 001.7 1.8 1.8 1.8 0 001.8-1.8A1.8 1.8 0 0010 8.3z' fill='%23333'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate:disabled{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 013.5 3.5 3.5 3.5 0 01-3.5 3.5A3.5 3.5 0 016.5 10 3.5 3.5 0 0110 6.5zm0 1.8A1.8 1.8 0 008.3 10a1.8 1.8 0 001.7 1.8 1.8 1.8 0 001.8-1.8A1.8 1.8 0 0010 8.3z' fill='%23aaa'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 013.5 3.5 3.5 3.5 0 01-3.5 3.5A3.5 3.5 0 016.5 10 3.5 3.5 0 0110 6.5zm0 1.8A1.8 1.8 0 008.3 10a1.8 1.8 0 001.7 1.8 1.8 1.8 0 001.8-1.8A1.8 1.8 0 0010 8.3z' fill='%2333b5e5'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 013.5 3.5 3.5 3.5 0 01-3.5 3.5A3.5 3.5 0 016.5 10 3.5 3.5 0 0110 6.5zm0 1.8A1.8 1.8 0 008.3 10a1.8 1.8 0 001.7 1.8 1.8 1.8 0 001.8-1.8A1.8 1.8 0 0010 8.3z' fill='%23e58978'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 010-7z' fill='%2333b5e5'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 010-7z' fill='%23e54e33'/%3E%3C/svg%3E\")}.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting{-webkit-animation:mapboxgl-spin 2s linear infinite;animation:mapboxgl-spin 2s linear infinite}@-webkit-keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(1turn)}}@keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.mapboxgl-ctrl-icon.mapboxgl-ctrl-fullscreen{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTUgNGMtLjUgMC0xIC41LTEgMXY0aC41bDEuMjc3LTEuNzAzYzEgLjc2MyAyLjA1OSAxLjY2IDMuMTE0IDIuNzAzYTMwLjM4IDMwLjM4IDAgMDEtMy4xMSAyLjcwN0w0LjUgMTFINHY0YzAgLjUuNSAxIDEgMWg0di0uNWwtMS43MjctMS4yOTVhMzUuNDk4IDM1LjQ5OCAwIDAxMi42ODgtMy4xMzcgMzAuMzEyIDMwLjMxMiAwIDAxMi43NDYgMy4xNUwxMSAxNS41di41aDRjLjUgMCAxLS41IDEtMXYtNGgtLjVsLTEuMjk1IDEuNzI3YTM1LjUxMyAzNS41MTMgMCAwMS0zLjE2OC0yLjcxNyA0Ny43ODcgNDcuNzg3IDAgMDEzLjE5Mi0yLjcwNUwxNS41IDloLjVWNWMwLS41LS41LTEtMS0xaC00di41bDEuNzAzIDEuMjc3QTMyLjI0MyAzMi4yNDMgMCAwMTkuOTcxIDguOTIgNDcuNzYxIDQ3Ljc2MSAwIDAxNy4zMDUgNS43N0w5IDQuNVY0SDV6Ii8+PC9zdmc+)}.mapboxgl-ctrl-icon.mapboxgl-ctrl-shrink{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTQuMjQyIDMuNDkyYS43NS43NSAwIDAwLS41MjMgMS4yOWwyLjI0NiAyLjI0NUw0IDguNVY5aDRjLjUgMCAxLS41IDEtMVY0aC0uNUw3LjAxOCA1Ljk1NSA0Ljc4IDMuNzJhLjc1Ljc1IDAgMDAtLjUzOS0uMjI3em0xMS40OTIgMGEuNzUuNzUgMCAwMC0uNTE1LjIyN2wtMi4yMzUgMi4yMzRMMTEuNSA0SDExdjRjMCAuNS41IDEgMSAxaDR2LS41bC0xLjk2NS0xLjQ3MyAyLjI0Ni0yLjI0NmEuNzUuNzUgMCAwMC0uNTQ3LTEuMjg5ek00IDExdi41bDEuOTY1IDEuNDczLTIuMjQ2IDIuMjQ2QS43NTEuNzUxIDAgMTA0Ljc4IDE2LjI4bDIuMjQ2LTIuMjQ2TDguNSAxNkg5di00YzAtLjUtLjUtMS0xLTFINHptOCAwYy0uNSAwLTEgLjUtMSAxdjRoLjVsMS40NzMtMS45NjUgMi4yNDYgMi4yNDZhLjc1MS43NTEgMCAxMDEuMDYyLTEuMDYybC0yLjI0Ni0yLjI0NkwxNiAxMS41VjExaC00eiIvPjwvc3ZnPg==)}.mapboxgl-ctrl-icon.mapboxgl-ctrl-compass>.mapboxgl-ctrl-compass-arrow{width:20px;height:20px;margin:5px;background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%0A%09%3Cpolygon%20fill%3D%27%23333333%27%20points%3D%276%2C9%2010%2C1%2014%2C9%27%2F%3E%0A%09%3Cpolygon%20fill%3D%27%23CCCCCC%27%20points%3D%276%2C11%2010%2C19%2014%2C11%20%27%2F%3E%0A%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}a.mapboxgl-ctrl-logo{width:85px;height:21px;margin:0 0 -3px -3px;display:block;background-repeat:no-repeat;cursor:pointer;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4NC40OSAyMSI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTgzLjI1IDE0LjI2YzAgLjEyLS4wOS4yMS0uMjEuMjFoLTEuNjFjLS4xMyAwLS4yNC0uMDYtLjMtLjE3bC0xLjQ0LTIuMzktMS40NCAyLjM5YS4zNC4zNCAwIDAxLS4zLjE3aC0xLjYxYy0uMDQgMC0uMDgtLjAxLS4xMi0uMDMtLjA5LS4wNi0uMTMtLjE5LS4wNi0uMjhsMi40My0zLjY4LTIuMzktMy42NGEuMjEzLjIxMyAwIDAxLS4wMy0uMTJjMC0uMTIuMDktLjIxLjIxLS4yMWgxLjYxYy4xMyAwIC4yNC4wNi4zLjE3bDEuNDEgMi4zNiAxLjQtMi4zNWEuMzQuMzQgMCAwMS4zLS4xN0g4M2MuMDQgMCAuMDguMDEuMTIuMDMuMDkuMDYuMTMuMTkuMDYuMjhsLTIuMzcgMy42MyAyLjQzIDMuNjdjMCAuMDUuMDEuMDkuMDEuMTN6TTY2LjI0IDkuNTljLS4zOS0xLjg4LTEuOTYtMy4yOC0zLjg0LTMuMjgtMS4wMyAwLTIuMDMuNDItMi43MyAxLjE4VjMuNTFjMC0uMTMtLjEtLjIzLS4yMy0uMjNoLTEuNGMtLjEzIDAtLjIzLjExLS4yMy4yM3YxMC43MmMwIC4xMy4xLjIzLjIzLjIzaDEuNGMuMTMgMCAuMjMtLjExLjIzLS4yM3YtLjczYy43MS43NSAxLjcgMS4xOCAyLjczIDEuMTggMS44OCAwIDMuNDUtMS40MSAzLjg0LTMuMjkuMTMtLjYuMTMtMS4yMSAwLTEuOHpNNjIuMDggMTNjLTEuMzIgMC0yLjM5LTEuMTEtMi40MS0yLjQ4di0uMDZjLjAyLTEuMzggMS4wOS0yLjQ4IDIuNDEtMi40OHMyLjQyIDEuMTIgMi40MiAyLjUxUzYzLjQxIDEzIDYyLjA4IDEzek03MS42NyA2LjMyYTQuMjQgNC4yNCAwIDAwLTQuMTYgMy4yOWMtLjEzLjU5LS4xMyAxLjE5IDAgMS43N2E0LjIzMyA0LjIzMyAwIDAwNC4xNyAzLjNjMi4zNSAwIDQuMjYtMS44NyA0LjI2LTQuMTlzLTEuOS00LjE3LTQuMjctNC4xN3ptLS4wMiA2LjY5Yy0xLjMzIDAtMi40Mi0xLjEyLTIuNDItMi41MXMxLjA4LTIuNTIgMi40Mi0yLjUyYzEuMzMgMCAyLjQyIDEuMTIgMi40MiAyLjUxcy0xLjA4IDIuNTEtMi40MiAyLjUyeiIgb3BhY2l0eT0iLjkiIGZpbGw9IiNmZmYiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjIuMDggNy45OGMtMS4zMiAwLTIuMzkgMS4xMS0yLjQxIDIuNDh2LjA2Yy4wMSAxLjM4IDEuMDggMi40OCAyLjQxIDIuNDhzMi40Mi0xLjEyIDIuNDItMi41MS0xLjA5LTIuNTEtMi40Mi0yLjUxem0wIDMuNzhjLS42MyAwLTEuMTQtLjU2LTEuMTctMS4yNXYtLjA0Yy4wMS0uNjkuNTQtMS4yNSAxLjE3LTEuMjUuNjMgMCAxLjE3LjU3IDEuMTcgMS4yNy0uMDEuNzEtLjUyIDEuMjctMS4xNyAxLjI3ek03MS42NSA3Ljk4Yy0xLjMzIDAtMi40MiAxLjEyLTIuNDIgMi41MVM3MC4zMiAxMyA3MS42NSAxM3MyLjQyLTEuMTIgMi40Mi0yLjUxLTEuMDgtMi41MS0yLjQyLTIuNTF6bTAgMy43OGMtLjY0IDAtMS4xNy0uNTctMS4xNy0xLjI3IDAtLjcuNTMtMS4yNiAxLjE3LTEuMjZzMS4xNy41NyAxLjE3IDEuMjdjMCAuNzEtLjUzIDEuMjYtMS4xNyAxLjI2eiIgb3BhY2l0eT0iLjM1Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTQ1Ljc0IDYuNTNoLTEuNGMtLjEzIDAtLjIzLjExLS4yMy4yM3YuNzNjLS43MS0uNzUtMS43LTEuMTgtMi43My0xLjE4LTIuMTcgMC0zLjk0IDEuODctMy45NCA0LjE5czEuNzcgNC4xOSAzLjk0IDQuMTljMS4wNCAwIDIuMDMtLjQzIDIuNzMtMS4xOXYuNzNjMCAuMTMuMS4yMy4yMy4yM2gxLjRjLjEzIDAgLjIzLS4xMS4yMy0uMjNWNi43NGMwLS4xMi0uMDktLjIyLS4yMi0uMjIgMCAuMDEgMCAuMDEtLjAxLjAxem0tMS42MiA0QzQ0LjExIDExLjkgNDMuMDMgMTMgNDEuNzEgMTNzLTIuNDItMS4xMi0yLjQyLTIuNTEgMS4wOC0yLjUyIDIuNC0yLjUyYzEuMzMgMCAyLjM5IDEuMTEgMi40MSAyLjQ4bC4wMi4wOHoiIG9wYWNpdHk9Ii45IiBmaWxsPSIjZmZmIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTQxLjcxIDcuOThjLTEuMzMgMC0yLjQyIDEuMTItMi40MiAyLjUxUzQwLjM3IDEzIDQxLjcxIDEzczIuMzktMS4xMSAyLjQxLTIuNDh2LS4wNmMtLjAyLTEuMzctMS4wOS0yLjQ4LTIuNDEtMi40OHptLTEuMTYgMi41MWMwLS43LjUyLTEuMjcgMS4xNy0xLjI3LjY0IDAgMS4xNC41NiAxLjE3IDEuMjV2LjA0Yy0uMDEuNjgtLjUzIDEuMjQtMS4xNyAxLjI0LS42NCAwLTEuMTctLjU2LTEuMTctMS4yNnoiIG9wYWNpdHk9Ii4zNSIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01Mi40MSA2LjMyYy0xLjAzIDAtMi4wMy40Mi0yLjczIDEuMTh2LS43NWMwLS4xMy0uMS0uMjMtLjIzLS4yM2gtMS40Yy0uMTMgMC0uMjMuMTEtLjIzLjIzdjEwLjcyYzAgLjEzLjEuMjMuMjMuMjNoMS40Yy4xMyAwIC4yMy0uMS4yMy0uMjNWMTMuNWMuNzEuNzUgMS43IDEuMTggMi43NCAxLjE4IDIuMTcgMCAzLjk0LTEuODcgMy45NC00LjE5cy0xLjc4LTQuMTctMy45NS00LjE3em0tLjMzIDYuNjljLTEuMzIgMC0yLjM5LTEuMTEtMi40Mi0yLjQ4di0uMDdjLjAyLTEuMzggMS4wOS0yLjQ5IDIuNC0yLjQ5IDEuMzIgMCAyLjQxIDEuMTIgMi40MSAyLjUxUzUzLjQgMTMgNTIuMDggMTMuMDF6IiBvcGFjaXR5PSIuOSIgZmlsbD0iI2ZmZiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01Mi4wOCA3Ljk4Yy0xLjMyIDAtMi4zOSAxLjExLTIuNDIgMi40OHYuMDZjLjAzIDEuMzggMS4xIDIuNDggMi40MiAyLjQ4czIuNDEtMS4xMiAyLjQxLTIuNTEtMS4wOS0yLjUxLTIuNDEtMi41MXptMCAzLjc4Yy0uNjMgMC0xLjE0LS41Ni0xLjE3LTEuMjV2LS4wNGMuMDEtLjY5LjU0LTEuMjUgMS4xNy0xLjI1LjYzIDAgMS4xNy41OCAxLjE3IDEuMjdzLS41MyAxLjI3LTEuMTcgMS4yN3oiIG9wYWNpdHk9Ii4zNSIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zNi4wOCAxNC4yNGMwIC4xMy0uMS4yMy0uMjMuMjNoLTEuNDFjLS4xMyAwLS4yMy0uMTEtLjIzLS4yM1Y5LjY4YzAtLjk4LS43NC0xLjcxLTEuNjItMS43MS0uOCAwLTEuNDYuNy0xLjU5IDEuNjJsLjAxIDQuNjZjMCAuMTMtLjExLjIzLS4yMy4yM2gtMS40MWMtLjEzIDAtLjIzLS4xMS0uMjMtLjIzVjkuNjhjMC0uOTgtLjc0LTEuNzEtMS42Mi0xLjcxLS44NSAwLTEuNTQuNzktMS42IDEuOHY0LjQ4YzAgLjEzLS4xLjIzLS4yMy4yM2gtMS40Yy0uMTMgMC0uMjMtLjExLS4yMy0uMjNWNi43NGMuMDEtLjEzLjEtLjIyLjIzLS4yMmgxLjRjLjEzIDAgLjIyLjExLjIzLjIydi42NmMuNS0uNjggMS4zLTEuMDkgMi4xNi0xLjFoLjAzYzEuMDkgMCAyLjA5LjYgMi42IDEuNTUuNDUtLjk1IDEuNC0xLjU1IDIuNDQtMS41NiAxLjYyIDAgMi45MyAxLjI1IDIuOSAyLjc4bC4wMyA1LjE3eiIgb3BhY2l0eT0iLjkiIGZpbGw9IiNmZmYiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNODQuMzQgMTMuNTlsLS4wNy0uMTMtMS45Ni0yLjk5IDEuOTQtMi45NWMuNDQtLjY3LjI2LTEuNTYtLjQxLTIuMDItLjAyIDAtLjAzIDAtLjA0LS4wMS0uMjMtLjE1LS41LS4yMi0uNzgtLjIyaC0xLjYxYy0uNTYgMC0xLjA4LjI5LTEuMzcuNzhsLS4zMi41NS0uMzQtLjU2Yy0uMjktLjQ4LS44MS0uNzctMS4zOC0uNzdoLTEuNmMtLjYgMC0xLjEzLjM3LTEuMzUuOTJhNS41OSA1LjU5IDAgMDAtNy4yNi40NWMtLjM1LjM0LS42NS43Mi0uODkgMS4xNC0uOS0xLjYyLTIuNTgtMi43Mi00LjUtMi43Mi0uNSAwLTEuMDEuMDctMS40OC4yM1YzLjUxYzAtLjgyLS42Ni0xLjQ4LTEuNDctMS40OGgtMS40Yy0uODEgMC0xLjQ3LjY2LTEuNDcgMS40N3YzLjc1YTUuMTIgNS4xMiAwIDAwLTQuMTctMi4xOWMtLjc0IDAtMS40Ni4xNi0yLjEyLjQ3LS4yNC0uMTctLjU0LS4yNi0uODQtLjI2aC0xLjRjLS40NSAwLS44Ny4yMS0xLjE1LjU2YTEuNDk4IDEuNDk4IDAgMDAtMS4xNi0uNTVoLTEuMzljLS4zIDAtLjYuMDktLjg0LjI2LS42Ny0uMy0xLjM5LS40Ni0yLjEyLS40Ni0xLjgzIDAtMy40MyAxLTQuMzcgMi41LS4yLS40Ni0uNDgtLjg5LS44My0xLjI1LS44LS44MS0xLjg5LTEuMjUtMy4wMi0xLjI1aC0uMDFjLS44OS4wMS0xLjc1LjMzLTIuNDYuODgtLjc0LS41Ny0xLjY0LS44OC0yLjU3LS44OGgtLjAzYy0uMjkgMC0uNTguMDMtLjg2LjExLS4yOC4wNi0uNTYuMTYtLjgyLjI4LS4yMS0uMTItLjQ1LS4xOC0uNy0uMThoLTEuNGMtLjgyIDAtMS40Ny42Ni0xLjQ3IDEuNDd2Ny41YzAgLjgyLjY2IDEuNDcgMS40NyAxLjQ3aDEuNGMuODIgMCAxLjQ4LS42NiAxLjQ4LTEuNDhWOS43OWMuMDMtLjM2LjIzLS41OS4zNi0uNTkuMTggMCAuMzguMTguMzguNDd2NC41N2MwIC44Mi42NiAxLjQ3IDEuNDcgMS40N2gxLjQxYy44MiAwIDEuNDctLjY2IDEuNDctMS40N2wtLjAxLTQuNTdjLjA2LS4zMi4yNS0uNDcuMzUtLjQ3LjE4IDAgLjM4LjE4LjM4LjQ3djQuNTdjMCAuODIuNjYgMS40NyAxLjQ3IDEuNDdoMS40MWMuODIgMCAxLjQ3LS42NiAxLjQ3LTEuNDd2LS4zOGE1LjA2OCA1LjA2OCAwIDAwNC4wNiAyLjA2Yy43NCAwIDEuNDYtLjE2IDIuMTItLjQ3LjI0LjE3LjU0LjI2Ljg0LjI2aDEuMzljLjMgMCAuNi0uMDkuODQtLjI2djIuMDFjMCAuODIuNjYgMS40NyAxLjQ3IDEuNDdoMS40Yy44MiAwIDEuNDctLjY2IDEuNDctMS40N3YtMS43N2MuNDguMTUuOTkuMjMgMS40OS4yMiAxLjcgMCAzLjIyLS44NyA0LjE3LTIuMnYuNTJjMCAuODIuNjYgMS40NyAxLjQ3IDEuNDdoMS40Yy4zIDAgLjYtLjA5Ljg0LS4yNi42Ni4zMSAxLjM5LjQ3IDIuMTIuNDcgMS45MiAwIDMuNi0xLjEgNC40OS0yLjczIDEuNTQgMi42NSA0Ljk1IDMuNTMgNy41OCAxLjk4LjE4LS4xMS4zNi0uMjIuNTMtLjM2LjIyLjU1Ljc2LjkxIDEuMzUuOUg3OGMuNTYgMCAxLjA4LS4yOSAxLjM3LS43OGwuMzctLjYxLjM3LjYxYy4yOS40OC44MS43OCAxLjM4Ljc4aDEuNmMuODEgMCAxLjQ2LS42NiAxLjQ1LTEuNDYtLjA1LS4yMi0uMS0uNDQtLjItLjY1em0tNDguNDguODhoLTEuNDFjLS4xMyAwLS4yMy0uMTEtLjIzLS4yM1Y5LjY4YzAtLjk4LS43NC0xLjcxLTEuNjItMS43MS0uOCAwLTEuNDYuNy0xLjU5IDEuNjJsLjAxIDQuNjZjMCAuMTMtLjEuMjMtLjIzLjIzaC0xLjQxYy0uMTMgMC0uMjMtLjExLS4yMy0uMjNWOS42OGMwLS45OC0uNzQtMS43MS0xLjYyLTEuNzEtLjg1IDAtMS41NC43OS0xLjYgMS44djQuNDhjMCAuMTMtLjEuMjMtLjIzLjIzaC0xLjRjLS4xMyAwLS4yMy0uMTEtLjIzLS4yM1Y2Ljc0YS4yMy4yMyAwIDAxLjIzLS4yMmgxLjRjLjEzIDAgLjIyLjExLjIzLjIydi42NmMuNS0uNjggMS4zLTEuMDkgMi4xNi0xLjFoLjAzYzEuMDkgMCAyLjA5LjYgMi42IDEuNTUuNDUtLjk1IDEuNC0xLjU1IDIuNDQtMS41NiAxLjYyIDAgMi45MyAxLjI1IDIuOSAyLjc4bC4wMSA1LjE2Yy4wMi4xMy0uMDkuMjMtLjIxLjI0em0xMC4xMS0uMjNjMCAuMTMtLjEuMjMtLjIzLjIzaC0xLjRjLS4xMyAwLS4yMy0uMTEtLjIzLS4yM3YtLjc0Yy0uNy43Ni0xLjY5IDEuMTgtMi43MiAxLjE4LTIuMTcgMC0zLjk0LTEuODctMy45NC00LjE5czEuNzctNC4xOSAzLjk0LTQuMTljMS4wMyAwIDIuMDIuNDMgMi43MyAxLjE4di0uNzRjMC0uMTMuMS0uMjMuMjMtLjIzaDEuNGMuMTItLjAxLjIyLjA4LjIzLjIxVjE0LjI1aC0uMDF2LS4wMXptNi40NC40M2MtMS4wMyAwLTIuMDItLjQzLTIuNzMtMS4xOHYzLjk3YzAgLjEzLS4xLjIzLS4yMy4yM2gtMS40Yy0uMTMgMC0uMjMtLjEtLjIzLS4yM1Y2Ljc1YzAtLjEzLjEtLjIyLjIzLS4yMmgxLjRjLjEzIDAgLjIzLjExLjIzLjIzdi43M2EzLjczIDMuNzMgMCAwMTIuNzMtMS4xOGMyLjE3IDAgMy45NCAxLjg2IDMuOTQgNC4xOHMtMS43NyA0LjE4LTMuOTQgNC4xOHptMTMuODMtMy4yOGMtLjM5IDEuODctMS45NiAzLjI5LTMuODQgMy4yOS0xLjAzIDAtMi4wMi0uNDMtMi43My0xLjE4di43M2MwIC4xMy0uMS4yMy0uMjMuMjNoLTEuNGMtLjEzIDAtLjIzLS4xMS0uMjMtLjIzVjMuNTFjMC0uMTMuMS0uMjMuMjMtLjIzaDEuNGMuMTMgMCAuMjMuMTEuMjMuMjN2My45N2EzLjcyIDMuNzIgMCAwMTIuNzMtMS4xN2MxLjg4IDAgMy40NSAxLjQgMy44NCAzLjI4LjEzLjYuMTMgMS4yMSAwIDEuOHptNS40MyAzLjI5Yy0yIC4wMS0zLjczLTEuMzUtNC4xNy0zLjMtLjEzLS41OS0uMTMtMS4xOSAwLTEuNzdhNC4yNDMgNC4yNDMgMCAwMTQuMTctMy4zYzIuMzYgMCA0LjI2IDEuODcgNC4yNiA0LjE5cy0xLjkgNC4xOC00LjI2IDQuMTh6bTExLjM3LS4yMWgtMS42MWMtLjEzIDAtLjI0LS4wNi0uMy0uMTdsLTEuNDQtMi4zOS0xLjQ0IDIuMzlhLjM0LjM0IDAgMDEtLjMuMTdoLTEuNjFjLS4wNCAwLS4wOC0uMDEtLjEyLS4wMy0uMDktLjA2LS4xMy0uMTktLjA2LS4yOGwyLjQzLTMuNjgtMi4zOS0zLjY0YS4yMTMuMjEzIDAgMDEtLjAzLS4xMmMwLS4xMi4wOS0uMjEuMjEtLjIxaDEuNjFjLjEzIDAgLjI0LjA2LjMuMTdsMS40MSAyLjM2IDEuNDEtMi4zNmEuMzQuMzQgMCAwMS4zLS4xN2gxLjYxYy4wNCAwIC4wOC4wMS4xMi4wMy4wOS4wNi4xMy4xOS4wNi4yOGwtMi4zOCAzLjY0IDIuNDMgMy42N2MuMDIuMDMuMDMuMDcuMDMuMTItLjAzLjEzLS4xMi4yMi0uMjQuMjJ6IiBvcGFjaXR5PSIuMzUiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTAuNSAxLjI0Yy01LjExIDAtOS4yNSA0LjE1LTkuMjUgOS4yNXM0LjE1IDkuMjUgOS4yNSA5LjI1IDkuMjUtNC4xNSA5LjI1LTkuMjVjMC01LjExLTQuMTQtOS4yNS05LjI1LTkuMjV6bTQuMzkgMTEuNTNjLTEuOTMgMS45My00Ljc4IDIuMzEtNi43IDIuMzEtLjcgMC0xLjQxLS4wNS0yLjEtLjE2IDAgMC0xLjAyLTUuNjQgMi4xNC04LjgxYTQuNCA0LjQgMCAwMTMuMTMtMS4yOGMxLjI3IDAgMi40OS41MSAzLjM5IDEuNDIgMS44NCAxLjg0IDEuODkgNC43NS4xNCA2LjUyeiIgb3BhY2l0eT0iLjkiIGZpbGw9IiNmZmYiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTAuNS0uMDFDNC43LS4wMSAwIDQuNyAwIDEwLjQ5czQuNyAxMC41IDEwLjUgMTAuNVMyMSAxNi4yOSAyMSAxMC40OUMyMC45OSA0LjcgMTYuMy0uMDEgMTAuNS0uMDF6bTAgMTkuNzVjLTUuMTEgMC05LjI1LTQuMTUtOS4yNS05LjI1czQuMTQtOS4yNiA5LjI1LTkuMjYgOS4yNSA0LjE1IDkuMjUgOS4yNWMwIDUuMTMtNC4xNCA5LjI2LTkuMjUgOS4yNnoiIG9wYWNpdHk9Ii4zNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNC43NCA2LjI1Yy0xLjg0LTEuODQtNC43Ni0xLjktNi41MS0uMTUtMy4xNiAzLjE3LTIuMTQgOC44MS0yLjE0IDguODFzNS42NCAxLjAyIDguODEtMi4xNGMxLjc0LTEuNzcgMS42OS00LjY4LS4xNi02LjUyem0tMi4yNyA0LjA5bC0uOTEgMS44Ny0uOS0xLjg3LTEuODYtLjkxIDEuODYtLjkuOS0xLjg3LjkxIDEuODcgMS44Ni45LTEuODYuOTF6IiBvcGFjaXR5PSIuMzUiLz48cGF0aCBjbGFzcz0ic3QwIiBvcGFjaXR5PSIuOSIgZmlsbD0iI2ZmZiIgZD0iTTE0LjMzIDkuNDNsLTEuODYuOTEtLjkxIDEuODctLjktMS44Ny0xLjg2LS45MSAxLjg2LS45LjktMS44Ny45MSAxLjg3eiIvPjwvc3ZnPg==)}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}.mapboxgl-ctrl-attrib.mapboxgl-compact{padding-top:2px;padding-bottom:2px;margin:0 10px 10px;position:relative;padding-right:24px;background-color:#fff;border-radius:3px 12px 12px 3px;visibility:hidden}.mapboxgl-ctrl-attrib.mapboxgl-compact:hover{visibility:visible}.mapboxgl-ctrl-attrib.mapboxgl-compact:after{content:\"\";cursor:pointer;position:absolute;bottom:0;right:0;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23333' fill-rule='evenodd' d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E\");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:visible;border-radius:12px}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border-width:medium 2px 2px;border-style:none solid solid;border-color:#333;padding:0 5px;color:#333}.mapboxgl-popup{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mapboxgl-popup-anchor-left{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mapboxgl-popup-anchor-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.mapboxgl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;border:none;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{position:relative;background:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-marker{position:absolute}.mapboxgl-user-location-dot{background-color:#1da1f2;width:16px;height:16px;border-radius:50%;-webkit-box-shadow:0 0 2px rgba(0,0,0,.25);box-shadow:0 0 2px rgba(0,0,0,.25);border:2px solid #fff}.mapboxgl-user-location-dot:after{content:\"\";display:block;-webkit-box-shadow:#1da1f2 0 0 0 2px;box-shadow:0 0 0 2px #1da1f2;width:16px;height:16px;border-radius:50%;position:relative;z-index:-1;-webkit-animation:mapboxgl-user-location-dot-pulse 2s;animation:mapboxgl-user-location-dot-pulse 2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes mapboxgl-user-location-dot-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(29,161,242,.8)}70%{-webkit-box-shadow:0 0 0 15px rgba(29,161,242,0)}242%{-webkit-box-shadow:0 0 0 0 rgba(29,161,242,0)}}@keyframes mapboxgl-user-location-dot-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(29,161,242,.4);box-shadow:0 0 0 0 rgba(29,161,242,.4)}70%{-webkit-box-shadow:0 0 0 15px rgba(29,161,242,0);box-shadow:0 0 0 15px rgba(29,161,242,0)}to{-webkit-box-shadow:0 0 0 0 rgba(29,161,242,0);box-shadow:0 0 0 0 rgba(29,161,242,0)}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}.azure-maps-control-container>.style-options.icons .azure-maps-control-button:active img,.azure-maps-control-container>.style-options.list button:active img{opacity:.6}@media print{.mapbox-improve-map{display:none}}@media (inverted-colors:inverted){.atlas-map-canvas,.azure-map-logo{-webkit-filter:invert();filter:invert()}}.atlas-map{overflow:unset}.atlas-map-canvas-container{position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none;-ms-user-select:none}.atlas-map-canvas,.map-copyright>a{pointer-events:auto}.azure-map-logo{background-repeat:no-repeat;background-position:50%;backg